ttiny
22.06.2006, 19:06
Hallo
Ich habe ein Testprogramm geschrieben für einen Attiny2313.Leider bekomme ich im Simulator vom AVR Studio nicht hin das ein Interrupt im Label Timer ausgelöst wird um dann nach Licht_80s zu springen.
Kann mir jemanden sagen was ich falsch gemacht habe.Danke
ttiny
PS: kann man eigentlich Anhänge irgenwie hier einstellen,bin neu hier
machs erst mal so
.nolist
.include <tn2313def.inc>
.list
.cseg
.def zahl=r18
.def temp=r16
.def sregsave=r19
.def tmp=r21
.org 0x000
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp Licht_80s
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
reset:
ldi zahl,1 ;legt die anzahl der umläufe fest
ldi temp,128 ;gibt die interrupts frei
out SREG,temp
ldi temp, low(ramend) ;stackpointer initialisiert
out spl, temp
ldi temp,0b11111111 ; portb ist ausgang
out ddrb,temp
ldi temp,0b00000000
out ddrd,temp ;portd ist eingang
ldi Temp, 2 ;hier wird der timer interupt freigegeben
out TIMSK, Temp
sei
ldi temp,5
out TCCR0,temp ; mit 1024 geteilte frequenz
timer: ldi tmp , 255
out TCNT0, tmp ;timer zählt bis 255
ldi temp,0
cp zahl,temp
breq licht_aus
rjmp timer
licht_aus:
ldi temp,0b11111111
out portb,temp
rjmp ende
Licht_80s:
in sregsave ,SREG
push sregsave
dec zahl
pop sregsave
out SREG,sregsave
reti
ende:
rjmp ende
Ich habe ein Testprogramm geschrieben für einen Attiny2313.Leider bekomme ich im Simulator vom AVR Studio nicht hin das ein Interrupt im Label Timer ausgelöst wird um dann nach Licht_80s zu springen.
Kann mir jemanden sagen was ich falsch gemacht habe.Danke
ttiny
PS: kann man eigentlich Anhänge irgenwie hier einstellen,bin neu hier
machs erst mal so
.nolist
.include <tn2313def.inc>
.list
.cseg
.def zahl=r18
.def temp=r16
.def sregsave=r19
.def tmp=r21
.org 0x000
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp Licht_80s
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
reset:
ldi zahl,1 ;legt die anzahl der umläufe fest
ldi temp,128 ;gibt die interrupts frei
out SREG,temp
ldi temp, low(ramend) ;stackpointer initialisiert
out spl, temp
ldi temp,0b11111111 ; portb ist ausgang
out ddrb,temp
ldi temp,0b00000000
out ddrd,temp ;portd ist eingang
ldi Temp, 2 ;hier wird der timer interupt freigegeben
out TIMSK, Temp
sei
ldi temp,5
out TCCR0,temp ; mit 1024 geteilte frequenz
timer: ldi tmp , 255
out TCNT0, tmp ;timer zählt bis 255
ldi temp,0
cp zahl,temp
breq licht_aus
rjmp timer
licht_aus:
ldi temp,0b11111111
out portb,temp
rjmp ende
Licht_80s:
in sregsave ,SREG
push sregsave
dec zahl
pop sregsave
out SREG,sregsave
reti
ende:
rjmp ende