编辑: 雨林姑娘 2018-07-14

ANL A,#0FH ;

ADD A,73H ;

CLR C ;

两次值相同去再扫描一次(按键未松) SUBB A,74H ;

JZ KEY1 ;

MOV R1,#00H ;

按键已松.R1 作计数器 MOV R5,#10H ;

16 个键 SEARCH: MOV DPTR,#KTABLE ;

键值表首址 MOV A,R1 ;

17 MOVC A,@A+DPTR ;

查键表值 CLR C ;

SUBB A,74H ;

比较读入键值与键值表数据 JZ FIND ;

相同则键值有效,去处理显示缓冲区 INC R1 ;

不相同比较下一个键值表数据 DJNZ R5,SEARCH ;

AJMP KEY ;

16 个键值表数据比较完 FIND: MOV A,R1 ;

键值有效准备显示 MOV R5,A ;

R1 数值与键盘标称值(0-F)相同 MOV R7,#05H ;

MOV R0,#79H ;

显示缓冲区(7AH-75H)数据向前移位 MOV R1,#7AH ;

ROL: MOV A,@R0 ;

MOV @R1,A ;

DEC R0 ;

DEC R1 ;

DJNZ R7,ROL ;

MOV 75H,R5 ;

新读键盘标称值(0-F)送显示缓冲区 75H AJMP KEY ;

LED: MOV DPTR,#6003H ;

显示子程序 MOV A,#80h ;

8255(2)初始化 MOVX @DPTR,A ;

SHOW: MOV R0,#75h ;

显示缓冲区首地址 MOV R2,#01h ;

位码 MOV A,R2 ;

LOOP: MOV DPTR,#6001H ;

位码送 PB 口MOVX @DPTR,A ;

MOV DPTR,#6000H ;

PA 口送全黑字形码 MOV A,#7FH ;

MOVX @DPTR,A ;

MOV DPTR,#LTABLE ;

字形表首地址 MOV A,@R0 ;

取显示缓冲区值 MOVC A,@A+DPTR ;

取字形码 MOV DPTR,#6000H ;

字形码送 PA 口MOVX @DPTR,A ;

ACALL DELAY1MS ;

软件延时 INC R0 ;

指向下一显示缓冲区地址 MOV A,R2 ;

JB ACC.5,LOOP1 ;

第六位显示完? RL A ;

未完显示下一位 MOV R2,A ;

18 AJMP LOOP ;

LOOP1: RET ;

第六位显示完返回 DELAY12MS: MOV R3,#0FFH ;

DLAY0: MOV R4,#0FFH DLAY1: DJNZ R4,DLAY1 DJNZ R3,DLAY0 RET DELAY1MS: MOV R3,#02H ;

DELAY0: MOV R4,#0FFH DELAY1: DJNZ R4,DELAY1 DJNZ R3,DELAY0 RET LTABLE: DB 40H,79H,24H,30H,19H ;

字形表 DB 12H,02H,78H,00H,10H DB 08H,03H,46H,21H,06H DB 0EH KTABLE: DB 7EH,0BEH,0BDH,0BBH ;

键值表 DB 0DEH,0DDH,0DBH,0EEH DB 0EDH,0EBH,0E7H,0D7H DB 0B7H,77H,........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题