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

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

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
分享一個(gè)自己寫的匯編矩陣鍵盤子函數(shù),會(huì)以A為出口,返回值為0至16的數(shù)字(0為無(wú)按鍵按下)。這個(gè)子函數(shù)不會(huì)等待用戶松手,會(huì)直接返回,如果要使用,請(qǐng)根據(jù)自己的需求進(jìn)行修改。
附上一個(gè)使用這個(gè)子函數(shù)的小項(xiàng)目。
如有錯(cuò)誤歡迎批評(píng)指正。

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

  3. ;按鍵檢測(cè)函數(shù),影響A,R0,R1寄存器
  4. ARRAY_TEST:
  5.         ;第一次按鍵檢測(cè),無(wú)按下直接結(jié)束
  6.         MOV ARRAY,#0FH
  7.         MOV A,ARRAY
  8.         CJNE A,#0FH,ARRAY_TEST1
  9.         CLR A
  10.         RET
  11. ARRAY_TEST1:
  12.         ;第二次按鍵檢測(cè),等待5ms進(jìn)行再次檢測(cè),防止誤入
  13.         ACALL DELAY5MS
  14.         MOV ARRAY,#0FH
  15.         MOV A,ARRAY
  16.         CPL A
  17.         ANL A,#0FH
  18.         JNZ SCAN                ;確認(rèn)有按鍵按下,開始掃描
  19.         RET
  20. SCAN:
  21.         ;錄入按下按鍵的行位置
  22.         MOV R1,A
  23.         MOV R0,#5H
  24. ;由于51單片機(jī)IO口為強(qiáng)下拉,當(dāng)有按鍵按下時(shí),特定的引腳會(huì)無(wú)法變?yōu)楦呶?br />
  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.         ;計(jì)算行地址
  34.         CJNE A,#1000B,SCAN3
  35.         RR A
  36.         AJMP SCAN4
  37. SCAN3:
  38.         CJNE A,#100B,SCAN4
  39.         DEC A
  40. SCAN4:
  41.         ;計(jì)算按鍵位置
  42.         DEC A
  43.         RL A
  44.         RL A
  45.         ADD A,R0
  46.         RET
復(fù)制代碼
小項(xiàng)目:
  1. ;定義矩陣鍵盤所在端口,低位為行按鍵,高位為列按鍵
  2. ARRAY DATA P3
  3.         
  4. ORG 00H
  5.         AJMP START
  6. ORG 100H
  7. START:
  8. ;初始化
  9.         MOV DPTR,#TAB                ;初始化要顯示的內(nèi)容
  10.         MOV P0,#0FFH                ;初始化顯示端口
  11.         MOV SP,#30H                        ;初始化堆棧地址
  12. MAIN:
  13.         ACALL ARRAY_TEST        ;調(diào)用矩陣鍵盤檢測(cè)
  14.         JZ MAIN                                ;當(dāng)無(wú)鍵盤按下跳轉(zhuǎn)到main
  15.         DEC A                                ;若需要第3個(gè)數(shù)據(jù)只需將指針位移2位,故自減一
  16.         ;輸出
  17.         MOVC A,@A+DPTR
  18.         MOV P0,A
  19.         CLR A
  20.         AJMP MAIN
  21. ;按鍵檢測(cè)函數(shù),影響A,R0,R1寄存器,
  22. ;A為出口,返回值為0至16的數(shù)字(0為無(wú)按鍵按下)
  23. ARRAY_TEST:
  24.         ;第一次按鍵檢測(cè),無(wú)按下直接結(jié)束
  25.         MOV ARRAY,#0FH
  26.         MOV A,ARRAY
  27.         CJNE A,#0FH,ARRAY_TEST1
  28.         CLR A
  29.         RET
  30. ARRAY_TEST1:
  31.         ;第二次按鍵檢測(cè),等待5ms進(jìn)行再次檢測(cè),防止誤入
  32.         ACALL DELAY5MS
  33.         MOV ARRAY,#0FH
  34.         MOV A,ARRAY
  35.         CPL A
  36.         ANL A,#0FH
  37.         JNZ SCAN                ;確認(rèn)有按鍵按下,開始掃描
  38.         RET
  39. SCAN:
  40.         ;錄入按下按鍵的行位置
  41.         MOV R1,A
  42.         MOV R0,#5H
  43. ;由于51單片機(jī)IO口為強(qiáng)下拉,當(dāng)有按鍵按下時(shí),特定的引腳會(huì)無(wú)法變?yōu)楦呶?br />
  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.         ;計(jì)算行地址
  53.         CJNE A,#1000B,SCAN3
  54.         RR A
  55.         AJMP SCAN4
  56. SCAN3:
  57.         CJNE A,#100B,SCAN4
  58.         DEC A
  59. SCAN4:
  60.         ;計(jì)算按鍵位置
  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
復(fù)制代碼
如果不想花積分,可以在csdn上下載(我設(shè)置的免費(fèi)下載):【免費(fèi)】51單片機(jī)匯編程序分享矩陣鍵盤子函數(shù)資源-CSDN文庫(kù)

51hei截圖20240511235711.png (33.19 KB, 下載次數(shù): 44)

小項(xiàng)目

小項(xiàng)目

ARRAY.zip

43.21 KB, 下載次數(shù): 4, 下載積分: 黑幣 -5

Proteus仿真+程序

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:126422 發(fā)表于 2024-8-2 13:03 | 只看該作者
謝謝分享,下載學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产a区| 国产在线1区 | 一区在线播放 | 国产一区二区影院 | 国产精品久久久久久亚洲调教 | 九九色综合| 999久久久久久久久6666 | 久久久久国产精品 | 三级视频在线观看电影 | 无码一区二区三区视频 | 亚洲高清在线 | 97精品久久 | 日韩成人在线视频 | 国产精品久久久久久久久动漫 | 精品一区电影 | 狠狠操网站 | 欧美日韩一区二区三区在线观看 | 天堂一区二区三区四区 | 99欧美精品 | 亚洲综合婷婷 | 中文字幕第一页在线 | 国产激情一区二区三区 | 国产精品一区二区久久 | 亚洲精品免费视频 | 国产japanhdxxxx麻豆 | 亚洲国产精品激情在线观看 | 黄色播放 | 国产精品成人69xxx免费视频 | 国产精品视频在线免费观看 | 精品久久久久久红码专区 | 国产精品视频在线观看 | 亚洲中午字幕 | 中文字幕在线播放第一页 | 欧美狠狠操 | 一区二区播放 | 亚洲综合在线视频 | 黄色片大全在线观看 | 91视在线国内在线播放酒店 | 欧美日韩视频 | 国产精品成人国产乱一区 | 久久亚洲一区 |