Warum geht das Programm nicht? ...
Hallo Leute,
folgendes Programm macht mir Probleme.
Ich habe gerade mit den Interrupts angefangen.
Hier das Programm:
Code:
.include "m8def.inc"
.def temp = r16
.def temp2 = r17
.org 0x000
rjmp main ; Reset Handler
.org INT0addr
rjmp int0_handler ; IRQ0 Handler
.org INT1addr
rjmp int1_handler ; IRQ1 Handler
main: ; hier beginnt das Hauptprogramm
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPH, temp
ldi temp2, 0x00
ldi temp, 0x00
out DDRD, temp
ldi temp, 0xFF
out DDRB, temp
ldi temp, 0b00001010 ; INT0 und INT1 konfigurieren
out MCUCR, temp
ldi temp, 0b11000000 ; INT0 und INT1 aktivieren
out GICR, temp
sei ; Interrupts allgemein aktivieren
loop: rjmp loop ; eine leere Endlosschleife
int0_handler:
sbi PORTB, 0
reti
int1_handler:
sbrs temp2, 0
rcall f_led_on
sbrc temp2, 0
rcall f_led_off
reti
f_led_on:
sbi PORTB, 0
ldi temp2, 0xFF
ret
f_led_off:
cbi PORTB, 0
ldi temp2, 0x00
ret
Ich habe vor die Status-LED mit den Interrupts zu togglen.
Was habe ich falsch gemacht?