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
uint8_t c = 1; DDRB = 0xff; for (;;) { PORTB = c; if (c == 0x80) c = 1; else c <<= 1; }
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
@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?
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.