key-routines.h


1
/************************************************************************/
2
/*                                                                      */
3
/*                      Debouncing 8 Keys                               */
4
/*                      Sampling 4 Times                                */
5
/*                      With Repeat Function                            */
6
/*                                                                      */
7
/*              Author: Peter Dannegger                                 */
8
/*                      danni@specs.de                                  */
9
/*                                                                      */
10
/************************************************************************/
11
12
#ifndef  KEY_ROUTINES_H_
13
#define KEY_ROUTINES_H_
14
15
#define KEY_DDR         DDRB
16
#define KEY_PORT        PORTB
17
#define KEY_PIN         PINB
18
#define KEY0            0
19
#define KEY1            1
20
#define KEY2            2
21
#define ALL_KEYS        (1<<KEY0 | 1<<KEY1 | 1<<KEY2)
22
 
23
#define REPEAT_MASK     (1<<KEY1 | 1<<KEY2)       // repeat: key1, key2
24
#define REPEAT_START    50                        // after 500ms
25
#define REPEAT_NEXT     20                        // every 200ms
26
27
/************************************************************************/
28
29
uint8_t get_key_press( uint8_t key_mask );
30
31
uint8_t get_key_rpt( uint8_t key_mask );
32
33
uint8_t get_key_state( uint8_t key_mask );
34
35
uint8_t get_key_short( uint8_t key_mask );
36
37
uint8_t get_key_long( uint8_t key_mask );
38
39
40
#endif