当前位置:文档之家› 【单片机实验七】键盘扫描及显示设计实验

【单片机实验七】键盘扫描及显示设计实验

程序及注解见附件CLEAR: MOV DPTR, #B_8255 ;清屏 MOV A,#00H MOVX @DPTR,A RET DIS: PUSH ACC ;显示子程序 PUSH 00H PUSH 03H MOV R0,#50H ;显示缓冲首地址 MOV R3,#0DFH ;显示扫描值AGAIN: MOV A,#0FFH ;关闭显示 MOV DPTR,#A_8255 MOVX @DPTR,A MOV A,@R0 MOV DPTR,#DSEGS ;数码管段表地址 MOVC A,@A+DPTR ;查表 MOV DPTR,#B_8255 ;送段显示 MOVX @DPTR,A MOV A,R3 MOV DPTR,#A_8255 MOVX @DPTR,A ACALL DL1MS INC R0 ;显示缓冲加1 MOV A,R3 JNB ACC.0,OUT ;扫描结束否 RR A ;向右移一位 MOV R3,A AJMP AGAIN OUT: POP 03H POP 00H POP ACC RET ;数码管段显示值DSEGS: DB 03FH, 06H,05BH,04FH,066H,06DH,07DH, 07H DB 07FH,06FH,077H,07CH,039H,05EH,079H,071H DL1MS: MOV R7,#01H DL0: MOV R6,#080H DL1: DJNZ R6,DL1 DJNZ R7,DL0 RET PUTBUF: PUSH 00H ;保存键值到缓冲RAM 中 PUSH ACC MOV A,R5 MOV R0,A POP ACC MOV @R0,A DEC R5 CJNE R5,#04FH,GOBACK MOV R5,#55H ;重置缓冲地址GOBACK: POP 00H RET END ;==============================================================; 文件名称: KeyScan.Asm
; 功能描述: 8255扩展IO, 完成键盘及数码管显示实验.
; 按下按键, 数码管显示相应键值.
;==============================================================A_8255 EQU 7F00H ;8255端口定义
B_8255 EQU 7F01H
C_8255 EQU 7F02H
CON_8255 EQU 7F03H
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV 50H,#00H ;键值缓冲清0
MOV 51H,#00H
MOV 52H,#00H
MOV 53H,#00H
MOV 54H,#00H
MOV 55H,#00H
MOV R5, #55H
MOV A, #81H MOV DPTR, #CON_8255 ;8255控制端口
MOVX @DPTR, A ;写入控制字
BEGIN: LCALL DIS ;调用显示子程序
LCALL CLEAR ;清屏
LCALL CCSCAN ;调用键扫子程序
JNZ INK1 ;判是否有键按下
LJMP BEGIN
INK1: LCALL DIS
LCALL DL1MS ;消除按键抖动
LCALL DL1MS
LCALL CLEAR
LCALL CCSCAN
JNZ INK2
AJMP BEGIN
INK2: MOV R2,#0FEH
MOV R4,#00H ;从第0列开始扫描
COLUM: MOV DPTR,#A_8255
MOV A,R2
MOVX @DPTR,A ;写入列扫描值
MOV DPTR, #C_8255
MOVX A,@DPTR
JB ACC.0,LINE1 ;判第0行的值
MOV A,#00H ;第0行
AJMP KCODE
LINE1: JB ACC.1,LINE2
MOV A,#04H ;第1行
AJMP KCODE
LINE2: JB ACC.2,LINE3
MOV A,#08H ;第2行
AJMP KCODE
LINE3: JB ACC.3,NEXT
MOV A, #0CH ;第3行
KCODE: ADD A,R4 ;得到键值
ACALL PUTBUF
PUSH ACC
KON: ACALL DIS
ACALL CLEAR
ACALL CCSCAN
JNZ KON
POP ACC
NEXT: INC R4
MOV A,R2
JNB ACC.4,KERR
RL A
MOV R2,A
AJMP COLUM
KERR: AJMP BEGIN
CCSCAN: MOV DPTR,#A_8255 ;按键扫描
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#C_8255
MOVX A,@DPTR
CPL A ;取反
ANL A,#0FH
RET。

相关主题