Forum: Mikrocontroller und Digitale Elektronik 80C522 interrupt - routine


von gast (Gast)


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
          }
}

von Peter D. (peda)


Lesenswert?

Entweder ne switch-Anweisung oder ne Tabelle (Array) mit den Bitmustern.


Peter

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
Noch kein Account? Hier anmelden.