EDN首页   博客首页

日志档案

发表于 2007-9-10 21:30:26

0

标签: 无标签

16矩阵键盘程序

/*     16矩阵键盘扫描程序
    1      2       3        4 
    5      6       7        8
    9      0       A       B
    C     D       E       F
    
     P3口扫描键盘输入,
   
    P1口控制显示输入值    */
                  
   ORG 0000H
   AJMP MAIN
   ORG 0030H
 MAIN:    MOV A ,#00H
 START:  MOV P3 ,#0FH         
   MOV  A ,P3
   CJNE A ,#0FH ,GO1    /*有键按下就调到GO1*/
   
   ACALL DEL10MS     /*延时维持数码管点亮显0*/
   AJMP START
  GO1:    ACALL DEL10MS     /*延时10ms去抖*/
    CJNE A ,#0FH ,KEY_SCAN  /*无键盘按下就返回*/
   AJMP START
 KEY_SCAN: MOV  P3,#0EFH     /*键盘扫描 P3.4开始*/
   JNB  P3.0 ,L1
   JNB  P3.1 ,L5
   JNB  P3.2 ,L9
   MOV  P3 ,#0DFH         /*扫描P3.5*/
   JNB  P3.0 ,L2
   JNB  P3.1 ,L6
   JNB  P3.2 ,L0
   MOV  P3 ,#0BFH         /*扫描P3.6*/
   JNB  P3.0 ,L3
   JNB  P3.1 ,L7
   MOV  P3 ,#7FH       /*扫描P3.7*/
   JNB  P3.0 ,L4
   JNB  P3.1 ,L8
   AJMP MAIN

  L0: MOV  A ,#00H      /*显0子程序*/
   AJMP GOON
  L1: MOV  A ,#01H     /*显1*/
   AJMP GOON
  L2: MOV  A ,#02H     /*显2*/
   AJMP GOON
  L3: MOV  A ,#03H      /*显3*/
   AJMP GOON
  L4: MOV  A ,#04H      /*显4*/
   AJMP GOON
  L5: MOV  A ,#05H      /*显5*/
   AJMP GOON
  L6: MOV  A ,#06H     /*显6*/
   AJMP GOON
  L7: MOV  A ,#07H     /*显7*/
   AJMP GOON
  L8: MOV  A ,#08H     /*显8*/显
   AJMP GOON
  L9: MOV  A ,#09H     /*显9*/
   AJMP GOON

  GOON:    MOV DPTR ,#DIS_TAB      /*调取数据表数据*/
   MOVC A ,@A+DPTR
   MOV P1 ,A     /*数据由P1显示*/
   LJMP MAIN 
   
   ORG 0250H
 DEL10MS: MOV R5 ,#0BH    /*10毫秒延时*/
 D1:  MOV R6 ,#02H
 D2:  MOV R7 ,#0FFH
 D3:  DJNZ R7 ,D3
   DJNZ R6 ,D2
   DJNZ R5 ,D1
   RET

   ORG 0300H
 DIS_TAB: DB 0C0H,0F9H,0A4H,0B0H,099H  /* 数据表显示:0,1,2,3,4 */
   DB 092H,082H,0F8H,080H,090H  /* 数据表显示:5,6,7,8,9,*/
   
   END


 

系统分类: 单片机   |   用户分类: 单片机程序   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(395)    回复(1)  

投一票您将和博主都有获奖机会!