Hallo,
offensichtlich benutzt der ursprüngliche Poster einen AVR, der mit 8 MHz betrieben wird, während Deiner mit 4 MHz läuft. Da der interne Takt zum Zählen benutzt wird, läuft Deine Uhr nur halb so schnell. Die Lösung wäre: ersetze im Programm die Zeile
#define preValue 57724
durch
#define preValue 28862
Das sollte dann funktionieren.
Zu Deinem 2. Problem: Vielleicht hilft es, wenn Du den Teil des Programms, der in der Endlosschleife ausgeführt wird, etwas anders schreibst, etwa so:
Sollte das Problem immer noch vorhanden sein, wäre es interessant zu wissen, welchen AVR Du einsetzt.Code:while (1) { if (seconds != gSeconds) { seconds = gSeconds; if (seconds >= 60) { seconds -= 60; gSeconds = seconds; minutes++; } if (minutes >= 60) { minutes -= 60; hours++; } if (hours >= 24) hours -= 24; /* Uhrzeit formatieren */ sprintf (mytime, "%02d:%02d:%02d", hours, minutes, seconds); /* und auf dem Display ausgeben */ lcd_gotoxy (6,0); lcd_puts (mytime); } }
Gruß, M@nni







Zitieren

Lesezeichen