Gast
#89296
Tach, anbei ist ein kleines asm-Programm durch den ein AT90S2313 via Interrupts (EXT_INT0 u. EXT_INT1) einen Zähler realisieren soll. Das Programm soll lediglich das Register r16 hoch- und runterzählen wenn die entsprechenden externen Interrupts ausgelöst werden. Dafür habe ich mir eine kleine Testplatine zusammengelötet. Die Taster funktionieren mit einem sinngleichen C-Programm simuliert und auf den uC geflasht einwandfrei, der asm-Code gibt bei der Simulation korrekte Ergebnisse, produziert aber geflasht nur seltsames Geflacker an den LEDs die ich zur Ausgabe an PB gelötet habe. Kann mir jemand sagen was nicht stimmt ? .include "2313def.inc" .org 0x000 rjmp MAIN ;Reset Handler .org 0x001 rjmp EXT_INT0 ;IRQ0 Handler .org 0x002 rjmp EXT_INT1 ;IRQ1 Handler MAIN: ldi r16, RAMEND ;Stackpointer initialisieren out SPL, r16 ldi r16, 0b11111111 out DDRB, r16 ;PORTB ist output ldi r16, 0b00001010 ;INT0 und INT1 konfigurieren out MCUCR, r16 ldi r16, 0b11000000 out GIMSK, r16 ;INT0 und INT1 aktivieren out GIFR, r16 ;InterruptFlags zurücksetzen clr r16 ;r16 zurücksetzen out PORTB, r16 ;und ausgeben sei ;ab JETZT Interrupts erlauben LOOP: rjmp LOOP ;Endlosschleife EXT_INT0:dec r16 out PORTB, r16 reti EXT_INT1:inc r16 out PORTB, r16 reti