Tripplepost....
Hallo Leute,
mir ist nicht ganz klar ob es angebracht ist hier weiter zu schreiben
aber vor kurzen habe ich wieder Zeit um mich mit µC zu beschäftigen und
ich habe mein Lauflicht inzwischen so verkleinert das ich nun
einen 16Bit Timer benutze und ich bei jeden Überlauf einen
Interrupt auslöse indem ich dann an den Port das Bit einfach schiebe.
Meine Frage ist nun:
Wie könnte man das ganze nun erweitern damit es bei Tasterdruck 1 ( Beispiel) schneller wird und bei einen anderen Tasterdruck wieder
Langsamer wird?
Jetzt habe ich den Timer so gewählt das er etwa alle 2 Sekunden
auslöst.
Um das oben genannte zu realiesieren könnte müsste man
den Timer verkleinern oder bei Tastendruck gewisse
Startwerte vorladen.
So das es bei einen 16 Bit Timer nicht 65536 Takte dauert bist
dieser überläuft sondern nur zum Beispiel die hälfte dieser Takte.
Und wie verknüfpt man dies noch mit Tastern damit
diese Aktion bis zum nächsten Tastendruck erhalten bleibt?
Könnte mir da jemand auf die Sprünge helfen bzw. diverse
Gedankenstupser geben? = )
Liebe Grüße
Namenlos
Der jetzige Code
.include "m8def.inc"
Code:
.def Arbeit = r16
.def Licht = r17
.org 0x0000 ; Hauptprogramm
rjmp Hauptprogramm
.org OVF1addr ;Timer 1 Interrupt Vector Addresse
rjmp Timer1
Hauptprogramm:
ldi Arbeit, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse
out SPL, Arbeit
ldi Arbeit, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse
out SPH, Arbeit
ldi Arbeit,0b11111111
out DDRC, Arbeit ;Alle Pins am Port C durch Ausgabe 0b11111111 ins
;Richtungsregister DDRC als Ausgang konfigurieren
ldi r16,0b000000100 ;Vorteiler 256 an Timer 1
out TCCR1B,r16 ;Setze Bit
ldi r16, 0b00000100 ;Interrupt Overflow aktivieren
out TIMSK, r16 ;Setze Bit
sei ;Interrupt Aktivieren
ldi Licht,0b00000001 ; =1
out PortC, Licht ;Erste LED an PortC an
Schleife:
rjmp Schleife
Timer1:
rol Licht ;Bits 'schieben'
out PortC, Licht ;Gebe 'Licht' an PortC aus
reti ;Springe zurück
Lesezeichen