Привет,
Имеется CPU-188 с матричной клавиатурой (3х4) и дисплеем (4х20). Подключён к РС (файлы грузятся через ftrans). Чтение кнопок по опросу работает. Код нажатой кнопки выводится на LCD и в консоль.
Теперь хочу сделать чтение кнопок не по опросу, а по прерыванию. Пишу такой текст:
//---------------------------------------------------
volatile char kb_flag = 0;
void interrupt(*oldvector)(...);
//---------------------------------------------------
void interrupt Matrix(...)
{
kb_flag = 0xff;
_AX = 0x0010;
outp(0xff22,_AL);
}
//---------------------------------------------------
void main(void)
{
char scancode = 0;
int i = 0;
_disable();
oldvector = getvect(0x10);
setvect(0x10,Matrix);
_AX = inpw(0xff28) & ~0x100;
outp(0xff28,_AL);
outp(0x82,0xc0);
_enable();
while(1){
if(kb_flag){
scancode = inportb(0x82);
printf("\n SCAN: %02X", scancode);
kb_flag = 0;
}
if(kbhit()){
break;
}
i++;
printf("%d\r",i);
}
_AX = inpw(0xff28) | 0x100;
outp(0xff28,_AL);
setvect(0x10,oldvector);
}
Не работает... После установки нового вектора прекращается вывод на консоль. Правда, программа не висит - после нажатия на кнопку (на писишной клаве) завершается нормально.
Подскажите что я делаю не так...