Gast
#75121
Hallo Zusammen,
mein mega8 läuft mit einem 4MHz Quarz. Nach einigen Vorüberlegungen
müsste folgender Code ein Delay von 15ms erzeugen
for(i=0; i<=12000; i++) {};
genaugenommen sind es 15000,5 us
Mein Compiler generiert mir nun jedoch folgenden ASM Code
74: 8f ed ldi r24, 0xDF ; 223
76: 9e e2 ldi r25, 0x2E ; 46
78: 04 97 sbiw r24, 0x04 ; 4
^-- WARUM ?
7a: 97 ff sbrs r25, 7
7c: fd cf rjmp .-6 ; 0x78
7e: 08 95 ret
Was ich nun nicht verstehe ist warum an der markierten Stelle eine 4
und keine 1 steht. (BTW. füge ich noch ein NOP im C-Code ein wird der
Wert mit 1 richtig generiert)
Was mache ich bzw. der compiler hier falsch?
Danke schon mal, der Jochen