1

我正在创建一个 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,而 test 只是一个 'char'

这是我正在关注的伪代码

将 RC2 设置为高,RC3 设置为低
读取 RC0。如果为高,则按下 1
读取 RC1。如果为高,则按下 2
将 RC2 设置为低,RC3 为高
读取 RC0。如果为高,则按下 4
读取 RC1。如果高,则按下 5

4

1 回答 1

0

对于与您的设计类似的设计,我已经看到了下拉电阻被省略的位置,从而在没有按下任何按钮时使 PORTC.RC1 和 PORTC.RC0 处于未知状态。

于 2015-01-04T17:18:46.710 回答