;========================== ; Author: Marcel Schirmer ; Date: 31.05.2025 ;========================== .nolist .include "./m328Pdef.inc" .list .def setter = R16 .def overflows = R17 .def active_led = R18 .org 0x0000 rjmp init .org 0x0020 rjmp overflow_handler .include "./macros.inc" init: ;-- ; Output Ports definieren ;---- ser setter out DDRD, setter ; Alle LEDs standardmäßig aus ;-- ; Timer/Counter konfigurieren ;---- ldi setter, 0b00000011 out TCCR0B, setter ; CLK/1024 ergibt 250.000 Timer-Ticks/Sekunde ldi setter, 0b00000001 sts TIMSK0, setter ; Timer-Interupt aktivieren sei ; globale Interrups aktivieren ;-- ; Definiere Startzustand ;---- ldi setter, 0 out TCNT0, setter ; Timer/Counter explizit mit 0 initialisieren ldi setter, 0b00000001 out PORTD, setter main: ;-- ; Dreh Dräumchen und lass den Timer-Interrupt die Show leiten ;---- rjmp main overflow_handler: inc overflows cpi overflows, 246 ; bei ~980 Überläufe/Sekunde entsprechen 245 Überläufe ca. 250ms brne overflow_handler_exit ; early Return wenn Schwellenwert noch nicht erreicht clr overflows ; Überlaufzähler kontrolliert zurücksetzen left_to_right active_led overflow_handler_exit: reti