Hallo
Ich vermute, du verwendest die orginale CD-Library mit dem 72kHz-Timer für Sleep(). Dann sind sleep(72) genau 1 ms und die Rechnung sieht so aus:
21(j)*40(k)*255(sleep)/72(ms)=2975ms
Also passen die 3 Sekunden genau. Dein Rechenfehler: 255/72=3541us oder 3,54ms. Außerdem wird j 21x ausgeführt wegen <=
Gruß
mic
Soweit ich das überblicke werden die beiden k-Schleifen sogar 22x ausgeführt, denn erst wenn j=21 ist wird die do-while-Schleife verlassen.Code:#include "asuro.h" uint8_t i, j, k; int main(void){ i=0; do{ j=i++; BackLED(ON,OFF); for(k=0;k<20;k++) Sleep(255); BackLED(OFF,ON); for(k=0;k<20;k++) Sleep(255); }while(j<=20); while(1); return 0; }





Zitieren

Lesezeichen