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
|