gpt4 book ai didi

c++ - ASM I/O 引脚 HCS12 微 Controller

转载 作者:行者123 更新时间:2023-11-30 17:52:58 25 4
gpt4 key购买 nike

我正在使用HCS12微 Controller 。我的以下程序从板载键盘获取输入,并根据按下的键将字母显示到板载 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 的变量中。

在这种情况下,测试输入的各个位看起来像:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com