使用HCS12微控制器进行Iam。我拥有的以下程序从板载键盘上获取输入,并根据所按的键将字母显示到板载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
}
最佳答案
假设您已将PORTA的输入读入变量,我们将其命名为input
。
在这种情况下,测试input
的各个位看起来像:
if (input & 1) {
// bit 0 was set
}
if (input & 2) {
// bit 1 was set
}
if (input & 4) {
// bit 2 was set
}
关于c++ - ASM I/O引脚HCS12微 Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15891936/