Das Prinzip ist recht einfach.
Als erstes definiert man die Sprungadressen für die Interupts am Anfang des Programms.
Code:
rjmp reset ; Reset Handler
rjmp irq0 ; IRQ0 Handler <- definierte Sprungadresse
reti ; IRQ1 Handler
reti ; Timer1 Capture Handler
reti ; Timer1 Compare A Handler
reti ; Timer1 Compare B Handler
reti ; Timer1 Overflow Handler
reti ; Timer0 Overflow Handler
reti ; SPI Transfer Complete Handler
reti ; USART RX Complete Handler
reti ; UDR0 Empty Handler
reti ; USART TX Complete Handler
reti ; Analog Comparator Handler
reti ; IRQ2 Handler
reti ; Timer0 Compare Handler
reti ; EEPROM Ready Handler
reti ; Store Program memory Ready
Als nächstes an der Adresse des Reset Handlers zunächst einmal der Stack initialisiert.
Code:
reset:
ldi ZH, high(RAMEND)
ldi ZL low(RAMEND)
out SPH, ZH
out SPL, ZL
Anschließend initialisiert man die Peripherie und aktiviert glabal die Interupts.
Zum Schluss kommt dann noch das eigentliche Programm sowie die einzelnen Interupt Routinen.
Aber mehr dazu findest du hier im Wiki, auf www.mikrocontroller.net und auch im Datenblatt (das gibts auf www.atmel.com)
Ich hoffe dir trotzdem soweit geholfen zu haben.
Grüße,
Hanni
Lesezeichen