久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1582|回復: 1
收起左側

51單片機匯編程序分享 矩陣鍵盤(線反轉法)

[復制鏈接]
ID:1114132 發表于 2024-5-12 00:11 | 顯示全部樓層 |閱讀模式
分享一個自己寫的匯編矩陣鍵盤子函數,會以A為出口,返回值為0至16的數字(0為無按鍵按下)。這個子函數不會等待用戶松手,會直接返回,如果要使用,請根據自己的需求進行修改。
附上一個使用這個子函數的小項目。
如有錯誤歡迎批評指正。

單片機源程序如下:
  1. ;定義矩陣鍵盤所在端口,低位為行按鍵,高位為列按鍵
  2. ARRAY DATA P3

  3. ;按鍵檢測函數,影響A,R0,R1寄存器
  4. ARRAY_TEST:
  5.         ;第一次按鍵檢測,無按下直接結束
  6.         MOV ARRAY,#0FH
  7.         MOV A,ARRAY
  8.         CJNE A,#0FH,ARRAY_TEST1
  9.         CLR A
  10.         RET
  11. ARRAY_TEST1:
  12.         ;第二次按鍵檢測,等待5ms進行再次檢測,防止誤入
  13.         ACALL DELAY5MS
  14.         MOV ARRAY,#0FH
  15.         MOV A,ARRAY
  16.         CPL A
  17.         ANL A,#0FH
  18.         JNZ SCAN                ;確認有按鍵按下,開始掃描
  19.         RET
  20. SCAN:
  21.         ;錄入按下按鍵的行位置
  22.         MOV R1,A
  23.         MOV R0,#5H
  24. ;由于51單片機IO口為強下拉,當有按鍵按下時,特定的引腳會無法變為高位
  25.         MOV ARRAY,#0F0H
  26.         MOV A,ARRAY
  27. SCAN1:
  28.         RLC A
  29.         DEC R0
  30.         JC SCAN1
  31. SCAN2:
  32.         MOV A,R1                        ;取回行位置
  33.         ;計算行地址
  34.         CJNE A,#1000B,SCAN3
  35.         RR A
  36.         AJMP SCAN4
  37. SCAN3:
  38.         CJNE A,#100B,SCAN4
  39.         DEC A
  40. SCAN4:
  41.         ;計算按鍵位置
  42.         DEC A
  43.         RL A
  44.         RL A
  45.         ADD A,R0
  46.         RET
復制代碼
小項目:
  1. ;定義矩陣鍵盤所在端口,低位為行按鍵,高位為列按鍵
  2. ARRAY DATA P3
  3.         
  4. ORG 00H
  5.         AJMP START
  6. ORG 100H
  7. START:
  8. ;初始化
  9.         MOV DPTR,#TAB                ;初始化要顯示的內容
  10.         MOV P0,#0FFH                ;初始化顯示端口
  11.         MOV SP,#30H                        ;初始化堆棧地址
  12. MAIN:
  13.         ACALL ARRAY_TEST        ;調用矩陣鍵盤檢測
  14.         JZ MAIN                                ;當無鍵盤按下跳轉到main
  15.         DEC A                                ;若需要第3個數據只需將指針位移2位,故自減一
  16.         ;輸出
  17.         MOVC A,@A+DPTR
  18.         MOV P0,A
  19.         CLR A
  20.         AJMP MAIN
  21. ;按鍵檢測函數,影響A,R0,R1寄存器,
  22. ;A為出口,返回值為0至16的數字(0為無按鍵按下)
  23. ARRAY_TEST:
  24.         ;第一次按鍵檢測,無按下直接結束
  25.         MOV ARRAY,#0FH
  26.         MOV A,ARRAY
  27.         CJNE A,#0FH,ARRAY_TEST1
  28.         CLR A
  29.         RET
  30. ARRAY_TEST1:
  31.         ;第二次按鍵檢測,等待5ms進行再次檢測,防止誤入
  32.         ACALL DELAY5MS
  33.         MOV ARRAY,#0FH
  34.         MOV A,ARRAY
  35.         CPL A
  36.         ANL A,#0FH
  37.         JNZ SCAN                ;確認有按鍵按下,開始掃描
  38.         RET
  39. SCAN:
  40.         ;錄入按下按鍵的行位置
  41.         MOV R1,A
  42.         MOV R0,#5H
  43. ;由于51單片機IO口為強下拉,當有按鍵按下時,特定的引腳會無法變為高位
  44.         MOV ARRAY,#0F0H
  45.         MOV A,ARRAY
  46. SCAN1:
  47.         RLC A
  48.         DEC R0
  49.         JC SCAN1
  50. SCAN2:
  51.         MOV A,R1                        ;取回行位置
  52.         ;計算行地址
  53.         CJNE A,#1000B,SCAN3
  54.         RR A
  55.         AJMP SCAN4
  56. SCAN3:
  57.         CJNE A,#100B,SCAN4
  58.         DEC A
  59. SCAN4:
  60.         ;計算按鍵位置
  61.         DEC A
  62.         RL A
  63.         RL A
  64.         ADD A,R0
  65.         RET
  66. TAB:
  67. DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH
  68.         
  69. DELAY5MS:                        ;@11.0592MHz
  70.         PUSH 30H
  71.         PUSH 31H
  72.         MOV 30H,#9
  73.         MOV 31H,#239
  74. NEXT:
  75.         DJNZ 31H,NEXT
  76.         DJNZ 30H,NEXT
  77.         POP 31H
  78.         POP 30H
  79.         RET
  80. END
復制代碼
如果不想花積分,可以在csdn上下載(我設置的免費下載):【免費】51單片機匯編程序分享矩陣鍵盤子函數資源-CSDN文庫

小項目

小項目

ARRAY.zip

43.21 KB, 下載次數: 4, 下載積分: 黑幣 -5

Proteus仿真+程序

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:126422 發表于 2024-8-2 13:03 | 顯示全部樓層
謝謝分享,下載學習。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.午夜 | 亚洲在线一区二区三区 | 欧美99久久精品乱码影视 | 国产偷录叫床高潮录音 | 欧美日本在线 | 国产一区二区三区在线看 | 欧美一区二区在线观看视频 | 日韩成人在线播放 | 一区二区三区网站 | 中文字幕11页 | 久艹av | 欧美日韩一本 | 在线观看亚洲专区 | 日韩国产精品一区二区三区 | 欧美激情 一区 | 亚洲免费人成在线视频观看 | 一级大片 | 久久久久久影院 | 国产一区2区 | 亚洲 中文 欧美 日韩 在线观看 | 国产精品精品久久久 | 成人 在线 | 日本久草 | 日韩欧美一区二区三区免费观看 | 久久久久久久久久久福利观看 | 中文字幕视频在线 | 波多野结衣二区 | www狠狠干 | 日韩一区二区三区精品 | 天天操天天拍 | 91免费电影| 久久精品网 | 国产91视频一区二区 | 国产在线高清 | 日本精品久久久久久久 | 99久久视频 | 成人高清视频在线观看 | 亚洲a一区二区 | 一区二区手机在线 | 欧美成人精品一区二区男人看 | 国产福利资源在线 |