音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請問大家4x4矩陣鍵盤掃描兩個按鍵同時按下的程序應(yīng)該如何編寫

作者:zhangna01 欄目:單片機
請問大家4x4矩陣鍵盤掃描兩個按鍵同時按下的程序應(yīng)該如何編寫
我只是知道一個按鍵的掃描程序是這個,兩鍵同時按下,應(yīng)該如何修改呢?謝謝大家,請幫幫忙!
JIANPAN:
    L1: MOV R3,#0F7H
        MOV R1,#00H
    L2: MOV A,R3
        MOV P2,A
        MOV A,P2
        MOV R4,A
        SETB C
        MOV R5,#04H
    L3: RLC A
        JNC KEYIN
        INC R1
        DJNZ R5,L3
        MOV A,R3
        SETB C
        RRC A
        MOV R3,A
        JC L2
        JMP L1
   KEYIN: MOV R7,#20
      D2: MOV R6,#248
          DJNZ R6,$
          DJNZ R7,D2
      
          
          MOV A,R1
          MOV DPTR,#TABLE
          MOVC A,@A+DPTR
          MOV R2,A
          XRL A,#42H
          JZ ZHUANGO
...............


2樓: >>參與討論
conwh
雙鍵(相當(dāng)于SHIFT)可以作為特殊處理
 
3樓: >>參與討論
xwj
行列掃描鍵盤可以準(zhǔn)確檢測出雙鍵按下,再多就無法區(qū)分了
//給你個很久以前的程序,希望你能看得懂
#include <reg52.h>

#define uLONG         unsigned LONG
#define uint        unsigned int
#define uCHAR         unsigned CHAR

extern void delay(unsigned int x);

unsigned CHAR Tab_key[]=        //行列式鍵盤映射
    {0x00,                        //無鍵按下
    '7','8','9','/',
    '4','5','6','*',
    '1','2','3','-',
    'C','0','=','+',
    //下面為按'C'同時再按的鍵:
    '7','8','9','/',
    '4','5','6','*',
    '1','2','3','-',
        '0','=','+',};

    //  P1口行列式鍵盤  //
#define KEYPIN_L  P1               // 定義鍵掃描列端口為 P1低四位輸入  //
#define KEYPIN_H  P1              // 定義鍵掃描行端口為 P1高四位掃描輸出  //
    //  P1口行列式鍵盤  //
    //公用函數(shù)
unsigned CHAR Keyscan(void);    //  鍵掃描函數(shù)            //
    //內(nèi)部私有函數(shù)
unsigned CHAR fnKeycode(unsigned CHAR key);     //  根據(jù)鍵盤映射表輸出順序鍵值            //
/*
    //  P1口行列式鍵盤  //
extern unsigned CHAR Keyscan(void);    //  鍵掃描函數(shù)            //
*/

    //  P1口行列式鍵盤  //
//---------------------------------------------------------------------------//
unsigned CHAR Keyscan(void)                      //  鍵掃描函數(shù)            //
{
    unsigned CHAR sccode,recode,keytemp = 0;
    KEYPIN_L = KEYPIN_L|0x0f;                    //  P1低四位為列線輸入         //
    KEYPIN_H = KEYPIN_H&0x0f;                    //  P1高四位為行線發(fā)全零掃描碼 //
    if ((KEYPIN_L&0x0f) !=  0x0f)
        {
        delay(10);                                //  延時 10 MS 消抖       //
        if ((KEYPIN_L&0x0f) !=  0x0f)
            {
            sccode = 0xef;                        //  逐行掃描碼初值(1110 1111)  //
            while(sccode !=  0xff)               //將掃描4次,keytemp為每次鍵值相 或的值 //
                {
                KEYPIN_H = sccode;                 //  輸出行掃描碼          //
                if ((KEYPIN_L&0x0f) !=  0x0f)    //  本行有鍵按下          //
                    {
                    recode = (KEYPIN_L&0x0f)|0xf0;    //  只要低位,高位置1  //
                    keytemp |=  (~sccode)+(~recode);    //特征碼(高位為列P3,低位為行KEYPIN_H)  //
                }
                sccode = (sccode << 1)|0x01;    
4樓: >>參與討論
zhangna01
看不太懂,不過謝了
 
5樓: >>參與討論
xwj
這樣都說看不懂只說明你根本就沒仔細看!
否則真的只能懷疑你的智力了

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請問6M晶振應(yīng)該匹配多大的電容?
測量壓力,該選哪種單片機開發(fā)板?請推薦
C51求助使用浮點數(shù)總是有警告
菜鳥求助匯編高手
請問電路板上的地數(shù)字地和模擬地在沒連到一塊時有10伏左右的壓差
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號