ORG 0000H
LJMP MAIN
ORG 0030H
;初始化
MAIN: MOV SP,#70H
MOV A,#00H
MOV R0,#00H ;行扫描计数寄存器清零
KS1: MOV R1,#00H ;显示时间长寄存器清零
;行扫描显示文字
KS2: MOV P3,#0E3H ;关闭行扫描,不显示,使移位时不出现隐亮
ACALL XS1 ;输出列数据
MOV P3,#043H ;行输出,第一行显示
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#047H ;行输出,第二行显示,以下雷同
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#04BH ;3
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#04FH ;4
CALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#053H ;5
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#057H ;6
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#05BH ;7
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#05FH ;8
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#063H ;9
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#067H ;10
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#06BH ;11
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#06FH ;12
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#073H ;13
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#077H ;14
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#07BH ;15
ACALL DELAY
MOV P3,#0E3H
ACALL XS1
MOV P3,#07FH ; 16
ACALL DELAY
L02: AJMP KS1
;**********************************************************
;延时子程序
;**********************************************************
DELAY: MOV R6,#40H ;每行扫描显示时间,AT89C2051要改R6=01H
DEL2: MOV R7,#2FH ;AT89C2051要改R7=2FH
DEL3: DJNZ R7,DEL3
DJNZ R6,DEL2
RET
YS: MOV R5,#01H ;显示间隔时间(熄灭时),AT89C2051要改R5=01H
YS1: MOV R6,#0FFH
YS2: MOV R7,#0FFH
YS3: NOP
NOP
DJNZ R7,YS3
DJNZ R6,YS2
DJNZ R5,YS1
RET
;**********************************************************
;列显示,串行
;**********************************************************
XS1: SETB P3.1
MOV SCON,#00H ;初始化串行口方式0
MOV 20H,R0
MOV A,20H ;显示第一个字(左起,即"倒"字)的左半边
MOV DPTR,#TAB11
MOVC A,@A+DPTR ;查表获取字形码
MOV SBUF,A ;送串口显示
JNB TI,$ ;等待发送完毕
CLR TI ;清发送标志00
MOV 20H,R0
MOV A,20H ;显示第一个字(即"倒"字)的右半边
MOV DPTR,#TAB12
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV 20H,R0
MOV A,20H ;显示第二个字(即"车"字)的左半边
MOV DPTR,#TAB21
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV 20H,R0
MOV A,20H ;显示第二个字(即"车"字)的右半边
MOV DPTR,#TAB22
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV 20H,R0
MOV A,20H
MOV A,R0 ;显示第三个字(即"注"字)左半边
MOV DPTR,#TAB31
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV 20H,R0
MOV A,20H ;显示第三个字(即"注"字)右半边
MOV DPTR,#TAB32
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV 20H,R0
MOV A,20H ;显示第四个字(即"意"字)的左半边
MOV DPTR,#TAB41
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV 20H,R0
MOV A,20H ;显示第四个字(即"意"字)右半边
MOV DPTR,#TAB42
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC R0
CJNE R0,#16,L01 ;16行轮回
MOV R0,#00H
L01: RET
TAB11:
DB 0FFH,0C0H,0EDH,0F6H,0C0H,0DDH,0BDH,0C0H,0FBH,0F8H,0F3H,0F4H,0EFH,09CH,073H,0CFH;
TAB12:
DB 007H,06FH,0EFH,0DFH,001H,0FDH,0FFH,003H,0FFH,00FH,0DFH,0BFH,03FH,0CFH,0F1H,0FBH;"爱",0
TAB21:
DB 0EFH,0EFH,0DFH,083H,0BAH,0BAH,0B9H,083H,0BBH,0BBH,0BBH,0BBH,083H,0BBH,0BFH,0FFH;
TAB22:
DB 07FH,07FH,07FH,003H,0FBH,0FBH,0FBH,07BH,0BBH,09BH,0DBH,0FBH,0FBH,0D7H,0EFH,0FFH;"的",1
TAB31:
DB 0EFH,0F7H,000H,0FFH,0FFH,080H,0BDH,0BDH,081H,0F7H,0D3H,0D5H,0B5H,076H,0D5H,0EFH;
TAB32:
DB 0DFH,0D7H,0DBH,0DBH,0DFH,001H,0AFH,0AFH,0AFH,0AFH,0AFH,06FH,06DH,0EDH,0F1H,0FFH;"就",2
TAB41:
DB 0FFH,0F0H,0F7H,0F0H,0F7H,0F0H,0FFH,000H,0FEH,0F6H,0F6H,0F6H,0EAH,0DCH,0BFH,0FFH;
TAB42:
DB 0FFH,00FH,0EFH,00FH,0EFH,00FH,0FFH,001H,0FFH,0FFH,007H,0FFH,0FFH,0FFH,001H,0FFH;"是",3
END
|