Forum: Mikrocontroller und Digitale Elektronik Schleife nach zeit oder tastendruck beenden


von Lokus P. (derschatten)


Lesenswert?

Kann mir jemand sagen wie bei meinem Programm in die Hauptschleife 
zurückspringe?
1
  for(;;)
2
  {
3
    if(get_key_short(ENC_TASTER))
4
    {
5
      while(1)
6
      {
7
        val += encode_read();
8
9
        if(nSelect == 0)                    // Haupt-Menü
10
        {
11
          if (val > 3) val = 3;
12
          if (val < 0) val = 0;
13
        }
14
15
        if(nSelect == 1)                    // Floppy-ID Menü
16
        {
17
          if (val > 5) val = 5;
18
          if (val < 4) val = 4;
19
        }
20
21
        switch(val)
22
        {
23
          // Hauptmenü
24
          case 0:
25
            LEDS_PORT = _I | marker;            // I (00110000) -> ID
26
            if(get_key_short(ENC_TASTER))
27
            {
28
              val = 4;
29
              nSelect = 1;
30
            }
31
            break;
32
33
34
          // Floppy-ID
35
          case 4:
36
            LEDS_PORT = _8;                  // 8 (01111111) -> ID 8
37
            if(get_key_short(ENC_TASTER))
38
            {
39
              floppy_id(8);
40
              reset();
41
              val = 0;
42
              nSelect = 0;
43
              ende = 1;
44
            }
45
            break;
46
        }
47
        if(ende == 1)
48
        {
49
          break;
50
        }
51
      }
52
      return 0;
53
    }
54
  }
55
}

ich dachte ich setze einfach eine variable die ich dann in der Schleife 
abfrage und mit einem "break" beende. Allerdings funktioniert das leider 
so nicht.

von Dennis (Gast)


Lesenswert?

Kannst doch ne Variable abfragen
1
uint8_t variable = 1;
2
3
while( variable )
4
{
5
  ...
6
  if( TASTER )
7
  {
8
    variable = 0;
9
  }
10
}

von Lokus P. (derschatten)


Lesenswert?

Richtig, das wars. Danke!

Als nächten Schritt würde ich gerne das ganze Zeitgesteuert machen.
Wenn also innerhalb von 10 Sekunden keine taste gedrückt wird soll er 
zurück in die hauptschleife springen.

von Dennis (Gast)


Lesenswert?

Machste genauso: Brauchst natürlich nen Timer, welcher die Zeit 
runterzählt...und dann musste beim reinspringen ins Menü den Wert neu 
setzen und abfragen, ob er >0 ist, wenn nicht, dann Menü verlassen.

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
Noch kein Account? Hier anmelden.