Forum: Mikrocontroller und Digitale Elektronik Ampelsteuerung Neu


von Alex S. (broetchen)


Lesenswert?

So, habe nun einen neuen Programmcode geschrieben.
Den Mikrocontroller den wir in der Schule verwernden heißt AT89C51RC2 
und ist von Atmel.
Die LEDs an P2 schalten nicht um wie ich es mir erhofft hatte..

und zwar
-10001b
-10010b
-10100b
-01100b
-10100b
-10110b
-10001b

bis der Taster P3.3 wieder betätigt wurde..

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

endlos1:
JB P3.3,endlos1     //Taster gedrückt?

ACALL warte //Warte

MOV A,R1
MOV DPTR,#tabelle1  //Umschalten von Rot auf Gruen
MOVC A,@A+DPTR
MOV P2,A
INC R1
CJNE R1,#4,endlos1

ACALL warte //Warte

endlos2:
ACALL warte //Warte

MOV A,R0
MOV DPTR,#tabelle2  //Umschalten von Gruen auf Rot
MOVC A,@A+DPTR
MOV P2,A
INC R0
CJNE R0,#3,endlos2

LJMP endlos1

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

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

END

von Peter D. (peda)


Lesenswert?

Mach mal einen Programmablaufplan, damit Du selber erstmal durchsiehst, 
wie das Programm überhaupt funktionieren soll.

Und was sollen die überflüssigen NOPs, mußt Du eine Mindestzeilenzahl 
erreichen?


Peter

von was denn nun? (Gast)


Lesenswert?

Sag doch erstmal was das werden soll. Ampelsteuerung... ok!
Dann mal Butter bei die Fische!


Wenn ich das bauen würde, wäre das in etwa so:

Grundzustand:
- Autos: grün
- Fußgänger: rot

Taster wurde gedrückt:
- 3 Sek warten
- Autos: gelb, dann rot
- Fußgänger: grün

Nach x Sekunden:
- Fußgänger: rot
- Autos: rot+gelb, dann grün
- goto Grundzustand

oder was?

von Alex S. (broetchen)


Lesenswert?

@peda

Einen PAP hab ich schon gemacht ;)

und die überflüssigen NOPs enstammen einem vorgefertigten Unterprogramm, 
das wir auch sonst in der Schule verwenden.

@was denn nun?

So in etwa hab ich es mir auch gedacht, bloß das "goto Grundzustand" 
geht nicht, da richtige Verkehrsampeln wie folgt umschalten: "rot, rot & 
gelb, dann grün."

Das sollen die Tabellen erfüllen.

von was denn nun? (Gast)


Lesenswert?

Alex S. schrieb:
> da richtige Verkehrsampeln wie folgt umschalten: "rot, rot &
> gelb, dann grün."



Steht doch auch so da:

> Nach x Sekunden:
> - Fußgänger: rot
> - Autos: rot+gelb, dann grün
> - goto Grundzustand

von was denn nun? (Gast)


Lesenswert?

Alex S. schrieb:
> db 10100b,10110b,10001b

Was mir da auffällt... wie sind deine LEDs am Port angeschlossen?
Wenn LED zwischen Port und GND, dann an bei "0" und aus bei "1"

von Alex S. (broetchen)


Lesenswert?

Ich habs jetzt zum Glück endlich hinbekommen,

trotzdem möchte ich euch für Eure Hilfe danken :)

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.