Доброго времени суток, ситуация следующая : имеется контроллер mega64, дисплей, клавиатура (12 кн) и кнопка: с клавы вводим число с отображением на дисплее, по нажатию на кнопке срабатывает прерывание и дальше что то делаем с числом. Проблема в том, что значение переменной с вводимым числом не передаётся в обработчик прерывания, вот код:
Значение при вводе числа каким то образом теряется, в чём тут может быть косяк?
Раздел: AVR
volatile double cislo=0; //само число
volatile double temp=0;
volatile unsigned char dd1[7]; //для хранения символа с клавы
void vvod(); //функция ввода данных с клавы
main()
{
lcd_init(); //инициализируем дисплей и клаву
keyb_init();
EIMSK|=(1<<INT5); //иниц прерывания
EICRA|= (1<<ISC01)|(1<<ISC00);
while(1)
{
KEYB_ScanKeyboard();
vvod();
}
}
void vvod()
{
dd1[0]=KEYB_GetKey();
lcd_puts(&dd1[0]); //вывод на дисплей
temp=(double)dd1[0]; //преобраз unsigned char в double
cislo=cislo*10+temp;
}
SIGNAL(SIG_INTERRUPT5)
{
if (cislo) lcdputs("OK!");
else lcdputs("Fail");
}
Значение при вводе числа каким то образом теряется, в чём тут может быть косяк?
Раздел: AVR