Lauflicht

Gast #106238
Lesenswert?

Hallo

Ich bin neuling und versuche ein einfaches lauflicht zu Programieren.
Ich weiß aber nicht wie ich das Programm schreiben soll. Das Lauflicht
soll immer nur in eine Richtung Laufen. Die LED´s sind mit dem PORTB
verbunden! Nur habe ich keine Ahnung wie meinem AT90S2313 sagen kann
das er einen Pin weiter springen soll!
Danke schon mal
Gast #106240
Lesenswert?

Da ich nicht weiss in welches Programmiersprache Du programmierst erklär
ich es mal so:

$01 in eine Variable speichern
Variable an PortB ausgeben
Warten
Variable linksschieben (oder rechts ...)
Variable an PortB ausgeben
Warten
Variable linksschieben (oder rechts ...)
Variable an PortB ausgeben
Warten
usw.

Alles klar ? ;)

MfG
formtapez
Gast #106241
Lesenswert?

@Jörg Wunsch
Sorry ich arbeite mit dem AVR Studio!
Ich gleub dien Programm ist in C oder? Ich werde aber erstmal weiter
mit AVR Arbeiten weil ich nur ungern jetzt wo ich es einigermaßen
verstanden habe mit C anfangen möchte! Trotzdem Danke für die Antwort!
@formtapez
Das mit der Variable habe i´ch verstanden aber wie veschiebe ich sie
nach Links oder rechts! Und wie bringe ich meinem Atmel bei zu warten?
Gast #106242
Lesenswert?

Hallo,

bits schieben in Registern kannst Du mit den Befehlen
lsl (=Logical shift left)
lsr (=Logical shift right)
rol (=links rollen, der nimmt das Carry Flag mit)
ror (=rechts rollen, der nimmt das Carry Flag mit)
Genaueres steht im Instruction Set Summary von Atmel.

Verzögerungsschleifen können so aussehen:
(wartet etwa 0,5 s bei 4 MHZ)
;*************************************************
;*** Delay: 2000000 Cycles
;*************************************************
;*** inner loop: 196
;*** middle loop: 188
;*** outer loop: 18
;*** difference: 2
;*************************************************
           ldi R16, 18
DelayLoop0:
           ldi R17, 18
DelayLoop1:
           ldi R18, 19
DelayLoop2:
           dec R18
           brne DelayLoop2
           dec R16
           brne DelayLoop1
           dec
           brne DelayLoop0

Kann man aber auch mit Timern machen

Gruss
Andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren