标题:
矩阵键盘按键显示数字1-30汇编程序
[打印本页]
作者:
daniu
时间:
2014-12-27 18:09
标题:
矩阵键盘按键显示数字1-30汇编程序
;=================================================================
;程序编写人:兰建
;编写地点:51hei培训机构
;时间:6月4日上午星期四
;功能:矩阵键盘在P1口,利用反转法读取键值,16个独立按键中的1-15号
;按键均有两个功能,定义16号按键为功能键,按下不显示任何数字,当按
;住这个案件不松,再按下1-15号按键时,数码显示16-30.
;=======================开始初始化================================
SHUCHU EQU P0 ;定义P0口为输出口
PIANXUAN EQU P2 ;设置P2.0为片选
JIANPAN EQU P1 ;键盘接口
;========================程序开始================================
ORG 00H ;程序开始
JMP START ;跳到START
ORG 0030H ;入口地址
START:
MOV PIANXUAN,#05 ;片选
MOV SHUCHU,#0FFH ;上电默认不显示
MOV R0,#00H ;顺序码清零
MOV 30H,#00H ;键值存储单元清零
LOOP:
MOV JIANPAN,#0F0H ;把P1口高四位设为输入,同时把低四位设为0
MOV A,JIANPAN ;读P1口高四位列线
ANL A,#0F0H ;屏蔽低四位
MOV B,A ;保存高四位列线
MOV JIANPAN,#0FH ;把P1口低四位设为输入,同时把高四位设为0
MOV A,JIANPAN ;读取P1口低四位行线
ANL A,#0FH ;屏蔽高四位
ORL A,B ;列线和行线合并
CJNE A,#0FFH,KEY ;判断是否右键按下,右则跳到按键处理
JMP LOOP ;没有返回继续查询
KEY:
MOV 30H,A ;保存键值
MOV DPTR,#TAB1 ;指向键值表
MOV R0,#0FFH ;FF+1=0所以R0里面放FF,既可以显示0
L1:
INC R0 ;顺序码加1
MOV A,R0 ;
MOVC A,@A+DPTR ;查键值表
CJNE A,#77H,L2 ;判断是否键值为表格最后一个
JMP LOOP ;相等表示没按键按下或者查到最后了,返回重新查询
L2:
CJNE A,30H,L1
CALL JISUAN ;计算处理分离十位和个位
CALL DISPLAY ;动态显示十位和个位
JMP LOOP ;返回、重新查询
;========================计算子程序=========================
;输入:30H
;输出:"A和B"
;实现的功能:把30H的数据的十位和个位分离出来
;============================================================
JISUAN:INC R0
MOV A,R0 ;数据放在A中
MOV B,#10 ;除数放在B中
DIV AB ;商放在A中,余数放在B中
RET
;========================显示子程序==========================
;输入:"A"
;输出:"P0口"
;实现的功能:把A的数输出到P0口显示,十位和个位分开显示
;============================================================
DISPLAY:MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SHUCHU,A ;显示十位
MOV PIANXUAN,#02H ;片选
CALL DELAY
MOV SHUCHU,#0FFH
MOV A,B
MOVC A,@A+DPTR
MOV SHUCHU,A ;显示个位
MOV PIANXUAN,#03H ;片选
CALL DELAY ;延时
MOV SHUCHU,#0FFH
RET
;========================延时程序============================
;输入;无
;输出: 无
;实现的功能:延时一段时间
;============================================================
DELAY:
MOV R6,#80
L7:MOV R5,#80
DJNZ R5,$
DJNZ R6,L7
RET
;=======================共阳查表数据==============================
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H, 82H,0F8H,80H,90H ;0-9共阳极数据
;=======================共阳查表数据==============================
TAB1:DB 0EEH,0DEH,0BEH,07EH,0EDH,0DDH,0BDH,07DH
DB 0EBH,0DBH,0BBH,07BH,0E7H,0D7H,0B7H ;反转描码表
DB 66H,56H,36H,76H,65H,55H,35H,75H,63H
DB 53H,33H,73H,67H,57H,37H,77H
;=========================程序结束================================
END
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1