欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 無法讀取單片機P0口各個位的狀態(tài) [打印本頁]

作者: zhangzhao2423    時間: 2021-10-16 15:50
標(biāo)題: 無法讀取單片機P0口各個位的狀態(tài)

如圖:按鍵是接到P0口上面的


我這樣寫程序能讀出P0口的狀態(tài)嗎?

經(jīng)過開發(fā)板測試發(fā)現(xiàn),讀不出來,請高手指點一下為什么?

作者: yzwzfyz    時間: 2021-10-16 16:14
不可能讀不到,無論是0,是1,總會讀到一個值的。怎么能說讀不到呢?
作者: dzc3458    時間: 2021-10-16 18:43
這種4x4矩陣鍵盤好像不能直接讀數(shù)據(jù),需要逐行掃描,先把掃描行置0,然后檢測按鍵,看看哪個列為0,才能判斷第幾行第幾列,應(yīng)該是這樣的
作者: wfqxgw    時間: 2021-10-16 19:03
這個讀不了的
試試下面的:
switch(P0|0x00)

作者: xuyaqi    時間: 2021-10-16 19:27
給個參考:

void Getch ( )        //取鍵值函數(shù)
{
        unsigned char X,Y,Z;
        P0=0x0f; //先對P0 置數(shù) 行掃描
        if(P0!=0x0f) //判斷是否有鍵按下
        {
                delay10ms(); //延時,軟件去干擾
                if(P0!=0x0f) //確認(rèn)按鍵按下
                {
                                X=P0; //保存行掃描時有鍵按下時狀態(tài)
                                P0=0xf0; //列掃描
                                Y=P0;    //保存列掃描時有鍵按下時狀態(tài)
                                Z=X|Y; //取出鍵值
               
                                switch ( Z ) //判斷鍵值(那一個鍵按下)
                                {
                                        case 0xee: k=0; break; //對鍵值賦值
                                        case 0xed: k=1; break;
                                        case 0xeb: k=2; break;
                                        case 0xe7: k=3; break;
                                        case 0xde: k=4; break;
                                        case 0xdd: k=5; break;
                                        case 0xdb: k=6; break;
                                        case 0xd7: k=7; break;
                                        case 0xbe: k=8; break;
                                        case 0xbd: k=9; break;
                                        case 0xbb: k=10;break;
                                        case 0xb7: k=11;break;
                                        case 0x7e: k=12;break;
                                        case 0x7d: k=13;break;
                                        case 0x7b: k=14;break;
                                        case 0x77: k=15;break;
                                }
                        }
                }
}
作者: zhangzhao2423    時間: 2021-10-18 08:06
yzwzfyz 發(fā)表于 2021-10-16 16:14
不可能讀不到,無論是0,是1,總會讀到一個值的。怎么能說讀不到呢?

就讀不了,你說奇怪不
是不是跟單片機掃描有關(guān)系
作者: zhangzhao2423    時間: 2021-10-18 08:09
dzc3458 發(fā)表于 2021-10-16 18:43
這種4x4矩陣鍵盤好像不能直接讀數(shù)據(jù),需要逐行掃描,先把掃描行置0,然后檢測按鍵,看看哪個列為0,才能判 ...

確實是不能直接讀數(shù)據(jù),但是覺得不應(yīng)該啊,為什么會讀取不了數(shù)據(jù)呢

作者: zhangzhao2423    時間: 2021-10-18 10:38
xuyaqi 發(fā)表于 2021-10-16 19:27
給個參考:

void Getch ( )        //取鍵值函數(shù)

也不行,但是可以讀取出行的數(shù)據(jù),比如,第一行,程序顯示01111111,第二行10111111,第三行11011111第四行就是11101111。但是具體哪個按鍵按下去的,它反應(yīng)不出來,怎么回事啊




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1