Hey, Ich soll eine 24 Stunden-Binäruhr programmieren, aber wie macht man das, wenn die Sekunden und Minuten größer 10, größer 20 ... sind oder, wenn die Stunde Wir arbeiten mit einem 89S52 und insgesamt 20 LED's. Ich nehme mal an, dass die 6 LED's die Stunden sind und die 7 jeweils Minuten und Sekunden. Das ganze soll nur programmiert werden, nicht aufgebaut. Das mit den LED's an und aus und an krieg ich auch wohl hin^^, aber wie macht man das mit den Stunden Sekunden und Minuten, also wenn die gewisse Werte erreichen? Für jeden einzelnen Wert ne if schleife ist ein wenig heftig oder? Mir fällt da irgendwie grad keine Lösung für ein. Das habe ich schon: if(sekunde == 60) { sekunde = 0; minute = minute +1; P2_B2 = 0; } if(minute == 60) { minute = 0; stunde = stunde +1; } if(stunde == 24) { stunde = 0; }
achja, vor die Stunden, Minuten und Sekunden ist jeweils noch ein Schiebregister gepackt. (74HCT373N)
DIY_01 schrieb: > Das habe ich schon Na das ist ja nix. Eine Programm-Hauptschleife die pro Sekunde ein mal durchläuft wäre nicht schlecht, und davor die Initialisierung und dadrin die AusgBe an die LEDs.
1 | // init
|
2 | while(1) |
3 | {
|
4 | // dein code
|
5 | PortA=sekunde; |
6 | PortB=minute; |
7 | PortC=stunde; // oder wo deine LEDs auch immer angeschlossen sind |
8 | Delay1s; |
9 | }
|
Ein sekunde++; wäre auch nich ganz gut, und das Ausgeben eines Werts an ein Schieberegister ist dann die nächste Übung.
naja, das mit der sekunde++ hatte ich auch schon. Die LED's hängen an diesen Schieberegistern, die ich oben beschrieben hatte. near int sekunde = 0; near int minute = 0; near int stunde = 0; while(1) { IC6 = sekunde; IC7 = minute; IC8 = stunde; // wo LED's angeschlossen sind. sekunde++; if(sekunde == 60) { sekunde = 0; minute = minute +1; } if(minute == 60) { minute = 0; stunde = stunde +1; } if(stunde == 24) { stunde = 0; IC6 = 1; IC7 = 1; IC8 = 1; } } } Ist dieses delay1s auch sowas wie sekunde++?
Nein, das steht für eine Zeitverzögerung bis 1 Sekunde rum ist. Je nach dem, wie dein uC das erlaubt. Was auch immer mit IC1=IC2=IC3=1 erreicht werden soll, einen Wert ins Schieberegister zu übertragen ist wohl aufwändiger.
Wird der Wert von dem schieberegister auf die leds uebertragen? Wie macht man das denn dann? Delay1ms kenne ich als _wait_ms(); Das mit den ICs ist uebrigens Kaese.
DIY_01 schrieb: > achja, vor die Stunden, Minuten und Sekunden ist jeweils noch ein > Schiebregister gepackt. (74HCT373N) Das ist kein Schieberegister sondern ein Latch. Poste mal den Schaltplan. mfg.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.