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

QQ登錄

只需一步,快速開(kāi)始

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

矩陣鍵盤(pán)按鍵顯示數(shù)字1-30匯編程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70976 發(fā)表于 2014-12-27 18:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. ;=================================================================
  2. ;程序編寫(xiě)人:蘭建
  3. ;編寫(xiě)地點(diǎn):51hei培訓(xùn)機(jī)構(gòu)
  4. ;時(shí)間:6月4日上午星期四
  5. ;功能:矩陣鍵盤(pán)在P1口,利用反轉(zhuǎn)法讀取鍵值,16個(gè)獨(dú)立按鍵中的1-15號(hào)
  6. ;按鍵均有兩個(gè)功能,定義16號(hào)按鍵為功能鍵,按下不顯示任何數(shù)字,當(dāng)按
  7. ;住這個(gè)案件不松,再按下1-15號(hào)按鍵時(shí),數(shù)碼顯示16-30.
  8. ;=======================開(kāi)始初始化================================
  9.     SHUCHU      EQU   P0             ;定義P0口為輸出口
  10. PIANXUAN EQU   P2    ;設(shè)置P2.0為片選
  11. JIANPAN     EQU   P1    ;鍵盤(pán)接口
  12. ;========================程序開(kāi)始================================
  13.                 ORG   00H            ;程序開(kāi)始
  14.                 JMP   START          ;跳到START
  15.                 ORG   0030H          ;入口地址              
  16.     START:
  17.           MOV   PIANXUAN,#05  ;片選
  18.           MOV   SHUCHU,#0FFH  ;上電默認(rèn)不顯示
  19.     MOV   R0,#00H   ;順序碼清零
  20.     MOV   30H,#00H   ;鍵值存儲(chǔ)單元清零
  21.      LOOP:
  22.           MOV   JIANPAN,#0F0H  ;把P1口高四位設(shè)為輸入,同時(shí)把低四位設(shè)為0
  23.           MOV   A,JIANPAN   ;讀P1口高四位列線(xiàn)
  24.     ANL   A,#0F0H   ;屏蔽低四位
  25.     MOV   B,A    ;保存高四位列線(xiàn)
  26.     MOV   JIANPAN,#0FH  ;把P1口低四位設(shè)為輸入,同時(shí)把高四位設(shè)為0
  27.     MOV   A,JIANPAN   ;讀取P1口低四位行線(xiàn)
  28.     ANL   A,#0FH   ;屏蔽高四位
  29.     ORL   A,B    ;列線(xiàn)和行線(xiàn)合并
  30.     CJNE  A,#0FFH,KEY  ;判斷是否右鍵按下,右則跳到按鍵處理
  31.     JMP   LOOP    ;沒(méi)有返回繼續(xù)查詢(xún)  
  32.    KEY:
  33.        MOV   30H,A    ;保存鍵值
  34.        MOV   DPTR,#TAB1  ;指向鍵值表
  35.     MOV   R0,#0FFH   ;FF+1=0所以R0里面放FF,既可以顯示0
  36.     L1:
  37.        INC   R0    ;順序碼加1
  38.        MOV   A,R0    ;
  39.     MOVC  A,@A+DPTR   ;查鍵值表
  40.     CJNE  A,#77H,L2    ;判斷是否鍵值為表格最后一個(gè)
  41.           JMP   LOOP    ;相等表示沒(méi)按鍵按下或者查到最后了,返回重新查詢(xún)  
  42.     L2:
  43.        CJNE   A,30H,L1  
  44.     CALL   JISUAN   ;計(jì)算處理分離十位和個(gè)位
  45.     CALL   DISPLAY   ;動(dòng)態(tài)顯示十位和個(gè)位
  46.        JMP    LOOP    ;返回、重新查詢(xún)
  47. ;========================計(jì)算子程序=========================
  48. ;輸入:30H
  49. ;輸出:"A和B"
  50. ;實(shí)現(xiàn)的功能:把30H的數(shù)據(jù)的十位和個(gè)位分離出來(lái)
  51. ;============================================================
  52.              JISUAN:INC   R0
  53.            MOV   A,R0         ;數(shù)據(jù)放在A中  
  54.         MOV   B,#10        ;除數(shù)放在B中
  55.         DIV   AB           ;商放在A中,余數(shù)放在B中
  56.         RET               
  57. ;========================顯示子程序==========================
  58. ;輸入:"A"
  59. ;輸出:"P0口"
  60. ;實(shí)現(xiàn)的功能:把A的數(shù)輸出到P0口顯示,十位和個(gè)位分開(kāi)顯示
  61. ;============================================================
  62.          DISPLAY:MOV   DPTR,#TAB
  63.              MOVC  A,@A+DPTR
  64.        MOV   SHUCHU,A         ;顯示十位
  65.        MOV   PIANXUAN,#02H    ;片選
  66.                  CALL  DELAY
  67.        MOV   SHUCHU,#0FFH
  68.        MOV   A,B              
  69.        MOVC   A,@A+DPTR
  70.          MOV   SHUCHU,A         ;顯示個(gè)位
  71.        MOV   PIANXUAN,#03H    ;片選
  72.        CALL  DELAY            ;延時(shí)
  73.        MOV   SHUCHU,#0FFH
  74.                  RET
  75. ;========================延時(shí)程序============================
  76. ;輸入;無(wú)
  77. ;輸出: 無(wú)
  78. ;實(shí)現(xiàn)的功能:延時(shí)一段時(shí)間
  79. ;============================================================
  80.           DELAY:
  81.           MOV  R6,#80
  82.        L7:MOV  R5,#80
  83.           DJNZ R5,$
  84.           DJNZ R6,L7
  85.     RET
  86. ;=======================共陽(yáng)查表數(shù)據(jù)==============================
  87.       TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H, 82H,0F8H,80H,90H  ;0-9共陽(yáng)極數(shù)據(jù)   
  88. ;=======================共陽(yáng)查表數(shù)據(jù)==============================
  89.            TAB1:DB 0EEH,0DEH,0BEH,07EH,0EDH,0DDH,0BDH,07DH
  90.           DB 0EBH,0DBH,0BBH,07BH,0E7H,0D7H,0B7H             ;反轉(zhuǎn)描碼表
  91.                 DB 66H,56H,36H,76H,65H,55H,35H,75H,63H
  92.     DB 53H,33H,73H,67H,57H,37H,77H
  93. ;=========================程序結(jié)束================================
  94.           END
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表