ORG 0000H
AJMP MAIN
ORG 0003H
AJMP EX0INT
ORG 000BH
AJMP T0INT
ORG 0030H
MAIN: MOV TMOD,#01H
SETB EA
SETB EX0 ;外中斷EX0接按鍵
SETB IT0 ;下降沿觸發(fā)
SETB ET0 ;定時器和T0,10MS中斷,作為按鍵防抖延時
SETB TR0
MOV TH0,#0D8H ;10MS定時常數(shù)
MOV TL0,#0F0H
MAIN1: MOV DPTR,#TAB ;字碼表初址賦值
MOV R0,#2
MOV R1,#0FEH ;列控制碼
MOV R3,#8 ;列數(shù)
MOV R4,#128 ;移動" "及 MY QQ等19個字符,,中間3 個空格及"I"算1屏。以128屏計
CM: JNB F0,$ ;判斷按鍵標(biāo)志位,0暫停,1流動
MOV R5,#4 ;每屏反復(fù)顯示4次
MOV R3,#8 ;列數(shù)
C1: MOV R2,#0 ;取字指針(反向,指針從最后一個字節(jié)開始,即#150)
C8: MOV P2,#0FFH ;關(guān)顯示
MOV A,R2 ;
MOVC A,@A+DPTR ;取當(dāng)前列的顯示字碼的一個字節(jié)
MOV P0,A ;送1~8行控制口
INC R2 ;(反向,指針-1)
MOV A,R1
MOV P2,A ;送列控制碼
ACALL D5MS ;顯示5MS
RL A ;列控制碼左移,顯示下一列(RR A,則從左向右流動)
MOV R1,A
DJNZ R3,C8 ;未顯示8 列,繼續(xù)
MOV R3,#8
DJNZ R5,C1 ;未顯示4次,繼續(xù)
INC DPTR ;一屏反復(fù)顯示5次完,字碼表初值加1(DPTR要-1)
DJNZ R4,CM ;128屏未移動完,繼續(xù)
AJMP MAIN1 ;128屏顯示完,返回,重新從" "開始顯示
EX0INT: JNB 7FH,RTI ;10MS未到,跳出中斷
CPL F0 ;10MS到,按鍵標(biāo)志位求反。0 暫停。1 流動
RTI: RETI
T0INT: MOV TH0,#0D8H ;重置定時常數(shù)
MOV TL0,#0F0H
SETB 7FH ;位尋址的2FH的最高位7FH,作10MS到標(biāo)志位,置1
RETI
D5MS: MOV R6,#10
MOV R7,#248
DJNZ R7,$
DJNZ R6,$-4
RET
TAB: ;(0) M(1) Y(2) (3) Q(4) Q(5) (6) I(7)
; S(8) (9) 5(10) 7(11) 8(12) 7(13) 4(14) 3(15)
; 9(16) 3(17) 3(18)
DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H;" ",0
DB 0FFH, 00EH, 070H, 0C0H, 078H, 006H, 0FFH, 000H;"M",1
DB 001H, 003H, 00CH, 0F8H, 00CH, 003H, 001H, 000H;"Y",2
DB 000H;" ",3
DB 000H, 03EH, 0C3H, 081H, 0A1H, 0C3H, 07EH, 000H;"Q",4
DB 000H, 03EH, 0C3H, 081H, 0A1H, 0C3H, 07EH, 000H;"Q",5
DB 000H;" ",6
DB 000H, 0FFH,000H, 000H;"I",7
DB 066H, 0C9H, 089H, 089H, 091H, 091H, 062H, 000H;"S",8
DB 000H;" ",9
DB 000H, 04FH, 085H, 085H, 085H, 085H, 079H, 000H;"5",10
DB 000H, 001H, 001H, 081H, 071H, 01DH, 003H, 000H;"7",11
DB 000H, 036H, 0C9H, 089H, 089H, 089H, 0D9H, 026H;"8",12
DB 000H, 001H, 001H, 081H, 071H, 01DH, 003H, 000H;"7",13
DB 000H, 030H, 038H, 02CH, 026H, 021H, 0FFH, 020H;"4",14
DB 000H, 062H, 081H, 081H, 089H, 089H, 076H, 000H;"3",15
DB 000H, 04EH, 091H, 091H, 091H, 053H, 03EH, 000H;"9",16
DB 000H, 062H, 081H, 081H, 089H, 089H, 076H, 000H;"3",17
|