#include #include #include uint8_t get_key_press( uint8_t key_mask ); uint8_t get_key_rpt( uint8_t key_mask ); uint8_t get_key_state( uint8_t key_mask ); uint8_t get_key_short( uint8_t key_mask ); uint8_t get_key_long( uint8_t key_mask ); void init_entprell(void); #define KEY_DDR DDRB #define KEY_PORT PORTB #define KEY_PIN PINB #define KEY0 0 #define KEY1 1 #define KEY2 2 #define ALL_KEYS (1<1: key press detect if ( (key_state & REPEAT_MASK) == 0 ) { // check repeat function rpt = REPEAT_START; // start delay } if ( --rpt == 0 ) { rpt = REPEAT_NEXT; // repeat delay key_rpt |= key_state & REPEAT_MASK; } } void init_entprell(void) { KEY_DDR &= ~ALL_KEYS; // configure key port for input KEY_PORT |= ALL_KEYS; // and turn on pull up resistors // Timer 1, CTC mode 4, prescaler 256 TCCR1A = 0; TCCR1B = (1<