Firebird schrieb:
> Timer1 zählt aufwärts wärend tdelay reduziert wird wenn die Bedingung
> timer1==0 erfüllt ist.
Ja.
Aber der springende Punkt ist, dass timer1 eine uint8_t Variable ist.
D.h. wenn die hochgezählt wird, dann zählt sie:
0, 1, 2, 3, 4, ... 127, 128, 129, .... 253, 254, 255, 0, 1, 2, 3
mit anderen Worten. Das ist ein zusätzlicher Softwareteiler, der den
Code in seinem abhängigen if-Block
if( ++timer1 == 0 )
{
diesen Block
}
nur bei jedem 256ten ISR Aufruf ausführt.
> Wie ist void delay() zu verstehen
eine Verzögerung.
die Variable tdelay wird auf einen Wert gesetzt und dann nach und nach
von den ISR Aufrufen wieder auf 0 heruntergezählt. Ist die Variable
wieder 0 geworden, so wird die while Schleife verlassen.
Also eine Stoppuhr, die einfach nur rückwärts gezählt wird, so wie die
Uhren die die Friseusen beim Haarefärben benutzen.