?? 多字顯示.asm
字號:
;多字移動
;一個字占32個字節(jié),1K可以存放1K=1024字節(jié)/32=32個字,C51=4K=128個字,C52=8K=256個字。
;但程序占用160個字節(jié)(相當(dāng)于5個字的空間),最終可以顯示的字為C51=123個字,C52=251個字。
;超過后單片機將存儲不下。
ORG 000H
JMP MIAN
ORG 030H
MIAN:MOV P3,#00 ;關(guān)閉端口
MOV P1,#0FFH
MOV P0,#00
MOV P2,#00
CALL DELAY ;延時1ms
;MOV R5,#2 ;移動列的數(shù)量(列數(shù)乘2)
MOV A,#4 ;顯示幾個字
MOV B,#128 ;一個字=32個碼
MUL AB
MOV 22H,A ;存放1~8個字的數(shù)量
MOV 23H,B ;存放8的倍數(shù)個字的數(shù)量
;如50個字:50×32=1600=0640H,則DPH處為06H=6,DPL處為40H=64
;簡單算法:50÷8=6余2,6為DPH處數(shù),余的2×32=64為DPL數(shù)
MOV DPTR,#TABLE1 ;賦查表初址
MOV R0,DPL ;保存DPTR初值,R0、R1記錄取碼進(jìn)度
MOV R1,DPH
MOV 20H,DPL ;20H、21H保持DPTR初值不變
MOV 21H,DPH
LOOP: MOV R7,#5 ;每屏停留時間
L1: MOV R6,#128 ;每屏16個碼
MOV R4,#00 ;掃描指針清零
MOV DPL,R0 ;取碼指針存入DPL
MOV DPH,R1
L16: MOV A,R4 ;掃描指針存入A
MOV P1,A ;掃描輸出
INC R4 ;掃描指針加1
CLR A ;A清零
MOVC A,@A+DPTR ;查表送A
MOV P0,A ;送P0口顯示
INC DPTR ;取碼指針加1
CLR A ;A清零
MOVC A,@A+DPTR ;查表送A
MOV P2,A ;送P2口顯示
INC DPTR ;取碼指針加1
CALL DELAY ;掃描延時1ms
MOV P0,#00 ;清除屏幕
MOV P2,#00
DJNZ R6,L16 ;1屏是否完成?
DJNZ R7,L1 ;每屏停留時間是否到了?
MOV R0,DPL ;如字不需移動,用該指令
MOV R1,DPH
MOV A,R0 ;如字需移動,用該指令
ADD A,R5 ;如大于256,C=1
MOV R0,A
JNC DP
INC R1
DP: MOV A,20H ;DPL初值
ADD A,22H ;如大于256,C=1。因DPL初值在90H以上,顯示4個字后DPH將加1,導(dǎo)致判斷失誤
MOV A,DPH
SUBB A,21H ;已顯示字的數(shù)量(乘8)
CJNE A,23H,LOOP ;DPH中的字是否完成?
CLR C
MOV A,DPL
SUBB A,20H ;已顯示字的數(shù)量
CJNE A,22H,LOOP ;DPL中的字是否完成?
JMP MIAN
DELAY:MOV R2,#2 ;延時1ms
D1 :MOV R3,#248
DJNZ R3,$
DJNZ R2,D1
RET
TABLE1:
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0DFH,0FFH,0FFH,0FFH,0DFH,0FFH,0FFH,0FFH,0DFH,000H,003H,0FFH,0DFH,080H,007H,0FFH,0DFH,0BFH,0DFH,0FFH,0DFH,0BFH,0DFH
DB 0FFH,0DFH,0BFH,0DFH,0E0H,000H,03FH,0DFH,0E7H,0DFH,0BFH,0DFH,0FFH,0DFH,0BFH,0DFH,0FFH,0DFH,0BFH,0DDH,0FFH,0DFH,000H,00DH,0FFH,09FH,0BFH,0FBH,0FFH,09FH,0BFH,0FBH
DB 0FFH,0DEH,07FH,0F7H,0FFH,0F1H,0FFH,0F7H,0FFH,087H,0FFH,0EFH,0F8H,000H,0FFH,0CFH,0C0H,0DFH,007H,09FH,0E7H,0DFH,0F1H,03FH,0EFH,0DFH,0FCH,07FH,0FFH,0DFH,0F0H,03FH
DB 0FFH,0DFH,083H,08FH,0FFH,0C0H,00FH,0C7H,0FFH,0C0H,0FFH,0E7H,0FFH,0DFH,0FFH,0E3H,0FFH,09FH,0FFH,0F3H,0FFH,0DFH,0FFH,0F7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FDH,0FFH,0FFH,0FFH,0FDH,0FFH,0FFH,0FFH,0FDH,0FFH,0E7H,0FFH,0FDH
DB 0FFH,0C7H,0E7H,0F9H,0FFH,087H,0C7H,0FBH,0FFH,02FH,0C7H,0FBH,0FEH,06FH,08FH,0F3H,0FCH,0EFH,0AFH,0F7H,0F9H,0EFH,04FH,0E7H,0F3H,0EEH,0CFH,0EFH,0C7H,0ECH,0CFH,0CFH
DB 0E7H,0E9H,0DFH,09FH,0EFH,0DBH,0DFH,09FH,0FFH,0D7H,0DFH,03FH,0FFH,0C7H,0DEH,07FH,0FFH,08FH,0DCH,0FFH,0FFH,01FH,0D1H,0FFH,0FEH,03FH,0C3H,0FFH,0FCH,03FH,087H,0FFH
DB 0FEH,07EH,00FH,0FFH,0FFH,07EH,03FH,0FFH,0FFH,0FEH,07FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;"鄉(xiāng)",1
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0DFH,0FFH,0FFH,0FFH,0DFH,0FFH,0FFH,0FFH,0DFH,000H,003H,0FFH,0DFH,080H,007H,0FFH,0DFH,0BFH,0DFH,0FFH,0DFH,0BFH,0DFH
DB 0FFH,0DFH,0BFH,0DFH,0E0H,000H,03FH,0DFH,0E7H,0DFH,0BFH,0DFH,0FFH,0DFH,0BFH,0DFH,0FFH,0DFH,0BFH,0DDH,0FFH,0DFH,000H,00DH,0FFH,09FH,0BFH,0FBH,0FFH,09FH,0BFH,0FBH
DB 0FFH,0DEH,07FH,0F7H,0FFH,0F1H,0FFH,0F7H,0FFH,087H,0FFH,0EFH,0F8H,000H,0FFH,0CFH,0C0H,0DFH,007H,09FH,0E7H,0DFH,0F1H,03FH,0EFH,0DFH,0FCH,07FH,0FFH,0DFH,0F0H,03FH
DB 0FFH,0DFH,083H,08FH,0FFH,0C0H,00FH,0C7H,0FFH,0C0H,0FFH,0E7H,0FFH,0DFH,0FFH,0E3H,0FFH,09FH,0FFH,0F3H,0FFH,0DFH,0FFH,0F7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;"故",0
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FDH,0FFH,0FFH,0FFH,0FDH,0FFH,0FFH,0FFH,0FDH,0FFH,0E7H,0FFH,0FDH
DB 0FFH,0C7H,0E7H,0F9H,0FFH,087H,0C7H,0FBH,0FFH,02FH,0C7H,0FBH,0FEH,06FH,08FH,0F3H,0FCH,0EFH,0AFH,0F7H,0F9H,0EFH,04FH,0E7H,0F3H,0EEH,0CFH,0EFH,0C7H,0ECH,0CFH,0CFH
DB 0E7H,0E9H,0DFH,09FH,0EFH,0DBH,0DFH,09FH,0FFH,0D7H,0DFH,03FH,0FFH,0C7H,0DEH,07FH,0FFH,08FH,0DCH,0FFH,0FFH,01FH,0D1H,0FFH,0FEH,03FH,0C3H,0FFH,0FCH,03FH,087H,0FFH
DB 0FEH,07EH,00FH,0FFH,0FFH,07EH,03FH,0FFH,0FFH,0FEH,07FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;"鄉(xiāng)",1
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -