#ifndef __DRIVER_KEYBOADR #define __DRIVER_KEYBOADR #define BUF_SIZE 16 #define COLUMNS_COUNT 4 #define BUF_SIZE 16 // значение регистра клавиатуры // для 1-ой колонки #define BTN_1 238 // 1 #define BTN_4 222 // 4 #define BTN_7 190 // 7 #define BTN_ASTERISK 126 // * // для 2-ой колонки #define BTN_2 237 // 2 #define BTN_5 221 // 5 #define BTN_8 189 // 8 #define BTN_0 125 // 0 // для 3-ей колонки #define BTN_3 235 // 3 #define BTN_6 219 // 6 #define BTN_9 187 // 9 #define BTN_HASH 123 // # // для 4-ой колонки #define BTN_A 231 // A #define BTN_B 215 // B #define BTN_C 183 // C #define BTN_D 119 // D // порог нажатия клавиши #define KEY_PRESSED_COUNT 16 // порог отпускания клавиши #define KEY_RELEASED_COUNT 4 // задержка перед повтором символа // #define DELAY_BEFORE_SYMBOL_REPEAT 100 // скорость повтора символа // #define SYMBOL_REPEAT 50 // состояния автомата #define FSM_KEY_PRESSED 1 #define FSM_KEY_RELEASED 0 /** * циклический буфер */ typedef struct { char w_pointer; char r_pointer; char buffer[BUF_SIZE]; } BUFFER; typedef struct { char pointer; char array[COLUMNS_COUNT]; } COLUMNS; /** * Структура, описываюшая выражение */ typedef struct { int f_operand; int s_operand; char operation; float result; } Expression; typedef struct { unsigned char x; unsigned char y; } POSITION; /** * Функция перевода float to chars */ // void ftoa(float num, char *str); /** * Функция инициализации */ void init(unsigned char speed); /** * Функция обработчика прерываний * от клавиатуры */ void handler_timer0( void ) __interrupt ( 1 ); /** * Функция сканирования клавиатуры */ void scan_keyboard(int column); /** * Функция, устанавливающая вектор прерывания */ void set_vector(unsigned char xdata * Address, void * Vector); /** * Функция, чтения из буффера */ int read_buffer(char * next_char); /** * Функция, записи в буффер */ void write_buffer(char * next_char); /** * Функция эхо */ void run_echo(); /** * Функция сумматора */ void run_calculator(BUFFER * in_chars, Expression * exp); /** * Установки операндов */ void set_operand(int * operand, char * buf); /** * Функция очи */ void clean(BUFFER * this); /** * Функция генерирования звука */ void make_sound(); #endif // __DRIVER_KEYBOADR