Hi zusammen,
Ich wollte ne kleine Uhr programmieren, da ich mich mit den Strings in C nich wirklich auskenne und die nun bissel beherrschen lernen wollte...
Ich hab jetzt folgenden Code:
Naja, das Problem ist, dass zwar der itoa der Seconds klappt, aber wenn ich die itoa's der Stunden und Minuten nicht auskommentiere, resetet der µC konstantCode:#define preValue 57724 int volatile gSeconds = 0; SIGNAL (SIG_OVERFLOW1) { gSeconds++; TCNT1 = preValue; } int main (void) { lcd_init(LCD_DISP_ON); TCCR1B = (1<<CS12) | (1<<CS10); TIMSK |= (1<<TOIE1); TCNT1 = preValue; sei (); int seconds = 0; int minutes = 0; int hours = 0; char *sec = "00"; char *min = "00"; char *h = "00"; char *time = "00:00:00"; lcd_puts("Time: "); lcd_puts(time); while (1) { if (seconds != gSeconds) { seconds = gSeconds; if (seconds == 60) { seconds = 0; gSeconds = 0; minutes++; } if (minutes == 60) { minutes = 0; hours++; } if (hours == 24) hours = 0; time = "00:00:00"; // Problem hier s.u. // 01234567 itoa(seconds, sec, 10); // itoa(minutes, min, 10); //itoa(hours, h, 10); if (seconds < 10) { time[6] = "0"; // zweites Problem hier s.u. time[7] = sec[0]; } else { time[6] = sec[0]; time[7] = sec[1]; } /* if (minutes < 10) { time[4] = min[0]; } else { time[3] = min[0]; time[4] = min[1]; } if (hours < 10) { time[1] = h[0]; } else { time[0] = h[0]; time[1] = h[1]; }*/ lcd_gotoxy(6,0); lcd_puts(time); lcd_gotoxy(0,1); lcd_puts(sec); } } }
Außerdem bringt folgende Zeile hier gar nix:
Eigentlich sollte wenn die Seconds wieder bei 0 sind dadurch garantiert werden, dass in der Uhrzeit auch :00 anstatt :50 steht (Die 5 wäre noch aus den 50'er Sekunden geblieben). Ich hoffe ihr versteht was ich meineCode:time = "00:00:00"; // Problem hier s.u.
Trotz dieser Zeile, bleibt in den ersten 10 Sekunden jeder neuen Minute die 5 aus den 50'er Sekunden der vorherigen Minute stehen. So als ob die Variable gar nicht refresht wird...
Time: 00:00:58
Time: 00:00:59
Time: 00:00:50
Time: 00:00:51
Time: 00:00:...
Time: 00:00:59
Time: 00:00:10
Ich dachte mir daher: Ach egal, packste halt die Null selber dahin.Code:time[6] = "0"; // zweites Problem hier s.u.
Seltsamerweise sieh die ausgabe dann so aus:
Ich hoffe, jmd hat ne Idee für mich...Time: 00:00:s0
Time: 00:00:s1
Time: 00:00:...
Time: 00:00:s9
ThxInAdv
Alex








Zitieren

Lesezeichen