Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

  keypress = PORTB;

  key = keypad(keypress, first);

  PORTB = 0xFD;

  keypress = PORTB;

  key = keypad(keypress, second);

  PORTB = 0xFB;

  keypress = PORTB;

  key = keypad(keypress, third);

  PORTB = 0xF7;

  keypress = PORTB;

  key = keypad(keypress, fourth);

 }

}


/*------------------------------------------------------------------------*/

/*Функция keypad определяет, была ли нажата какая-либо клавиша.           */

/*Функция сравнивает прочитанное значение порта PORTB с тем значением,    */

/*которое было выдано на порт PORTB. Если они равны, то ни одна клавиша в */

/*ряду не нажата                                                          */

/*------------------------------------------------------------------------*/

char keypad(unsigned char keypress, unsigned char row) {

 char key1;

 if (keypress != row) { /*какая-то клавиша нажата*/

  key1 = which_key(keypress); /*определить клавишу*/

  putchars(key1); /*передать символ на дисплей*/

 } else if(keypress == row) { /*ни одна из клавиш не нажата*/

  key1 = 'Z';

 }

 return (key1);

}


/*------------------------------------------------------------------------*/

/* Функция char which_key определяет код нажатой клавиши методом перебора */

/*табличных значений                                                      */

/*------------------------------------------------------------------------*/

char witch_key(unsigned char keypress) {

 char key;

 switch(keypress) /*распознавание кода клавиши*/

 {

 case 0xEE:

  key = '0'; /*нажата клавиша "0"*/

  break;

 case 0xDE:

  key = '1'; /*нажата клавиша "1"*/

  break;

 case 0xBE:

  key = '2'; /*нажата клавиша "2"*/

  break;

 case 0x7E:

  key = '3'; /*нажата клавиша "3"*/

  break;

 case 0xED:

  key = '4'; /*нажата клавиша "4"*/

  break;

 case 0xDD:

  key = '5'; /*нажата клавиша "5"*/

  break;

 case 0xBD:

  key = '6'; /*нажата клавиша "6"*/

  break;

 case 0x7D:

  key = '7'; /*нажата клавиша "7"*/

  break;

 case 0xEB:

  key = '8'; /*нажата клавиша "8"*/

  break;

 case 0xDB:

  key = '9'; /*нажата клавиша "9"*/

  break;

 case 0xBB:

  key = 'A'; /*нажата клавиша "A"*/

  break;

 case 0x7B:

  key = 'B'; /*нажата клавиша "B"*/

  break;

 case 0xE7:

  key = 'C'; /*нажата клавиша "C"*/

  break;

 case 0xD7:

  key = 'D'; /*нажата клавиша "D"*/

  break;

 case 0xB7:

  key = 'E'; /*нажата клавиша "E"*/

  break;

 case 0x77:

  key = 'F'; /*нажата клавиша "F"*/

  break;

 default:

  key = 'Z';

 } /*конец распознавание кода клавиши*/

 return(key);

}

/*----------------------------------------------------------*/

Представленный программный код не является полностью завершенной рабочей программой, поскольку в нем отсутствуют элементы защиты от дребезга контактов, отсутствует текст функции вывода символов на ЖК дисплей. Мы исправим эти недостатки несколько позже, в разделе 5.6.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже