CODE
//порт, к которому подключены кнопки
#define PORT_BUTTON PORTA
#define PIN_BUTTON PINA
#define DDRX_BUTTON DDRA
//номера выводов, к которым подключены кнопки
#define DOWN 4
#define UP 5
#define ENTER 6
#define MASK_BUTTONS ((1<<DOWN)|(1<<UP)|(1<<ENTER)) // обясните это выражение в двоичном коде
#define BitIsClear(reg, bit) ((reg & (1<<(bit))) == 0) // обясните это выражение в двоичном коде
//volatile unsigned char pressedKey = 0;
unsigned char comp = 0;
//_______________________________________
void BUT_Init(void) // что мы получаем здесь? Если можно тоже в двоичном коде???
{
DDRX_BUTTON &= ~(MASK_BUTTONS);
PORT_BUTTON |= MASK_BUTTONS;
}
//_______________________________________
//#pragma inline = forced
void BUT_Debrief(void)
{
unsigned char key = 0;
//последовательный опрос выводов мк
if (BitIsClear(PIN_BUTTON, UP))
key = KEY_UP;
else if (BitIsClear(PIN_BUTTON, DOWN))
key = KEY_DOWN;
else if (BitIsClear(PIN_BUTTON, ENTER))
key = KEY_ENTER;
else {
key = KEY_NULL;
}
#define PORT_BUTTON PORTA
#define PIN_BUTTON PINA
#define DDRX_BUTTON DDRA
//номера выводов, к которым подключены кнопки
#define DOWN 4
#define UP 5
#define ENTER 6
#define MASK_BUTTONS ((1<<DOWN)|(1<<UP)|(1<<ENTER)) // обясните это выражение в двоичном коде
#define BitIsClear(reg, bit) ((reg & (1<<(bit))) == 0) // обясните это выражение в двоичном коде
//volatile unsigned char pressedKey = 0;
unsigned char comp = 0;
//_______________________________________
void BUT_Init(void) // что мы получаем здесь? Если можно тоже в двоичном коде???
{
DDRX_BUTTON &= ~(MASK_BUTTONS);
PORT_BUTTON |= MASK_BUTTONS;
}
//_______________________________________
//#pragma inline = forced
void BUT_Debrief(void)
{
unsigned char key = 0;
//последовательный опрос выводов мк
if (BitIsClear(PIN_BUTTON, UP))
key = KEY_UP;
else if (BitIsClear(PIN_BUTTON, DOWN))
key = KEY_DOWN;
else if (BitIsClear(PIN_BUTTON, ENTER))
key = KEY_ENTER;
else {
key = KEY_NULL;
}