⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 he24_89.asm

📁 51系列单片机的汇编程序包
💻 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 + -