📄 复件 tp55kd.asm
字号:
;--------------------------------------------------------------
C8255 EQU 0C006H ;8255命令口地址
P8255A EQU 0C000H ;8255 PA口地址
P8255B EQU 0C002H ;8255 PB口地址
P8255C EQU 0C004H ;8255 PC口地址
;---------------------------------------------------------------
AX EQU 1CH
AL EQU 1CH
AH EQU 1DH
BL EQU 1EH
DX EQU 22H
DL EQU 22H
;---------------------------------------------------------------
ORG 2080H
LD SP,#0FCH
LCALL DELAY ;延时
LDB AL,#82H ;PB口输入,PA,PC口输出
STB AL,C8255[0] ;C8255[0]是用来设置8255的工作方式的寄存器
LDB AL,#08H ;使PC3置1,PC3是对应用来控制74LS244的使能控制段,即控制led的亮
STB AL,P8255C
KB_DIS:
SCALL RD_KB ;读键子程序
JBS AL,4,KB_DIS ;等待
SCALL DISP ;显示子程序
SCALL DELAY
SJMP KB_DIS ;循环扫描
;---------------------------------------------------------------
DISP:
LDB DL,DL_DAT[AX] ;显示键值
STB DL,P8255A
RET
;---------------------------------------------------------------
RD_KB:
LDB BL,#0AH ;键盘扫描第一行 0000 1010 将pc1置1
STB BL,P8255C[0]
SKIP
SKIP
LDB AL,P8255B[0] ;读键值
XORB AL,#0FFH
JNE KEYVAL ;判键是否按下
LDB BL,#09H ;扫描第二行 0000 1001 奖pc0置1
STB BL,P8255C[0]
SKIP
SKIP
LDB AL,P8255B[0]
XORB AL,#0FFH
JE NOKEY
KEYVAL: ;计算键码
ANDB BL,#01H
SHL BL,#03H
LDB AH,AL ;AX中的值即代表偏移量
LDB AL,#0FFH
SHIFT: INCB AL
SHRB AH,#01H
JNC SHIFT
ORB AL,BL
SCALL DELAY
SJMP KBEXIT
NOKEY: LD AL,#10H
KBEXIT:
RET
;---------------------------------------------------------------
DELAY: LD DX,#0F00H ;延时子程序
DELAY1: DEC DX
JNE DELAY1
RET
;---------------------------------------------------------------
DL_DAT: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7 06H,4FH,6DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,F 6FH 7CH 5EH 71H
;---------------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -