Ampelsteuerung

OP #2502570
Lesenswert?

Hallöchen,

ich habe ein kleines Problem :( und zwar bin ich in dem Fach 
Mikrocontroller eine ziemliche Niete..

Ich soll eine Ampelsteuerung programmieren, da es meinem Lehrer mit 
Timer und Interrupt Service Routine nicht recht war, habe ich mich dazu 
entschlossen es mit Unterprogramm und Datenpointer zu programmieren.

Wir nutzen in der Schule den Atmel AT89C51RC2.

Zudem soll es in etwa so ablaufen:

-Druck Taster P3.3
-Unterprogramm mit Wartezeit von 3 Sekunden wird augerufen
-Ampel wird umgeschalten, P2
-Unterprogramm mit Wartezeit von 3 Sekunden wird augerufen
-Ampel wird wieder zurückgeschalten, P2
-Endlosschleife, warten bis wieder P3.3 gedrückt wurde

Ich habe schon ein Programm geschrieben, bloß mit wenig Erfolg.. ich 
hoffe ihr könnt mir weiterhelfen..

MOV P2,#10001b         //Fußgänger rot, Autos grün
MOV P0,#000000b       //zur Visialisierung

endlos:
JB P3.3, endlos        //Taste gedrückt
endlos1:
JNB P3.3, endlos1     //Taste losgelassen

ACALL warte             //Warte 3 Sekunden

MOV A,R1
MOV DPTR,#tabelle1
MOVC A,@A+DPTR
MOV P2,A

ACALL warte            //Warte 3 Sekunden

MOV A,R1
MOV DPTR,#tabelle2   //Umschalten
MOVC A,@A+DPTR
MOV P2,A

LJMP endlos           //Endlosschleife

warte:              //Unterprogramm Warteschleife 3 Sekunden
MOV R2,#0
eins:
MOV R3,#0
zwei:
MOV R4,#22
drei:
NOP
NOP
NOP
NOP
NOP
DJNZ R4,drei
DJNZ R3,zwei
DJNZ R2,eins
NOP
RET                          //Ende des Unterprogramms

tabelle1:                    //Schalte von Rot auf Grün
db 10010b,10100b,01100b
tabelle2:                    //Schalte von Grün auf Rot
db 10100b,10110b,10001b

END

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren