我正在创建一个2x2键盘扫描器,其中RC0和RC1是输入线,RC2和RC3是输出线。我已将TRISC设置如下
TRISC = 0b00000011;
然后我创建了键盘扫描程序方法
char keyPadScanner(){
PORTC.RC2 = HIGH; PORTC.RC3 = LOW;
if (PORTC.RC0 != 0) return '1';
if (PORTC.RC1 != 0) return '2';
PORTC.RC2 = LOW; PORTC.RC3 = HIGH;
if (PORTC.RC0 != 0) return '4';
if (PORTC.RC1 != 0) return '5';}
并在while(1)循环中,我将其显示在GLCD显示器
上test = keyPadScanner();
Delay_Ms(50);
Sm_Glcd_char2(30, 90, test);
我只想知道我哪里出错了,我花了太长时间试图解决这个问题,如果你能把我推向正确的方向而不是给我一个答案,那就太好了:)
编辑:HIGH定义为1,LOW定义为0,测试只是一个' char'
这是我关注的伪代码
将RC2设为高电平,RC3为低电平 读RC0。如果高,则按下1 阅读RC1。如果高,则按2 将RC2设为低电平,RC3设为高电平 读RC0。如果高,则按下4 阅读RC1。如果高,则按下5
答案 0 :(得分:0)
对于与您类似的设计,我已经看到拉出 down 电阻器的位置,从而在没有按下按钮时PORTC.RC1和PORTC.RC0处于未知状态。