Guten Abend Für ein Schulprojekt wollen wir mittels Mikrocontroller eine sogenannte "Wortuhr" bauen. Wir sind gerade dabei die Schaltung zu plannen und machen uns schon gedanken bezüglich des programmieren des PICs, da wir in diesem Bereich wenig erfahrung haben. Der PIC soll pro ausgang eine LED-Reihe ansteuern. Die Uhrzeit soll: Bei den Minuten in 5 MInuten Takt angezeit werden. Die Stunden sollen immer voll angezeit werden, also 1, 2, 3, ... Meine Frage: Wie soll das Programm asusehen? Hoffe das ich genug Infos gegeben habe, fragen oder verbesserungen sind gerne gesehen. P.S. Schaltplan im Anhang mfg Christian
Christian Unbekannt schrieb: > Meine Frage: Wie soll das Programm asusehen? Text in einer Sprache deiner Wahl, vorzugsweise in einer Proportionalschrift.
Auf alle fälle nicht so wie Euer Schaltplan! Is ja grausig das Suchspiel. Was habt Ihr Euch bis jetzt überlegt, wie das so zu steuern ist und wie man das auf den (mir leider) unbekannten PIC, umsetzen konnte?
Christian Unbekannt schrieb: > Meine Frage: Wie soll das Programm asusehen? Diesen Monster-Thread kennst du? http://www.mikrocontroller.net/topic/156661 => Mal reinschauen, deren Software Lesen&Verstehen, so ähnlich für deinen PIC nachprogrammieren?
Ich würde einen Uhrenquarz (2^15HZ) an den PIC hängen und mit einem 16bit Timer jede Sekunden ein Interrupt erzeugen. Die ISR könnte in C dann so aussehen:
1 | void interrupt ISR() |
2 | {
|
3 | if(PIR1bits.TMR1IF) |
4 | {
|
5 | TMR1L=??; |
6 | TMR1H=??; // Timer Vorladen |
7 | PIR1bits.TMR1IF=0; |
8 | sekunden++; |
9 | if(sekunde>=60) |
10 | minuten++; |
11 | if(minuten>=60) |
12 | stunden++; |
13 | if(stunden>12) |
14 | stunden=1; |
15 | }
|
16 | }
|
Bei meiner Wordclock habe die Funktionen zum Ansteuern der Anzeige so ausgesehen: Siehe Anhang. Der Code mag nicht schön oder Effizient sein, aber er erfüllt seine Aufgabe sein einem halben Jahr problemlos. Der Rest bleibt dann deine Aufgabe...
Gerade ist mir aufgefallen, dass der Thread im falschen Forum ist... Das Unterforum heißt "PC-Programmierung" und nicht "PIC-Programmierung"
Max H. schrieb: > sekunden++; > if(sekunde>=60) > minuten++; > if(minuten>=60) > stunden++; > if(stunden>12) > stunden=1; Da fehlt jedesmal das Null-Setzen der Variablen bei Endwert 60,60,24, sonst Zählen die Sekunden, Minuten und Stunden bis zum numerischen Überlauf.
Sry, hab ich ganz vergessen :-(
1 | void interrupt ISR() |
2 | {
|
3 | if(PIR1bits.TMR1IF) |
4 | {
|
5 | PIR1bits.TMR1IF=0; |
6 | sekunden++; |
7 | if(sekunde>=60) |
8 | {
|
9 | minuten++; |
10 | sekunden=0; |
11 | }
|
12 | if(minuten>=60) |
13 | {
|
14 | stunden++; |
15 | minuten=0; |
16 | }
|
17 | if(stunden>12) |
18 | stunden=1; |
19 | }
|
20 | }
|
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.
