• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機鍵盤接口電路及其源程序

    51單片機鍵盤接口電路及其源程序

    作者: 時間:2012-06-23 來源:網絡 收藏

    本文引用地址:http://www.czjhyjcfj.com/article/171256.htm

    LNEXT:

    ACALL LAMP ;調用燈顯示程序

    AJMP LOOP ;反復循環,主程序到此結束

    DELAY:

    MOV R7,#100

    D1: MOV R6,#100

    DJNZ R6,$

    DJNZ R7,D1

    RET

    ;----------------------------------------延時程序,處理中調用

    KEYPROC:

    MOV A,B ;從B寄存器中獲取鍵值

    JB ACC.2,KeyStart ;分析鍵的代碼,某位被按下,則該位為1(因為在程序中已取反)

    JB ACC.3,KeyOver

    JB ACC.4,KeyUp

    JB ACC.5,KeyDown

    AJMP KEY_RET

    KeyStart:

    SETB StartEnd ;第一個鍵按下后的處理

    AJMP KEY_RET

    KeyOver:

    CLR StartEnd ;第二個鍵按下后的處理

    AJMP KEY_RET

    KeyUp: SETB UpDown ;第三個鍵按下后的處理

    AJMP KEY_RET

    KeyDown:

    CLR UpDown ;第四個鍵按下后的處理

    KEY_RET:RET

    KEY:

    CLR F0 ;清F0,表示無鍵按下。

    ORL P3,#00111100B ;將P3口的接有鍵的四位置1

    MOV A,P3 ;取P3的值

    ORL A,#11000011B ;將其余4位置1

    CPL A ;取反

    JZ K_RET ;如果為0則一定無鍵按下

    ACALL DELAY ;不然延時去鍵抖

    ORL P3,#00111100B

    MOV A,P3

    ORL A,#11000011B

    CPL A

    JZ K_RET

    MOV B,A ;確實有鍵按下,將鍵值存入B中

    SETB F0 ;設置有鍵按下的標志

    K_RET:

    ORL P3,#00111100B ;此處循環等待鍵的釋放

    MOV A,P3

    ORL A,#11000011B

    CPL A

    JZ K_RET1 ;直到讀取的數據取反后為0說明鍵釋放了,才從處理程序中返回

    AJMP K_RET

    DIY機械鍵盤相關社區:機械鍵盤DIY




    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 广昌县| 安阳市| 江华| 余江县| 肥东县| 双鸭山市| 荥经县| 无极县| 祥云县| 拉萨市| 横山县| 延边| 辽源市| 瓦房店市| 望奎县| 亳州市| 图们市| 城市| 即墨市| 赞皇县| 海阳市| 夹江县| 隆回县| 天镇县| 仪征市| 阿拉善右旗| 温宿县| 兴隆县| 昭通市| 砚山县| 石河子市| 策勒县| 花垣县| 县级市| 宿迁市| 武清区| 巩义市| 镇雄县| 陇南市| 金平| 法库县|