/* * core.c * * Created: 13.04.2023 14:28:40 * Author: mrnek */ #include #include #include "app.h" #define MASK_PIND 0b11110000 void check_physical_keys_state(struct key *keys) { uint8_t row1; PORTC &= ~(1 << 3); row1 = PIND & MASK_PIND; if (row1 & (1 << 4)) keys[0].is_physical_pressed = false; else keys[0].is_physical_pressed = true; if (row1 & (1 << 5)) keys[1].is_physical_pressed = false; else keys[1].is_physical_pressed = true; if (row1 & (1 << 6)) keys[2].is_physical_pressed = false; else keys[2].is_physical_pressed = true; if (row1 & (1 << 7)) keys[3].is_physical_pressed = false; else keys[3].is_physical_pressed = true; PORTC |= (1 << 3); PORTC &= ~(1 << 2); row1 = PIND & MASK_PIND; if (row1 & (1 << 4)) keys[4].is_physical_pressed = false; else keys[4].is_physical_pressed = true; if (row1 & (1 << 5)) keys[5].is_physical_pressed = false; else keys[5].is_physical_pressed = true; if (row1 & (1 << 6)) keys[6].is_physical_pressed = false; else keys[6].is_physical_pressed = true; if (row1 & (1 << 7)) keys[7].is_physical_pressed = false; else keys[7].is_physical_pressed = true; PORTC |= (1 << 2); PORTC &= ~(1 << 1); row1 = PIND & MASK_PIND; if (row1 & (1 << 4)) keys[8].is_physical_pressed = false; else keys[8].is_physical_pressed = true; if (row1 & (1 << 5)) keys[9].is_physical_pressed = false; else keys[9].is_physical_pressed = true; if (row1 & (1 << 6)) keys[10].is_physical_pressed = false; else keys[10].is_physical_pressed = true; if (row1 & (1 << 7)) keys[11].is_physical_pressed = false; else keys[11].is_physical_pressed = true; PORTC |= (1 << 1); PORTC &= ~(1 << 0); row1 = PIND & MASK_PIND; if (row1 & (1 << 4)) keys[12].is_physical_pressed = false; else keys[12].is_physical_pressed = true; if (row1 & (1 << 5)) keys[13].is_physical_pressed = false; else keys[13].is_physical_pressed = true; if (row1 & (1 << 6)) keys[14].is_physical_pressed = false; else keys[14].is_physical_pressed = true; if (row1 & (1 << 7)) keys[15].is_physical_pressed = false; else keys[15].is_physical_pressed = true; PORTC |= (1 << 0); } void debounce(struct key *undebounce_keys) { }