Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Программируем клавиатуру на CPU-188

 Ответить Ответить
Автор
Сообщение
Slev Смотреть выпадающим
Новичок
Новичок


Присоединился: 26 Февраль 2006
Online Status: Offline
Публикации: 2
Свойства публикации Свойства публикации   Ответить, цитируя автора - Slev Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Программируем клавиатуру на CPU-188
    Опубликовано: 29 Сентябрь 2006 16:20

Привет,

Имеется 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);
 
}

Не работает... После установки нового вектора прекращается вывод на консоль. Правда, программа не висит - после нажатия на кнопку (на писишной клаве) завершается нормально.

Подскажите что я делаю не так...

 

 

Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz