我正在使用 HCS12 微控制器。我拥有的以下程序从板载键盘获取输入,并根据按下的键向板载 LCD 显示字母(我只附加了处理输入/输出的代码部分,如果需要,但这样对眼睛更容易)。
我想做的是摆脱用作输入的键盘,并使用我拥有的传感器通过 3 个单独的引脚发送低电平有效信号。这样,每次传感器读取其中一个读数(PortA1、2 或 3)时,它都会显示正确的字母,而不必每次都按下键盘。
init_keypad 函数将 PortA0-PortA3 设置为输入。
在 getkey 函数中,我不确定如何将 if 语句更改为单独读取 PortA0-PortA3
void init_keypad(void){
DDRA = 0xf0; // PA7-PA4 output; PA3-PA0 input
DDRB = 0xf0;
PUCR |= 1; // PUPAE =1 (enable pull-up on all PORTA inputs)
}
char getkey(void){
PORTA = 0xe0; // selects row 0
if ((PORTA & 1) == 0){
cmdwrt(0x01);
delay(20);
if ((PORTA & 1) == 0) return('L');//true if '1' key still active after 20 ms
}
PORTA = 0xd0;
if ((PORTA & 1) == 0){
cmdwrt(0x01);
delay(20);
if ((PORTA & 1) == 0) return('S');//true if '1' key still active after 20 ms
}
PORTA = 0xb0;
if ((PORTA & 1) == 0){
cmdwrt(0x01);
delay(20);
if ((PORTA & 1) == 0) return('R');//true if '1' key still active after 20 ms
}