Das muss ich mal probieren, aber zuerst versuche ich noch genau zu verstehen, wie die Codes arbeiten....Das liegt wahrscheinlich daran, dass dein Programm die Frequenz, mit der der µC läuft nicht kennt, binde mal util\delay.h ein (#include <util\delay.h> in die erste Zeile schreiben). In der nächsten Zeile definierst du dann F_CPU mit dem Takt deines µCs (bei 4MHz schreibst du z.B. #define F_CPU 4000000UL).
Jetzt kannst du statt WaitMs() die Funktion _delay_ms(x) benutzen (x steht für dei Anzahl ms, die gewartet werden soll). Das müsste eigentlich funktionieren.
Z.B. if(!(PINB&(1<<PB3)))
Also hier liest er PB aus. Dann hat er 00000000. Dann rechnet er mit &, das sollte 00001000 ergeben. ! hieße dann, 11110111 ????
Lesezeichen