Wie kann man ambesten eine Zählschleife verlassen?

Gast #1142451
Lesenswert?
• ▲
▼
Wie kann man ambesten eine Zählschleife verlassen?

Ich möchte mit der Zählschleife eine Zeit zählen einmal durchlaufen ist 
1ms und wenn ich einen Taster betätige soll die schleife verlassen 
werden und der Wert wird ausgegeben.

1
while(1)
2
{
3
zaehler = 0;
4

5

6
for (i=1;i<=1000000;i++)
7
{
8
_delay_ms(1);
9
zaehler++;
10
}
11
{
12

13

14
itoa (zaehler,c_zaeler,10);   // Umwandlung um Variabel zaehler auszugeben
15
lcd_clear();     
16
lcd_string (c_zaeler);
#1142479
Lesenswert?
• ▲
▼
Da das bereits eine 'kompliziertere' Konstruktion ist, hat sie es 
sicherlich verdient, dass man ihr dafür eine eigene Funktion spendiert
1
long WaitMax1()
2
{
3
  long Zaehler = 0;
4

5
  while( Zaehler < 1000000 ) {
6
    if( Tastendruck )
7
      return Zaehler;
8
 
9
    delay_ms( 1 );
10
    Zaehler++;
11
  }
12

13
  return Zaehler;
14
}

Für Tastendruck musst du natürlich noch deinen Ausdruck zur Abfrage der 
Tasten einsetzen.
#1142485
Lesenswert?
• ▲
▼
Und du musst ein klein wenig auf deine Datentypen aufpassen.

In deinem Beispiel muss zaehler ein long sein, weil sein Maximalwert 
1000000 sein kann und das passt nicht mehr in einen int.

Wenn zaehler aber ein long ist, dann kannst du nicht itoa benutzen, weil 
itoa ja einen int haben will. Für long gibt es ltoa
#1142522
Lesenswert?
• ▲
▼
Helmut Lenzen wrote:
> Der Type "int" ist nicht spezifiziert. Der kann auf einer 32-Bit
> Maschine auch 32 Bit lang sein.

Prinzipiell richtig.
Allerdings ist 'michi' schon aus einem anderen Thread bekannt und ich 
gehe jede Wette ein, dass er nicht auf einem 32 Bit System arbeitet, 
sondern auf einem AVR :-)

(Und ich wollte ihn jetzt nicht auch noch mit int/long und wie das im 
Allgmeinen ist noch mehr verwirren)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren