1
我正在創建一個2x2鍵盤掃描儀,其中RC0和RC1是輸入線,RC2和RC3是輸出線。我已經設置TRISC如下PIC MikroC - 製作2x2鍵盤掃描儀
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';}
,並在一段時間(1)循環,我有此以將其顯示到GLCD顯示
test = keyPadScanner();
Delay_Ms(50);
Sm_Glcd_char2(30, 90, test);
我只想知道我哪裏出錯了,我花了太長時間試圖解決這個問題,如果你能夠把我推向正確的方向而不是給我一個答案,那將是很棒的: )
編輯:高被定義爲1,LOW在0定義,測試只是一個「字符」
這就是我下面
設置RC2高的僞代碼,RC3低
閱讀RC0。如果高,則1正在按下
閱讀RC1。如果高,2正在按下
設置RC2低,RC3高
閱讀RC0。如果高,則按下4個
閱讀RC1。如果高,5被壓
感謝您的回答,但您能詳細說明一下嗎?我現在編輯的代碼爲 char keyPadScanner(){ char var; char out; ((PORTC&0x3)== 0)out ='0'; //如果沒有按下,則很快退出 PORTC.RC2 = HIGH; PORTC.RC3 =低; var = PORTC&TRISC;如果((var)== 0x1)out ='1',則爲 ; ((var)== 0x2)out ='2'; PORTC.RC2 = LOW; PORTC.RC3 =高電平; var = PORTC&TRISC;如果((var)== 0x1)out ='4',則爲 。 ((var)== 0x2)out ='5'; 退貨;我不知道如何在註釋中對其格式進行格式化( – Joeliomason
)我的回答與您的軟件無關,您需要確保打開的輸入不是浮動的,要做到這一點,您需要上拉或下拉電阻在原來的軟件中,你需要拉下電阻,[如果你覺得這個有幫助,你可以投我的答案,我一直沒有信譽,因此很難在這裏回答問題。] – st2000