-         

Ergebnis 1 bis 9 von 9

Thema: LED-Rotieren

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153

    LED-Rotieren

    Anzeige

    Hallo,

    Hab eine frage zu meinem Code!
    1.) Kann ich da noch was verkürzen oder passt es eh so wie ich ihn geschrieben habe?

    2.) Wenn code passt, dann wie kann ich die LED weiterlaufen lassen am PB0-PB2!

    .include <m8535def.inc>

    .org 0x0000
    rjmp Reset

    .org OC0addr
    rjmp Compare

    Reset:
    ;---------------REIFEN-------------------
    ;In Register laden
    ldi R17, 0x01
    ldi R18, 0x00

    ;Stackpointer
    ldi R16, HIGH(RAMEND)
    out SPH, R16
    ldi R16, LOW(RAMEND)
    out SPL, R16

    ;Timer
    ldi R16, (1<<CS00) | (1<<CS02)
    out TCCR0, R16

    ;Compare-output
    ldi R16, 60
    out OCR0, R16

    ;Flags setzen
    ldi R16, (1<<OCIE0)
    out TIMSK, R16

    ;Flags aktivieren
    sei

    ;Hauptprogramm
    Reifen:
    rjmp Reifen

    Compare:
    sei
    out TCNT0, R18
    rol R17
    out DDRA, R17
    rcall Reifen

    MFG
    Michael

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624
    Hallo Michael!
    Ich nehme mal an Du meinst mit LED-Rotieren bzw. Reifen ein LED-Lauflicht!?
    1.) Kann ich da noch was verkürzen oder passt es eh so wie ich ihn geschrieben habe?
    Bei "Compare" musst Du statt "rcall Reifen" einfach nur "reti" hinschreiben, dann kannst Du nämlich auch das sei rauslassen.
    "rcall" geht da garnicht, zumindest nicht in dem Zusammenhang, aber "reti" ist quasi "ret" und "sei" in einem.
    2.) Wenn code passt, dann wie kann ich die LED weiterlaufen lassen am PB0-PB2!
    Du schnappst Dir ein Register, dass Du hochzählen lässt und bei >>Register = Maximum<< fängst Du von vorne an.
    Die Werte gibst Du einfach am Port aus.

    Viele Grüße
    Florian

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    Ja schon aber wie verknüpfe ich dass am besten, dass er am PORTB weiterscheibt von PB0-PB1!

    Und wie ist der Code so für dich? Ich meine ist er gut geschrieben oder kann man da noch etwas besser/verständlicher machen?


    Grüße
    Michael

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624
    Hallo Michael!
    Du musst einfach in der Interrupt-Routine das register um eins weiterschieben und beim Maximum dann wieder auf das Minimum setzen.
    Den Wert gibst Du dann einfach mit "out PORTB , rxx" aus.
    Und wie ist der Code so für dich? Ich meine ist er gut geschrieben oder kann man da noch etwas besser/verständlicher machen?
    Jeder hat einen eigenen Schreibstiel, das musst Du selber für Dich herausfinden, womit Du am Besten arbeiten kannst.

    Viele Grüße
    Florian

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    Ich glaube du verstehst mich nicht! Ich meine zuerst sollen LED1-8 nacheinander leuchten. Dann soll dass Lauflicht weitergehen am PORTB! ABer nur 2 LED´s.

    MFG
    Michael

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624
    Hallo Michael!
    Ich glaube du verstehst mich nicht!
    Das glaube ich auch langsam! *schmunzel*

    Viele Grüße
    Florian

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    schau ma mal ...
    Du hast also 10 oder 11 LEDs die nacheinander leuchten sollen ?
    Dann nimm nicht ein Byte, sondern 2 Byte zum rotieren, und immer beide Werte an beide Ports ausgeben, bei PortB halt nur die beiden Bit vom 2. Byte.
    Wenn beim rotieren das 11. Bit erreicht wurde, gleich wieder das 1. setzen.

    So wäre jetzt mein Ansatz gewesen.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624
    Hallo linux_80!
    Jetzt habe ich die Problematik erst richtig verstanden, ich habe nicht kapiert, dass sich alles um 10 LEDs dreht!

    Viele Grüße
    Florian

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    Hallo,

    Ja aber die led´s am PORTB sollen erst leuchten, wenn dass erste byte mit dem rotieren fertig ist!

    MFG
    Michael

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •