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

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