8155显示程序
;单片机原理与接口技术实训程序
;*********************************************************************
;* 8155显示/键盘程序(CE---A15;IO/M---A8) ;* 命令口地址 7FF0H
;* PA口地址7FF1H,输出段选信号;
;* PB口地址7FF2H,输出位选信号;
;*********************************************************************
WS DATA 30H ;显示位数寄存器
ORG 0000H
LJMP START
ORG 0030H
START: NOP
MOV DPTR,#7FF0H ;8155初始化
MOV A,#03H ;A口段码,B口位选,C口键盘输入
MOVX @DPTR,A
MOV R0,#30H ;显示内容缓冲区30H-33H;
MOV A,#10H ;首位显示"P" ,其他位不显示
MOV @R0,A
INC R0
MOV R7,#04H
MOV A,#10H
M1: MOV @R0,A
INC R0
DJNZ R7,M1
LCALL DIS
M2: LCALL DISP
SJMP M2
;***************************************************************
;* 显示子程序
;***************************************************************
DISP: MOV R1,#34H ;显示缓冲区段码
MOV R2,#7FH ;最高位开始显示
MOV R7,#04H
DISP1: ;MOV A,@R0
;CLR C
;SUBB A,#0FFH
;JZ DISP2
MOV DPTR,#7FF1H
MOV A,@R1
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
LCALL D20MS
INC R1
MOV A,R2
RR A
MOV R2,A
DISP2: DJNZ R7,DISP1
RET
D20MS1: ;MOV R5,#10H
DTM1: ;MOV R6,#80H
DTM61: ;NOP
;DJNZ R6,DTM6
;DJNZ R5,DTM
D20MS: MOV R5,#10H
DTM: MOV R6,#40H
DTM6: NOP
DJNZ R6,DTM6
DJNZ R5,DTM
RET
;*****************************************************************
;* 查段码子程序
;*****************************************************************
DIS: NOP
MOV R0,#30H
MOV R7,#04H
MOV R1,#34H
MOV DPTR,#DISTAB DIS1: MOV A,@R0
MOVC A,@A+DPTR
MOV @R1,A
INC R0
INC R1
DJNZ R7,DIS1
RET
DISTAB: DB 0C0H,0F9H,0A4H,0B0H ;0,1,2,3
DB 99H,92H,082H,0F8H ;4,5,6,7
DB 80H,90H,88H,83H ;8,9,A,b
DB 0C6H,0A1H,86H,8EH ;C,d,E,F
DB 8CH,0C1H,91H,7FH,0FFH ;P,U,Y,.,空格
DB 0F7H ;_
END