Taster doppelt belegen

OP #1990468
Lesenswert?
• ▲
▼
Moin,

für meine Nixieuhr benötige ich einige Taster zum einstellen der Uhrzeit 
usw.
Da ich aber nicht so viele Taster haben möchte, würde ich gerne einige 
Taster doppelt belegen. Bisher stelle ich die Uhrzeit mit 2 Tastern, 
einer für die Minuten, und einer für die Stunden, nun möchte ich gerne, 
dass wenn man beide Taster gleichzeitig betätigt der AVR die Alarmzeit 
anzeigt. Wenn man nun wieder einen der beiden Taster drückt soll er nun 
nicht die Zeit verstellen, sondern eben die Alarmzeit. Nach 30 Sek soll 
er nun wieder die normale Uhrzeit anzeigen.

Leider reichen meine C Kenntnisse dafür nicht aus, daher hoffe ich, dass 
mir hier jemand weiterhelfen kann. Ich benutze einen ATmega und 
programmiere mit C.

Gruß, Natrium
Gast #1990477
Lesenswert?
• ▲
▼
1
if ((PINB & 0x03) == 0x03)
2
  state = STATE_SET_ALARMCLOCK;
3
...
4

5
switch (state)
6

7
case STATE_NORMAL:
8
 ....
9
break;
10

11
case STATE_SET_ALARMCLOCK:
12
 ....
13
break;

Soll heißen: Mit sowenig Angaben können wir Dir nicht helfen. Da musst 
Du schon deinen Code mit anhängen.
OP #1990488
Lesenswert?
• ▲
▼
Ich hab hier die relvanten Teile mal angehängt.
1
  set_bit(taster_hour_port,taster_hour_pin);              //Pullup einschalten
2
  set_bit(taster_minute_port,taster_minute_pin);          //Pullup einschalten
3

4
    if (bit_is_clear(taster_hour_pin, taster_hour_bit)) {        
5
    if (h<23) h++;
6
    else h=0;
7
    _delay_ms(10);
8
    while (bit_is_clear(taster_hour_pin, taster_hour_bit));      
9
    _delay_ms(10);
10
    ds1307_setTime(h,m,s);                      
11
    } 
12

13
    if (bit_is_clear(taster_minute_pin, taster_minute_bit)) {    
14
    if (m<59) m++;
15
    else m=0;
16
    _delay_ms(10); 
17
    ds1307_setTime(h,m,s);                      
18
    while (bit_is_clear(taster_minute_pin, taster_minute_bit));    
19
    _delay_ms(10);
20
    }


So sieht es bis jetzt aus, wo nur einfach die Stunden und Minuten 
hochgezählt werden. Der Teil steht in der Hauptschleife.

Gruß, Natrium


EDIT: Peters Code werde ich mir mal ansehen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.