ORG 0000H
LJMP MAIN
ORG 0030H
;初始化
MAIN: MOV SP,#70H
MOV A,#00H
MOV R0,#00H ;行掃描計數(shù)寄存器清零
KS1: MOV R1,#00H ;顯示時間長寄存器清零
;行掃描顯示文字
KS2: MOV P3,#0E3H ;關(guān)閉行掃描,不顯示,使移位時不出現(xiàn)隱亮
ACALL XS1 ;輸出列數(shù)據(jù)
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,$ ;等待發(fā)送完畢
CLR TI ;清發(fā)送標(biāo)志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
|