?? he24_89.asm
字號:
org 1000h
;===========================================================
;16X16點陣模塊實驗指導:
;一、接口連接
; 用一40芯扁平電纜把點陣模塊接口與MCS-51仿真接口對應連接
;二、工作方式設置
; 1.在連機(PC)狀態下,點擊設置欄中“仿真模式”項,型號選“Dais-52”、
; 片外RAM選“用戶”、片外ROM選“系統”。
; 2.在脫機(閃動的“P”)狀態下,直接按“增址”命令鍵,六位LED顯示“P......”,
; 當前工作方式為“內程序/外數據”
;三 文件的裝載與運行
; 1.連機(PC)狀態下,打開ASM51\HE24_89.ASM 源文件,按Ctrl+F9鍵迸行編譯、
; 連接和裝載,再按F9鍵連續運行
; 2.脫機(閃動的“P”)狀態下輸入:0→[F1]→4→[F2]→0→[EV/UN]裝載實驗程序,
; 再輸入程序入口地址“0A32”,按[EXEC]鍵運行“漢字”循環顯示程序。
;==========================================================
;===========27個漢字移位循環顯示主程序=====================
XB13: MOV R0, #7FH
CLR A
XB16: MOV @R0, A
DJNZ R0, XB16
MOV 81H, #20H
AJMP X097
;============查找與當前列對應的漢字代碼子程序====================
XB1F: MOV A, 82H ;本次掃描首址與當前列值相加
ADD A, R1 ;低八位相加
MOV 82H, A ;送DPL
MOV A, 83H ;高八位相加
ADDC A, R2 ;再加低八位進位位CY
MOV 83H, A ;送DPH
CLR A
MOVC A, @A+DPTR ;取漢字代碼
RET ; 返回
;=====================
XB4E: MOV C, 07H
MOV ACC.0, C
MOV C, 06H
MOV ACC.1, C
MOV C, 05H
MOV ACC.2, C
MOV C, 04H
MOV ACC.3, C
MOV C, 03H
MOV ACC.4, C
MOV C, 02H
MOV ACC.5, C
MOV C, 01H
MOV ACC.6, C
MOV C, 00H
MOV ACC.7, C
;=================
PUSH DPH
PUSH DPL
MOV P0,A
POP DPL
POP DPH
RET
;==========點陣掃描子程序====================
X01A: CLR A ;清列值
MOV 0EH, A ;指向零列
X023: MOV A, 0EH ;取列值
CLR C
SUBB A, #10H ;減16(十進制數)
JC X0D2 ;末滿16列繼續掃描下一列
RET ;本次掃描完畢返回主程序
X0D2: MOV 0F0H, #02H
MOV A, 0EH
MUL AB ;當前列值與“2”進行十進制調正
MOV 82H, A ;調正結果送數據指針DPTR
MOV 83H, 0F0H
LCALL XB1F ;取與當前列對應的掃描代碼
MOV 20H, A
;=====================
LCALL XB4E ;掃描代碼高八位送 P0 口
;=====================
MOV A, 0EH ;取列值
MOV 0F0H, #02H ;當前列值與“2”進行十進制調正
MUL AB
ADD A, #01H ;調正結果加1送數據指針DPTR
MOV R7, A
CLR A
ADDC A, 0F0H
MOV 82H, R7
MOV 83H, A
LCALL XB1F ;取與當前列對應的掃描代碼
;====================
PUSH DPH ;掃描代碼低八位送 P2 口
PUSH DPL
MOV P2,A
;====================
MOV A, #01H ;代碼掃描從第一行開始
MOV R6, #00H
MOV R0, 0EH ;取與當前代碼掃描對應的列值
INC R0 ;列指針加1
SJMP X083
X07E: CLR C ;當前代碼掃描對應行的查找
RLC A ;行高八位左移一位
XCH A, R6
RLC A ;行低八位帶進位左移一位
XCH A, R6
X083: DJNZ R0, X07E ;不為當前代碼掃描對應行返上繼續調正
;====================
MOV P1,A
MOV A,R6
MOV P3,A
MOV R6,#80H ;當前行鎖定顯示250u秒
DJNZ R6,$
;====================
CLR A ;關閉顯示
MOV P1,A ;行高八位清零 P1 口
INC DPTR
MOV P3,A ;行低八位清零 P3 口
POP DPL
POP DPH
;====================
INC 0EH ;列指針加1
AJMP X023 ;繼續下1行
;====================
X097: CLR A
mov p1,a
mov p3,a
;====================
X0A0: CLR A ;清掃描個數寄存器
MOV R5, A ;從第一個開始掃描
X0A2: MOV A, R5 ;取當前掃描個數
CLR C
;========= 確定要顯示的漢字個數===========; 用戶可自定義漢字個數
SUBB A, #19H ;共掃描83個漢字
JNC X0A0 ;掃描個數滿83個返回從第一個開始
MOV A, R5
;========= 確定顯示為循環方式============;用戶可自定義為移位循環方式
MOV 0F0H, #20H ;設定以完整的一個漢字為最小循環單位
MUL AB
MOV DPTR,#STLS ;指向漢字表首址
ADD A, dpl
MOV 0ah, A
MOV A, dph
ADDC A, 0F0H
MOV 09H, A
CLR A
MOV R4, A
X0BD: MOV A, R4
CLR C
SUBB A, #64H ;每個漢字掃描64次
JNC X0CF ;當前漢字掃描次數滿64次轉
MOV R2,09H
MOV R1, 0AH
ACALL X01A
INC R4 ;掃描次數加1
SJMP X0BD
X0CF: INC R5 ;掃描個數加1指向下一個漢字
SJMP X0A2
;============ 漢字代碼表======================================
STLS:
;-- 文字: 歡 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,80H,00H,80H,0FCH,80H,05H,0FEH,85H,04H,4AH,48H,28H,40H,10H,40H
DB 18H,40H,18H,60H,24H,0A0H,24H,90H,41H,18H,86H,0EH,38H,04H,00H,00H
;-- 文字: 迎 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 40H,00H,21H,80H,36H,7CH,24H,44H,04H,44H,04H,44H,0E4H,44H,24H,44H
DB 25H,44H,26H,54H,24H,48H,20H,40H,20H,40H,50H,00H,8FH,0FEH,00H,00H
;-- 文字: 選 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,40H,22H,40H,12H,40H,13H,0F8H,04H,40H,00H,40H,0F7H,0FCH,11H,20H
DB 11H,20H,12H,24H,12H,24H,14H,1CH,10H,00H,28H,00H,47H,0FEH,00H,00H
;-- 文字: 用 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,1FH,0FCH,10H,84H,10H,84H,10H,84H,1FH,0FCH,10H,84H,10H,84H
DB 10H,84H,1FH,0FCH,10H,84H,10H,84H,20H,84H,20H,84H,40H,94H,80H,88H
;-- 文字: 啟 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 01H,00H,00H,0C0H,00H,80H,1FH,0FCH,10H,04H,10H,04H,1FH,0FCH,10H,00H
DB 10H,00H,17H,0FCH,14H,04H,24H,04H,24H,04H,47H,0FCH,84H,04H,00H,00H
;-- 文字: 東 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 02H,00H,02H,00H,7FH,0FCH,04H,00H,08H,80H,08H,80H,10H,80H,1FH,0F8H
DB 00H,80H,08H,0A0H,0CH,90H,18H,88H,10H,8CH,22H,84H,01H,80H,00H,80H
;-- 文字: 達 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,40H,80H,30H,80H,10H,80H,0FH,0FCH,00H,80H,00H,80H,0E0H,80H
DB 21H,40H,21H,20H,22H,18H,24H,0CH,28H,08H,50H,02H,8FH,0FCH,00H,00H
;-- 文字: 愛 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,0F8H,3FH,90H,12H,10H,09H,20H,3FH,0FEH,22H,02H,42H,00H,3FH,0FCH
DB 04H,00H,07H,0F0H,0CH,20H,0BH,40H,10H,0C0H,63H,30H,8CH,0EH,30H,04H
;-- 文字: 思 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,1FH,0F8H,11H,08H,11H,08H,1FH,0F8H,11H,08H,11H,08H,1FH,0F8H
DB 00H,00H,01H,00H,08H,88H,48H,84H,48H,16H,0C8H,12H,07H,0F0H,00H,00H
;-- 文字: 計 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 40H,20H,20H,20H,30H,20H,20H,20H,00H,20H,0F3H,0FEH,10H,20H,10H,20H
DB 10H,20H,10H,20H,10H,20H,12H,20H,14H,20H,18H,20H,10H,20H,00H,20H
;-- 文字: 算 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 40H,40H,7EH,7EH,48H,90H,0BFH,0F8H,20H,10H,3FH,0F0H,20H,10H,3FH,0F0H
DB 20H,10H,3FH,0F0H,08H,40H,0FFH,0FEH,08H,40H,10H,40H,10H,40H,20H,40H
;-- 文字: 機 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 10H,00H,10H,0F8H,10H,88H,0FEH,88H,10H,88H,10H,88H,38H,88H,34H,88H
DB 54H,88H,50H,88H,91H,08H,11H,0AH,12H,0AH,12H,0AH,14H,06H,10H,00H
;-- 文字: 有 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 01H,00H,01H,00H,7FH,0FEH,02H,00H,04H,00H,0FH,0F0H,18H,10H,28H,10H
DB 4FH,0F0H,88H,10H,08H,10H,0FH,0F0H,08H,10H,08H,90H,08H,70H,08H,20H
;-- 文字: 限 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,0FBH,0F8H,92H,08H,93H,0F8H,0A2H,08H,0A2H,08H,93H,0F8H,8AH,80H
DB 8AH,48H,0AAH,50H,92H,20H,82H,20H,82H,10H,82H,8EH,83H,04H,82H,00H
;-- 文字: 公 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,04H,40H,06H,40H,04H,40H,08H,20H,08H,10H,10H,18H,22H,0EH
DB 43H,04H,02H,00H,04H,20H,08H,10H,11H,0F8H,3FH,18H,10H,10H,00H,00H
;-- 文字: 司 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,3FH,0FCH,00H,04H,00H,04H,7FH,0E4H,00H,04H,00H,04H,3FH,0C4H
DB 20H,44H,20H,44H,3FH,0C4H,20H,44H,20H,04H,00H,14H,00H,08H,00H,00H
;-- 文字: D --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,7FH,0E0H,20H,10H,20H,08H,20H,08H,20H,08H,20H,08H,20H,08H
DB 20H,08H,20H,08H,20H,10H,7FH,0E0H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: a --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,00H,00H,00H,00H,00H,00H,0FH,80H,10H,40H,00H,40H,0FH,40H
DB 10H,0C0H,10H,40H,10H,50H,0FH,0A0H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: i --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,01H,00H,01H,00H,00H,00H,01H,00H,01H,00H,01H,00H,01H,00H
DB 01H,00H,01H,00H,01H,00H,01H,00H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: s --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,07H,80H,08H,40H,08H,00H
DB 07H,80H,00H,40H,08H,40H,07H,80H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: 系 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,7CH,3FH,80H,02H,20H,04H,20H,08H,40H,1FH,80H,03H,20H,0CH,10H
DB 3FH,0F8H,10H,8CH,04H,0A0H,08H,90H,10H,88H,20H,84H,42H,84H,01H,00H
;-- 文字: 列 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,04H,0FFH,84H,08H,04H,11H,24H,1FH,0A4H,11H,24H,21H,24H,52H,24H
DB 8AH,24H,04H,24H,04H,24H,08H,04H,10H,04H,20H,14H,0C0H,08H,00H,00H
;-- 文字: 產 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 01H,00H,00H,80H,7FH,0FEH,08H,10H,06H,20H,24H,44H,3FH,0FEH,20H,00H
DB 20H,00H,20H,00H,20H,00H,20H,00H,40H,00H,40H,00H,80H,00H,00H,00H
;-- 文字: 品 --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,0FH,0F0H,08H,10H,08H,10H,08H,10H,0FH,0F0H,08H,10H,00H,00H
DB 7EH,0FCH,42H,84H,42H,84H,42H,84H,42H,84H,7EH,0FCH,42H,84H,00H,00H
;-- 文字: ! --
;-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --
DB 00H,00H,00H,00H,00H,00H,00H,00H,10H,00H,10H,00H,10H,00H,10H,00H
DB 10H,00H,10H,00H,10H,00H,10H,00H,10H,00H,00H,00H,10H,00H,00H,00H
;==================================================
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -