terminal/app.c

51 lines
2.2 KiB
C

/*
* core.c
*
* Created: 13.04.2023 14:28:40
* Author: mrnek
*/
#include <avr/io.h>
#include <stdbool.h>
#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) {
}