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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.