AVR-Code

.include "m8def.inc"

ldi r16, 0xff
out DDRB, r16

ldi r16, 0b01010101
out PORTB, r16

end: rjmp end
Zweites Programm
.include "m8def.inc"

ldi r16, HIGH (RAMEND)
out SPH, r16
ldi r16, LOW (RAMEND)
out SPL, r16

ldi r16, 0xff
out DDRB, r16


ldi r16, 0x00
loop1:
com r16
out PORTB, r16
com r16
rcall sleep
inc r16
rjmp loop1

end: rjmp end

sleep:
push r16
push r17
ldi r16, 0xff
sleep_loop1:
ldi r17, 0xff
sleep_loop2:
dec r17
brne sleep_loop2
dec r16
brne sleep_loop1
pop r17
pop r16
ret
Drittes Programm:
.include "m8def.inc"

.org 0x000
rjmp RESTART
;; addresse der externen Interrupts
.org INT0addr
rjmp ExtInt01
.org INT1addr
rjmp ExtInt02

RESTART:
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

;; bits setzen - interrupts - fuer extern ein, Flanke, ...

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

sei

end: rjmp end

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

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

\includegraphics[width=\textwidth]{.././20241101b/IMG_4343.HEIC}