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

QQ登錄

只需一步,快速開始

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

矩陣鍵盤掃描編里面有不懂的地方請(qǐng)大家?guī)蛶臀?/span>

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:67818 發(fā)表于 2014-10-30 21:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
4*4矩陣鍵盤掃描編



#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit BEEP = P3^7;uchar code DSY_CODE[]={         0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};uchar Pre_KeyNO = 16,KeyNO = 16;void DelayMS(uint ms){         uchar t;        while(ms--)        {                 for(t=0;t<120;t++);        }}void Keys_Scan(){         uchar Tmp;        P1 = 0x0f;        DelayMS(1);        Tmp = P1 ^ 0x0f;        switch(Tmp)        {                 case 1: KeyNO = 0; break;                case 2: KeyNO = 1; break;                case 4: KeyNO = 2; break;                case 8: KeyNO = 3; break;                default: KeyNO = 16;        }        P1 = 0xf0;        DelayMS(1);        Tmp = P1 >> 4 ^ 0x0f;        switch(Tmp)        {                 case 1: KeyNO += 0; break;                case 2: KeyNO += 4; break;                case 4: KeyNO += 8; break;                case 8: KeyNO += 12;        }}void Beep(){         uchar i;        for(i=0;i<100;i++)        {                 DelayMS(1);                BEEP = ~BEEP;        }        BEEP = 1;}void main(){         P0 = 0x00;        while(1)        {                 P1 = 0xf0;                if(P1 != 0xf0)                        Keys_Scan();                if(Pre_KeyNO != KeyNO)                {                         P0 = ~DSY_CODE[KeyNO];                        Beep();                        Pre_KeyNO = KeyNO;                }                DelayMS(100);        }}以上程序是我從別處摘錄的
     我這里不明白
    switch(Tmp)
        {                 case 1: KeyNO += 0; break;                case 2: KeyNO += 4; break;                case 4: KeyNO += 8; break;                case 8: KeyNO += 12;        }

       KeyNO +=?這是什么意思呢
       還有Tmp = P1 >> 4 ^ 0x0f;
      不就是和第一次的那個(gè)TMP一樣嗎為啥這么寫
      請(qǐng)大家?guī)蛶臀夜?/font>

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:44262 發(fā)表于 2014-11-2 01:48 來自手機(jī) | 只看該作者
  KeyNO +=?  意思是 keyno= KeyNO +12

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:51088 發(fā)表于 2014-11-4 12:38 來自手機(jī) | 只看該作者
樓上的說的很很對(duì),這是c語言的操作符號(hào),這種寫法可以簡(jiǎn)化程序。二樓的這種寫法就明顯要長(zhǎng)一些
回復(fù)

使用道具 舉報(bào)

地板
ID:67818 發(fā)表于 2014-11-5 15:28 | 只看該作者
謝謝哦
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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