//实验六
ORG 0000H
AJMP KD1
ORG 0100H
KD1: MOV A, #81H ;8255初始化,PA,PB基本输出
;方式, PC低四位输入方式
MOV DPTR, #0303H ;地址需要修改成控制口地址
MOVX @DPTR, A
KEY1: ACALL KS1 ;调用判断是否有键闭合子程序
JNZ LK1 ;有键闭合转LK1
ACALL DSP8255 ;调用8255动态显示子程序,延时6 ms
AJMP KEY1
LK1: ACALL DSP8255
ACALL DSP8255 ;调用两次显示,延时12 ms
ACALL KS1
JNZ LK2
ACALL DSP8255 ;调用8255动态显示子程序,延时6 ms
AJMP KEY1
LK2: MOV R2, #0EFH ;11101111
MOV R4, #00H
LK3: MOV DPTR, #0301H ;需要改成B口地址
MOV A, R2
MOVX @DPTR, A
INC DPTR
MOVX A, @DPTR
JB ACC.0, LONE
MOV A, #00H
AJMP LKP
LONE: JB ACC.1, LTWO
MOV A, #04H
AJMP LKP
LTWO:JB ACC.2, LTHR
MOV A, #08H
AJMP LKP
LTHR: JB ACC.3, NEXT
MOV A, #0CH
LKP: ADD A, R4
PUSH ACC
MOV R5,A
LK4: ACALL DSP8255
ACALL KS1
JZ LK4
POP ACC
AJMP LK1
NEXT: INC R4
MOV A, R2
JNB ACC.1, KND
RR A
MOV R2, A
AJMP LK3
KND: AJMP KEY1
KS1: MOV DPTR, #0301H ;地址需要改成B口地址
MOV A, #00H
MOVX @DPTR, A
INC DPTR
MOVX A, @DPTR ;默认在按键按下前c口为高电平
CPL A
ANL A, #0FH
RET
DSP8255: MOV A,R5
MOV DPTR, #PTRN ;指向段数据表首地址
MOVC A, @A+DPTR ;查表,得段数据
MOV DPTR, #0300H ;地址需要修改为A口地址
MOVX @DPTR, A ;输出段数据
CALL D1MS ;延时1 ms
PASS: RET ;返回
D1MS: MOV R7, #02H ;延时1 ms子程序
DMS: MOV R6, #0FFH
DJNZ R6, $
DJNZ R7, DMS
RET
PTRN:DB 0c0H, 8eH, 86H, 0a1H ;段数据表 0 F E D
DB 0f9H, 0a4H, 0b0H, 0c6H ; 1 2 3 C
DB 99H, 92H, 82H, 83H ; 4 5 6 B
DB 0f8H, 80H, 90H, 88H ; 7 8 9 A
END
博文51单片机汇编语言实验8255键盘显示设计效果视频演示.
本文介绍的内容完整的工程文件我会放在附件里,需要者自取,放的时候都是免费,它会自己涨,链接失效或者需要的可以在评论区留言,我直接发给你。本文附件链接如下: