So mal ein AUSZUG aus der INC des TINY13A
Code:
; ***** INTERRUPT VECTORS ************************************************
.equ    INT0addr    = 0x0001    ; External Interrupt 0
.equ    PCI0addr    = 0x0002    ; External Interrupt Request 0
.equ    OVF0addr    = 0x0003    ; Timer/Counter0 Overflow
.equ    ERDYaddr    = 0x0004    ; EEPROM Ready
.equ    ACIaddr    = 0x0005    ; Analog Comparator
.equ    OC0Aaddr    = 0x0006    ; Timer/Counter Compare Match A
.equ    OC0Baddr    = 0x0007    ; Timer/Counter Compare Match B
.equ    WDTaddr    = 0x0008    ; Watchdog Time-out
.equ    ADCCaddr    = 0x0009    ; ADC Conversion Complete

.equ    INT_VECTORS_SIZE    = 10    ; size in words

#endif  /* _TN13ADEF_INC_ */

; ***** END OF FILE ******************************************************
Also nochmal meinen ersten POST LESEN UND VERSTEHEN was die INT_VECTORS_SIZE aussagt nur das es 10 Vectoren gibt nicht mehr und nicht weniger.

Simuliert im AS 4.19 und was passiert er fängt das Programm direkt von vorn an abzuarbeiten wenn man auf PB0 den INT0 auslöst, weil der Sprungverweis per RJMP zur ISR fehlt, weil du meinst
so ein BOCKMIST zu machen
Code:
.CSEG                       ;Was ab hier folgt kommt in den FLASH-Speicher
.ORG $0000                  ;Programm beginnt an der FLASH-Adresse 0x0000..
 rjmp  reset               ;..mit der RESET-Vectortabelle

.ORG INT_VECTORS_SIZE       ;Programmadresse nach den ganzen IRQ-Vektoren
Hausaufgabe 1
Setze die Sprungmarken für die ISR richtig das die ISR's auch angesprungen werden können!

Hausaufgabe 2
Lerne den Unterschied zwischen Spaghetticode und das arbeiten mit Unterprogrammen(UP) kennen und nutze den Vorteil von UP's die mit dem StackPointer arbeiten.

Hausaufgabe 3
Wenn du UP's verstanden hast, fange an dein Gesamtprogramm strukturiert mit UP's aufzubauen. Es gibt Pogrammteile die du immer wiederbrauchst und nur 1 mal schreiben musst z.B. die SleepRoutine.