找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2024|回復(fù): 7
收起左側(cè)

C語言鍵盤掃描程序的疑問

[復(fù)制鏈接]
ID:597405 發(fā)表于 2019-10-23 22:13 | 顯示全部樓層 |閱讀模式
void keydown()
{
u8 a;
key=0x0f;
if(key!=0x0f)
{
delay(1000);
   if(key!=0x0f)
    {
        key=0x0f;//為什么這里要再一次賦值,如果賦值后,KEY置不沖突嗎??前面明明判斷為不等于0x0f.
         switch(key)
         {
         case(0x07):keyvalue=0;break;
         case(0x0b):keyvalue=1;break;
         case(0x0d):keyvalue=2;break;
         case(0x0e):keyvalue=3;break;         
         }

回復(fù)

使用道具 舉報

ID:235200 發(fā)表于 2019-10-23 23:46 | 顯示全部樓層
void keydown()
{
u8 a;
key=0x0f;                    //這里的key應(yīng)該是定義為按鍵的端口了,如P0,key=0x0f是打通低4位輸入通道
if(key!=0x0f)               //讀出端口判斷有無鍵按下
{
delay(1000);               //一般是延時10ms進(jìn)行消抖
   if(key!=0x0f)           //再次讀低4位進(jìn)行判斷
    {
        key=0x0f;          //再一次打通低4位輸入通道
         switch(key)       //讀出端口值進(jìn)行判斷
         {
         case(0x07):keyvalue=0;break;     //這個地方似乎常量不對,應(yīng)包括高4位的的值,,否則要改為switch(key&0x0f)
         case(0x0b):keyvalue=1;break;
         case(0x0d):keyvalue=2;break;
         case(0x0e):keyvalue=3;break;         
         }
回復(fù)

使用道具 舉報

ID:411550 發(fā)表于 2019-10-24 01:15 | 顯示全部樓層
再一次賦值,是為了進(jìn)行列掃描。雖然賦了值,但按下按鍵的所在列的管腳會被拉低,switch語句則可以正常識別哪一列導(dǎo)通,所以KEY值并不會沖突
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2019-10-24 07:47 | 顯示全部樓層
在這個程序中,樓主的疑問基本是對的。這是一贅句,沒有好處也沒有害處。只是白占了一點(diǎn)資源。
回復(fù)

使用道具 舉報

ID:597405 發(fā)表于 2019-10-24 18:38 | 顯示全部樓層

謝謝,說的很詳細(xì)!!
回復(fù)

使用道具 舉報

ID:597405 發(fā)表于 2019-10-24 18:39 | 顯示全部樓層
噗噗噗p 發(fā)表于 2019-10-24 01:15
再一次賦值,是為了進(jìn)行列掃描。雖然賦了值,但按下按鍵的所在列的管腳會被拉低,switch語句則可以正常識別 ...

大概明白了,就是說在按鍵按下時,賦值,立馬拉低,單片機(jī)會更好的識別。
回復(fù)

使用道具 舉報

ID:597405 發(fā)表于 2019-10-24 18:41 | 顯示全部樓層
wulin 發(fā)表于 2019-10-24 07:47
在這個程序中,樓主的疑問基本是對的。這是一贅句,沒有好處也沒有害處。只是白占了一點(diǎn)資源。

嘿嘿,謝了哦,一開始不好理解。后來我把這行刪除,似乎不影響效果~
回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2019-10-24 20:58 | 顯示全部樓層
原則上付一次1就可以了,贊同地板的說法。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表