Hier ist der Code:
Du meinst ich muss am Ende auch noch ldi temp,HIGH(TIME2) einfügen?Code:.include "m8def.inc" ;31248 1 Sek .EQU TIME05 = 65536 - 15624 ; 0,5 Sekunden .EQU TIME2 = 65536 - 62496 ; zwei Sekunde .EQU TIME1 = 65536 - 31248 ; eine Sekunde .def temp = r16 .org 0x0000 rjmp start .org OVF0addr ;Interrupt-handler für 8 Bit Timer0 rjmp interrupt start: ldi r20,HIGH(TIME2) ;Trick, um Timer0 auf 16 Bit zu erweitern ldi temp,LOW(TIME2) ;Starwert Timer out TCNT0,temp ldi temp,(1<<CS02|1<<CS00) ;Prescaler Systemtakt/1024 out TCCR0,temp ldi temp,(1<<TOIE0) ;Timer Interrupt über TOV0 erlauben out TIMSK,temp ; " ;Hauptprogramm: loop: ;leere Schleife rjmp loop ;Interrupt Handler interrupt: ;LEDs toggeln inc r20 ;Timererweiterung inkrementieren brne interrupt2 ;wenn r20=0, zu interrupt2 springen ldi r20,HIGH(TIME2) ;sonst Starwert Timer neu setzen [...] interrupt2: ldi temp,LOW(TIME2) ;Startwert Timer neu out TCNT0,temp reti







Zitieren

Lesezeichen