Hallo...
Ich würde vor start: noch den Punkt wegnehmen, das ist ein Label und keine Direktive! ;o)
Sry. War nur n Tippfehler
Ich werds jetzt mal auf nem Controller testen... Danke
Edit:
Hmm... Also irgendwie klappt das nicht:
Code:
.include "2313def.inc"
.def temp=r16
.def int_per_sec=r17
.def _led=r18
.org 0x000
rjmp start ; Initialisierung / RESET
reti ; IRQ0
reti ; IRQ1
reti ; Timer1 Capture
reti ; Timer1 Compare
reti ; Timer1 Overflow
rjmp Time ; Timer0 Overflow
reti ; SPI Complete
reti ; UART Rx
reti ; UART Data empty
reti ; UART Tx
reti ; ADC Conversion Complete
reti ; EEPROM ready
reti ; Analog Comparator
start:
ldi temp,low(ramend)
out spl,temp
ldi temp,0b11111111
out DDRD,temp
ldi _led,1
rjmp initTimer
initTimer:
ldi temp,5 ;CPU-Takt/1024
out TCCR0,temp
ldi temp,2 ;aktivieren des Interrups bei einem
out TIMSK,temp ;Überlauf
ldi int_per_sec,46 ;Anzahl der Interrupts pro Sekunde
;12MHz: 12.000.000/1024=11718,75 --> Bei jedem 11718,75ten Takt
;wird ein Interrupt eingeworfen
;=>11718,75/256(wegen 8Bit TCNT)=45,78 (ca. 46 Interrupts pro Sek.)
sei ;Interrupts global erlauben
endlos:
ldi temp,0b0001000
out portd,temp ;Endlosschleife
rjmp endlos
led_an:
ldi temp,0b00100011
out PORTD,temp
ldi _led,0
rjmp zurueck
led_aus:
ldi temp,0b00000000
out PORTD,temp
ldi _led,1
rjmp zurueck
time: ;Aufruf bei jedem Interrupt
dec int_per_sec
brne zurueck ;nach 46 Interrupts (int_per_sec=0) wird
;nicht nach "zurueck" gesprungen
;irgendwas zur vollen sekunde
sbrs _led,1
rjmp led_aus
rjmp led_an
zurueck:
reti ;rücksprung in die Endlosschleife
Nunja die LED in der Endlosschleife Leuchtet, aber von Timer her kommt nix....
Lesezeichen