mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 80C522 interrupt - routine


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo cummunity,
ich soll ein LED-Lauflicht mit den sechs an den Port-Pins P1.0 bis P1.5 
des 80C552-Boards angeschlossenen LEDs. Hierzu sollen die LEDs während 
einmal von links nach rechts und wieder zurück aufleuchten, das heißt 
die Port-Pins werden einmal in der Reihenfolge
P1.0, P1.1, P1.2, P1.3, P1.4, P1.5, P1.4, P1.3, P1.2, P1.1
durchlaufen. Die Dauer für einen solchen Durchlauf soll 0,5 Sekunden 
betragen. ich habe den Timer 1 verwendet, hier sind  schon meine ersten
gedanken...klappt noch nicht
ich habe erstmal den timer intialisiert sodass er jede 10 ms überläuft 
und
noch dazu eine konstante die inkrementiert wird so kann ich zb  nach 5 
überläufe ca 50 ms ein port auf 0 setzten --> led leuchtet
aber ich schaff es nicht dass mit dem lauflicht
ich hoffe ihr hilft mir weiter :

#include "Reg552.h"    // Dekl. von TH1, TL1 ... EA

sbit P10 = P1^0;    // Deklaration P1.0 (LSB Port 1)

unsigned char ucDat =0;    // globale Variable ucDat !

void int_T1 (void) interrupt 3  // ISR für Timer 1 (Int-Nr.: 3)
{
  TR1 = 0;
  TH1 = 0xDC;      // Startwert DC00h
  TL1 = 0x00;
  TR1 = 1;      // T1 run
  ucDat++;      // ucDat inkrement
}

main()        // Initialisierungen:
{
  TMOD &= 0x0F;
  TMOD |= 0x10;
  TH1   = 0xDC;
  TL1   = 0x00;
  PT1 = ET1 = 1;
  TR1 = 1;
  EA  = 1;      // EA immer zuletzt setzen
  while (1){      // P1.0 toggelt endlos

    while (ucDat < 50) { }  // warten bis ucDat ==50
    P10  ^= 1;                  // toggle P1.0
hier müssen die ports einer nach dem anderen auf 0 gesetzt um die LED´s 
zum leuchten zu bringen .

help


ucDat = 0;      // ucDat initialisieren
          }
}

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entweder ne switch-Anweisung oder ne Tabelle (Array) mit den Bitmustern.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.