2024-10-30

.include "m8def.inc"

.org 0x000
    rjmp RESET
.org                    ;; hier ist die Addresse von dem Externen Interrupt 0, im Interrupt-Vektor
    rjmp ExternInt0
.org                    ;; hier ist die Addresse von dem Externen Interrupt 1, im Interrupt-Vektor
    rjmp ExternInt1
RESET:
    ldi r16, HIGH (RAMEND)
    out SPH, r16
    ldi r16, LOW (RAMEND)
    out SPL, r16

    ldi r16, 0xff
    out DDRB, r16
    ldi r16, 0x00
    out DDRD, r16

                        ;; Hier wird das Bit für Externes Interrupt 0 und 1 gesetzt
                        ;; Hier werden die interrupts global aktiviert

end: rjmp end

ExternInt0:
    ldi r16, 0xff
    out PORTB, r16
    reti

ExternInt1:
    ldi r16, 0x00
    out PORTB, r16
    reti

so ist richtig

.include "m8def.inc"

.org 0x000
    rjmp RESET
.org INT0addr                  ;; hier ist die Addresse von dem Externen Interrupt 0, im Interrupt-Vektor
    rjmp ExternInt0
.org INT1addr                   ;; hier ist die Addresse von dem Externen Interrupt 1, im Interrupt-Vektor
    rjmp ExternInt1
RESET:
    ldi r16, HIGH (RAMEND)
    out SPH, r16
    ldi r16, LOW (RAMEND)
    out SPL, r16

    ldi r16, 0xff
    out DDRB, r16
    ldi r16, 0x00
    out DDRD, r16

    ldi r16, (1 << ISC01) | (1 << ISC11)
    out MCUCR, r16
    ldi r16, (1 << INT0) | (1 << INT1)
    out GICR, r16

                        ;; Hier wird das Bit für Externes Interrupt 0 und 1 gesetzt
                        ;; Hier werden die interrupts global aktiviert
    sei
end: rjmp end

ExternInt0:
    ldi r16, 0xff
    out PORTB, r16
    reti

ExternInt1:
    ldi r16, 0x00
    out PORTB, r16
    reti

https://www.ituenix.de/html/vid/IMG_4307.mov