1) Du darfst nur dann das TastenBit auswerten, wenn es sich geändert hat (sonst shiftest du ja bei jeder schleife).
dazu brauchst du (z.B) eine Variable
read_A0_old
2) der anfangswert beim shiften muss "counter=1" sein (nuller shiften ist sinnlos) und abfragen musst du auf "8"
und dann der relevante Code-Teil:
Code:counter = 1; while (1) { read_A0 =GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0); if(read_A0 != readA0_old) { if(read_A0 == 0x01) { counter <<= 1; // einmal nach links } read_A0_old = read_A0; // merken (so oder so) if (counter== 0x8) { //........lichtspiele........... counter = 1; // ! anfangswert } } }
Lesezeichen