找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6292|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

我寫了一段行列按鍵掃描程序松手檢測(cè)加那里?求高手指點(diǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:166459 發(fā)表于 2017-3-11 17:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
uchar keyscan()
{
uchar keyl,keyh;
uchar key;  
         {
         P1=0Xf0;
         keyl=P1;  
         keyl=keyl&0xf0;   
         if(keyl!=0xf0)     
                {
                 delay(5);
                   if(keyl!=0xf0)  
                      {
                           keyl=P1&0xf0; //1110 0000  
                           keyl=keyl|0x0f;//1110 1111
                           P1=keyl;                                          
                           keyh=P1;                                               
                           keyh=keyh&0x0f;//0000 1110       
                           keyl=keyl&0xf0;//1110 0000
                           key=keyl+keyh; //1110 1110         
                          }
                }
                switch(key)
                    {
                             case 0xee: num=4;
                             break;
                                 case 0xde: num=3;
                             break;
                                  case 0xbe: num=2;
                             break;
                        }       
                   }                                                                              
return num;          
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:7485 發(fā)表于 2017-3-11 19:48 | 只看該作者
檢測(cè)到有鍵按下后(一般是某IO=0),延時(shí)后該IO=1即為該鍵已放開。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:155507 發(fā)表于 2017-3-12 10:30 | 只看該作者
  1. uchar keyscan()
  2. {
  3.         uchar keyl,keyh;
  4.         uchar key;  
  5.         {
  6.                 P1=0Xf0;
  7.                 keyl=P1;  
  8.                 keyl=keyl&0xf0;   
  9.                 if(keyl!=0xf0)     
  10.                 {
  11.                         delay(5);
  12.                         if(keyl!=0xf0)  
  13.                         {
  14.                                 keyl=P1&0xf0; //1110 0000  
  15.                                 keyl=keyl|0x0f;//1110 1111
  16.                                 P1=keyl;                                          
  17.                                 keyh=P1;                                                
  18.                                 keyh=keyh&0x0f;//0000 1110        
  19.                                 keyl=keyl&0xf0;//1110 0000
  20.                                 key=keyl+keyh; //1110 1110  
  21.                                 while((P1&0xf0)!=0xf0);//等待松開并輸出      
  22.                         }
  23.                 }
  24.                 switch(key)
  25.                 {
  26.                 case 0xee: num=4;
  27.                         break;
  28.                 case 0xde: num=3;
  29.                         break;
  30.                 case 0xbe: num=2;
  31.                         break;
  32.                 }        
  33.         }                                                                              
  34.         return num;         
  35. }

復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:166459 發(fā)表于 2017-3-13 10:04 | 只看該作者
修改后,按鍵數(shù)字不變化,
回復(fù)

使用道具 舉報(bào)

5#
ID:166459 發(fā)表于 2017-3-13 10:20 | 只看該作者
ahshmj 發(fā)表于 2017-3-11 19:48
檢測(cè)到有鍵按下后(一般是某IO=0),延時(shí)后該IO=1即為該鍵已放開。

檢測(cè)到有鍵按下后,延時(shí),確認(rèn),松開,執(zhí)行按下的內(nèi)容該I,要這樣的結(jié)果
回復(fù)

使用道具 舉報(bào)

6#
ID:151348 發(fā)表于 2017-3-13 16:53 | 只看該作者
2樓的方法應(yīng)該可行,關(guān)鍵就是while((P1&0xf0)!=0xf0);//等待松開并輸出   

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

7#
ID:103117 發(fā)表于 2017-3-13 17:13 | 只看該作者
加在按鍵執(zhí)行完后面key(!key)

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

8#
ID:167675 發(fā)表于 2017-3-13 18:17 | 只看該作者
不需要松手檢測(cè)吧 畫蛇添竹了吧 是微動(dòng)開關(guān)嗎 只要防抖動(dòng)就行了

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

9#
ID:111634 發(fā)表于 2017-3-13 21:44 | 只看該作者
有兩種方式,一種是確認(rèn)按鍵按下就動(dòng)作,另一種是確認(rèn)按鍵按下后等待按鍵釋放后再動(dòng)作。
回復(fù)

使用道具 舉報(bào)

10#
ID:7485 發(fā)表于 2017-3-14 14:50 | 只看該作者
horishi 發(fā)表于 2017-3-13 10:20
檢測(cè)到有鍵按下后,延時(shí),確認(rèn),松開,執(zhí)行按下的內(nèi)容該I,要這樣的結(jié)果

看不明白你說(shuō)的是什么問(wèn)題了。你說(shuō)的“檢測(cè)到有鍵按下后,延時(shí),確認(rèn),松開,執(zhí)行按下的內(nèi)容該I,要這樣的結(jié)果”,這是按鍵應(yīng)有的功能。

你是不是要說(shuō)“一直按住不放,執(zhí)行一個(gè)功能,松開后執(zhí)行另一個(gè)功能”?

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

11#
ID:166459 發(fā)表于 2017-3-15 09:38 | 只看該作者
你是不是要說(shuō)“一直按住不放,執(zhí)行一個(gè)功能,松開后執(zhí)行另一個(gè)功能”?
這個(gè)不對(duì)

我是說(shuō)“一個(gè)功能 在按住時(shí)不執(zhí)行,松開后才執(zhí)按鍵應(yīng)有的功能。即松手檢測(cè)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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