欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: Keyboard_Array單片機匯編語言源碼與仿真 [打印本頁]

作者: Ri丶chard    時間: 2018-4-16 13:15
標題: Keyboard_Array單片機匯編語言源碼與仿真
單片機Keyboard仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


鍵盤仿真匯編程序
  1.          WR273        EQU        8000H
  2.         RD244        EQU        8000H
  3.         DULA        EQU        P2.0
  4.         WELA        EQU        P2.1
  5.         ORG        0000H
  6.         AJMP        START
  7.         ORG        0030H
  8. START:        MOV        70H,#0BFH
  9.         MOV        71H,#0BFH
  10.         MOV        72H,#0BFH
  11.         MOV        73H,#0BFH
  12. LOOP1:        LCALL        DISP
  13.         LCALL        KEY        ;調用子程序KEY,得到所按下的按鍵編號值,存在RAM的7FH單元中      
  14.         MOV        A,7FH
  15.         MOV        DPTR,#TABLE
  16.         MOVC        A,@A+DPTR        ;將該鍵盤編號轉換為共陽極段碼   
  17.         MOV        73H,72H
  18.         MOV        72H,71H
  19.         MOV        71H,70H
  20.         MOV        70H,A                ;移位顯示
  21.         LJMP        LOOP1

  22. ;--------鍵盤掃描子程序--------------  
  23. KEY:        MOV        R7,#00H                ;R7存放鍵盤的列號  
  24.         MOV        A,#00H
  25.         MOV        B,#0EH
  26. KEY1:        NOP
  27.         ORL        A,B
  28.         MOV        DPTR,#WR273
  29.         MOVX        @DPTR,A                ;送掃描信號,掃描第一列   
  30.         NOP
  31.         NOP
  32.         NOP
  33.         NOP
  34.         MOV        DPTR,#RD244
  35.         MOVX        A,@DPTR
  36.         ANL        A,#0FH                ;收到的數據只保留低4位   
  37.         CJNE        A,#0FH,KEY2        ;若讀到的數據低4位不全為1,則表示有鍵按下,轉往KEY2     
  38.         INC        R7
  39.         SETB        C
  40.         MOV        A,B
  41.         RLC        A
  42.         ANL        A,#0FH                ;此時A中低4位為1101,作為掃描下一列的輸入   
  43.         CJNE        A,#0FH,KEY0
  44.         MOV        A,#0EH                ;若掃描完4列,均無鍵按下,則A的低4位裝入1110,R7裝入0,重新開始掃描      
  45.         MOV        R7,#00H
  46. KEY0:        MOV        B,A
  47.         SJMP        KEY1
  48. KEY2:   CPL        A
  49.         ANL        A,#0FH
  50.         JNB        ACC.0,KEY6
  51.         MOV        A,#00H
  52.         SJMP        KEY9
  53. KEY6:   JNB        ACC.1,KEY7
  54.         MOV        A,#01H
  55.         SJMP        KEY9
  56. KEY7:   JNB        ACC.2,KEY8
  57.         MOV        A,#02H
  58.         SJMP        KEY9
  59. KEY8:   MOV        A,#03H                ;KEY2-KEY8確定該列上哪一行的按鍵被按下,行號最終存放在A中      
  60. KEY9:   XCH        A,R7
  61.         MOV        B,#04H
  62.         MUL        AB
  63.         ADD        A,R7                ;列號*4+行號得到鍵值,鍵值布局與電路結構和掃描順序有關      
  64.         MOV        DPTR,#KTAB1
  65.         MOVC        A,@A+DPTR        ;將鍵值轉換為我為鍵盤編的號  
  66.         MOV        7FH,A                ;最終得到的鍵號存入RAM的7FH單元   
  67. KEYUP:  MOV        DPTR,#RD244
  68.         MOVX        A,@DPTR
  69.         ANL        A,#0FH
  70.         CJNE        A,#0FH,KEYUP
  71.         RET
  72. ;-----掃描結果與鍵盤編號的對應-------------
  73. KTAB1:        DB 03H,07H,0BH,0FH
  74.         DB 02H,06H,0AH,0EH
  75.         DB 01H,05H,09H,0DH
  76.         DB 00H,04H,08H,0CH
  77. ;-----數碼管顯示子程序---------------------
  78. DISP:        MOV A,70H                ;將RAM中70H-73H單元中的數據顯示在對應的數碼管上     
  79.         MOV DPTR,#0800H
  80.         MOVX @DPTR,A
  81.         MOV A,71H
  82.         MOV DPTR,#1000H
  83.         MOVX @DPTR,A
  84.         MOV A,72H
  85.         MOV DPTR,#2000H
  86.         MOVX @DPTR,A
  87.         MOV A,73H
  88.         MOV DPTR,#4000H
  89.         MOVX @DPTR,A
  90.         RET
  91. ;-----共陽極段代碼-------------------------  
  92. TABLE:        DB 0C0H,0F9H,0A4H,0B0H, 99H,92H,82H,0F8H,80H;0-8
  93.         DB 90H, 88H, 83H,0C6H,0A1H,86H,8EH
  94.         END
復制代碼



全部資料51hei下載地址:
Keyboard_Array.rar (64.82 KB, 下載次數: 6)








歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1