При включении кнопки:
По схеме общий плюс (один вывод кнопки на плюс, второй на пин МК, один вывод резистора на пин МК, второй на минус). Активный сигнал - единица.
Код: Выделить всё
#define KEY_1 0
#define KEY_1_PIN PIND
if (KEY_1_PIN & (1<<KEY_1) == 1)
// if (KEY_1_PIN & (1<<KEY_1)) // аналогично
// действие, если кнопка нажата.
if (KEY_1_PIN & (1<<KEY_1) == 0)
//if (!(KEY_1_PIN & (1<<KEY_1))) // аналогично
// действие, если кнопка отжата.
По схеме общий минус (один вывод кнопки на минус, второй на пин МК, один вывод резистора на пин МК, второй на плюс питания). Активный сигнал - ноль.
Код: Выделить всё
if (KEY_1_PIN & (1<<KEY_1) == 1)
// if (KEY_1_PIN & (1<<KEY_1)) // аналогично
// действие, если кнопка отжата.
if (KEY_1_PIN & (1<<KEY_1) == 0)
//if (!(KEY_1_PIN & (1<<KEY_1))) // аналогично
// действие, если кнопка нажата.
Код: Выделить всё
//==================
#define set_bit(reg, bit) reg |= (1<<(bit)) // Установка бита.
#define clr_bit(reg, bit) reg &= (~(1<<(bit))) // Сброс бита.
#define switch_bit(reg, bit) reg ^= (1<<(bit)) // Переключение бита.
//------------------------------------------------------------------------
#define check_bit(reg, bit) (reg & (1<<bit)) // Проверка бита.
//==================
//==================
//#define KEY1_PRESSED() ((KEYS1_PIN & (1<<BIT_KEY1) == 0)
//#define KEY1_UNPRESSED() ((KEYS1_PIN & (1<<BIT_KEY1) == 1)
#define Set_Is_Key_Esc_Pressed() !(check_bit (KEY_ESC_PIN, KEY_ESC)) // Low level.
#define Set_Is_Key_Enter_Pressed() !(check_bit (KEY_ENTER_PIN, KEY_ENTER)) // Low level.
#define Set_Is_Key_Minus_Pressed() !(check_bit (KEY_PLUS_PIN, KEY_MINUS)) // Low level.
#define Set_Is_Key_Plus_Pressed() !(check_bit (KEY_MINUS_PIN, KEY_PLUS)) // Low level.
//#define Set_Is_Key_Esc_Pressed() check_bit (KEY_ESC_PIN, KEY_ESC) // High level.
//#define Set_Is_Key_Enter_Pressed() check_bit (KEY_ENTER_PIN, KEY_ENTER) // High level.
//#define Set_Is_Key_Minus_Pressed() check_bit (KEY_PLUS_PIN, KEY_MINUS) // High level.
//#define Set_Is_Key_Plus_Pressed() check_bit (KEY_MINUS_PIN, KEY_PLUS) // High level.
// При работе с буфером входов (расширение ввода-вывода):
// #define Set_Is_Key_Stop_Pressed() check_bit (inputs_buf [0], KEY_STOP)
//==================