📄 1
字号:
页 1
05-15-05
15:13:08
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
; **********************************
; * *
; * 四字16*16点阵电子屏字符显示器 *
; * AT89C52 12MHZ晶振 *
; * 2005.5.10 LRM *
; **********************************
;显示字用查表法,不占内存,用四个16*16共阳LED点阵显示,
;效果:向上滚动显示字,每次四个,重复循环。
;R2:行扫描地址(从00-0FH)。
;R3:滚动显示时控制移动速度,也可控制静止显示的时间。
;************;
;中断入口程序;
;************;
;
ORG 0000H
0000 02002C LJMP START
ORG 0003H
0003 32 RETI
ORG 000BH
000B 0200A9 LJMP INTT0
ORG 0013H
0013 32 RETI
ORG 001BH
001B 32 RETI
ORG 0023H
0023 32 RETI
ORG 002BH
002B 32 RETI
;
;************;
; 初始化程序 ;
;************;
;
;
;************;
; 主程序 ;
;************;
;
002C 752000 START: MOV 20H,#00H ;清标志,00H为1帧扫描结束标志
002F 74FF MOV A,#0FFH ;端口初始化
0031 F590 MOV P1,A
0033 F5A0 MOV P2,A
0035 F5B0 MOV P3,A
0037 F580 MOV P0,A
0039 C296 CLR P1.6 ;串行寄存器打入输出端控制位
003B 758901 MOV TMOD,#01H ;使用T0作16位定时器,行扫描用。
003E 758CFC MOV TH0,#0FCH ;1ms初值(12MHZ)
0041 758A18 MOV TL0,#18H
E:\楼然苗\应用源程序\四字显示程序\四字显示汇编程序\4_16.ASM
页 2
05-15-05
15:13:08
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0044 759800 MOV SCON,#00H ;串口0方式传送显示字节
0047 75A882 MOV IE,#82H ;T0中断允许,总中断允许
004A 758170 MOV SP,#70H
004D 120098 LCALL DIS1 ;显示准备,黑屏,1.5秒
0050 90013E MAIN: MOV DPTR,#TAB
0053 12005E LCALL MOVDISP ;逐排显示,每次四字)
0056 90013E MOV DPTR,#TAB
0059 120080 LCALL MOVDISP1 ;滚动显示,每排四字)
005C 0150 AJMP MAIN
;
;
;********************;
; 四字逐排显示子程序 ;
;********************;
;每次四字移入移出显示方式,入口时定义好DPTR值
;
005E 7906 MOVDISP: MOV R1,#6 ;显示6排字,每排四字(R1=排数)
0060 7B64 DISLOOP: MOV R3,#100 ;每排显示时间1.6*100=1.6S
0062 7A00 DISMOV: MOV R2,#00H ;第0行开始
0064 D28C SETB TR0 ;开扫描(每次一帧)
0066 100002 WAITMOV: JBC 00H,DISMOV1 ;标志为1扫描一帧结束(16毫秒为1帧,每行1毫秒)
0069 0166 AJMP WAITMOV
006B DBF5 DISMOV1: DJNZ R3,DISMOV ;1帧重复显示(控制显示时间)
006D 7480 MOV A,#128 ;显示字指针移一排(每排4字*32=128)
006F 2582 ADD A,DPL ;
0071 F582 MOV DPL,A
0073 7400 MOV A,#0
0075 3583 ADDC A,DPH
0077 F583 MOV DPH,A
0079 19 DEC R1 ;R1为0,显示完
007A E9 MOV A,R1
007B 6002 JZ MOVOUT ;
007D 0160 AJMP DISLOOP ;
007F 22 MOVOUT: RET ;移动显示结束
;
;********************;
; 四字滚动显示子程序 ;
;********************;
;每排四字向上移出显示方式,入口时定义好DPTR值
;
0080 79FF MOVDISP1: MOV R1,#255 ;向上移动显示6排字,每排四字(R1=排数*16)
0082 7B0A DISLOOP1: MOV R3,#10 ;移动速度1.6*10=0.16S
0084 7A00 DISMOV2: MOV R2,#00H ;第0行开始
0086 D28C SETB TR0 ;开扫描(每次一帧)
0088 100002 WAITMOV1: JBC 00H,DISMOV3 ;标志为1扫描一帧结束(16毫秒为1帧,每行1毫秒)
008B 0188 AJMP WAITMOV1
008D DBF5 DISMOV3: DJNZ R3,DISMOV2 ;1帧重复显示(控制移动速度)
008F A3 INC DPTR ;显示字指针移一行(二字节位置)
E:\楼然苗\应用源程序\四字显示程序\四字显示汇编程序\4_16.ASM
页 3
05-15-05
15:13:08
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0090 A3 INC DPTR
0091 19 DEC R1 ;R1为0,显示完
0092 E9 MOV A,R1
0093 6002 JZ MOVOUT1 ;
0095 0182 AJMP DISLOOP1 ;
0097 22 MOVOUT1: RET ;移动显示结束
;
;
;*****************;
; 四个字显示子程序 ;
;*****************;
;静止显示表中某四个字
0098 7B5A DIS1: MOV R3,#5AH ;静止显示时间控制(16MS*#=1.6秒)
009A 7A00 DIS11: MOV R2,#00H ;一帧扫描初始值(行地址从00-0FH)
009C 90013E MOV DPTR,#TAB ;取表首址
009F D28C SETB TR0 ;开扫描(每次一帧)
00A1 100002 WAIT11: JBC 00H,DIS111 ;为1,扫描一帧结束
00A4 01A1 AJMP WAIT11
00A6 DBF2 DIS111: DJNZ R3,DIS11
00A8 22 RET
;
;
;************;
; 扫描程序 ;
;************;
;1MS传送一行,每行显示1毫秒,一次传送四个字的某行共8个字节.
;
00A9 C0E0 INTT0: PUSH ACC
00AB 758CFC MOV TH0,#0FCH ;1ms初值重装
00AE 758A18 MOV TL0,#18H
00B1 7461 MOV A,#97 ;指向第四个字行右字节
00B3 2582 ADD A,DPL
00B5 F582 MOV DPL,A
00B7 7400 MOV A,#0
00B9 3583 ADDC A,DPH
00BB F583 MOV DPH,A
00BD 7400 MOV A,#0
00BF 93 MOVC A,@A+DPTR ;查表
00C0 F599 MOV SBUF,A ;串口0方式发送
00C2 109902 WAIT: JBC TI,GO ;等待发送完毕
00C5 01C2 AJMP WAIT ;
00C7 E582 GO: MOV A,DPL ;指向第四个字行左字节
00C9 9401 SUBB A,#1
00CB F582 MOV DPL,A
00CD E583 MOV A,DPH
00CF 9400 SUBB A,#0
00D1 F583 MOV DPH,A
00D3 7400 MOV A,#0
E:\楼然苗\应用源程序\四字显示程序\四字显示汇编程序\4_16.ASM
页 4
05-15-05
15:13:08
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
00D5 93 MOVC A,@A+DPTR
00D6 F599 MOV SBUF,A
00D8 109902 WAIT1: JBC TI,GO1
00DB 01D8 AJMP WAIT1
;
00DD 7803 GO1: MOV R0,#03H
00DF E582 MLOOP: MOV A,DPL ;指向前三个字行右字节
00E1 941F SUBB A,#31
00E3 F582 MOV DPL,A
00E5 E583 MOV A,DPH
00E7 9400 SUBB A,#0
00E9 F583 MOV DPH,A
00EB 7400 MOV A,#0
00ED 93 MOVC A,@A+DPTR ;查表
00EE F599 MOV SBUF,A ;串口0方式发送
00F0 109902 WAIT2: JBC TI,GO2 ;等待发送完毕
00F3 01F0 AJMP WAIT2 ;
00F5 E582 GO2: MOV A,DPL ;指向前三个字行左字节
00F7 9401 SUBB A,#1
00F9 F582 MOV DPL,A
00FB E583 MOV A,DPH
00FD 9400 SUBB A,#0
00FF F583 MOV DPH,A
0101 7400 MOV A,#0
0103 93 MOVC A,@A+DPTR
0104 F599 MOV SBUF,A
0106 109902 WAIT3: JBC TI,GO3
0109 2106 AJMP WAIT3
010B D8D2 GO3: DJNZ R0,MLOOP ;执行三次
;
;
010D D297 SETB P1.7 ;关行显示,准备涮新
010F 00 NOP ;串口寄存器数据稳定
0110 D296 SETB P1.6 ;产生上升沿,行数据打入输出端
0112 00 NOP ;
0113 00 NOP ;
0114 C296 CLR P1.6 ;恢复低电平
0116 EA MOV A,R2 ;修改显示行地址
0117 44F0 ORL A,#0F0H ;修改显示行地址
0119 FA MOV R2,A ;修改显示行地址
011A E590 MOV A,P1 ;修改显示行地址
011C 440F ORL A,#0FH ;修改显示行地址
011E 5A ANL A,R2 ;修改显示行地址
011F F590 MOV P1,A ;修改完成
0121 C297 CLR P1.7 ;开行显示
0123 0A INC R2 ;下一行扫描地址值
0124 A3 INC DPTR ;
0125 A3 INC DPTR ;下一行数据地址
E:\楼然苗\应用源程序\四字显示程序\四字显示汇编程序\4_16.ASM
页 5
05-15-05
15:13:08
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0126 EA MOV A,R2
0127 540F ANL A,#0FH
0129 7010 JNZ GO4
012B D200 SETB 00H ;R2为10H,现为末行扫描,置1帧结束标志
012D E582 MOV A,DPL ;指针修正为原帧初值
012F 9420 SUBB A,#32
0131 F582 MOV DPL,A
0133 E583 MOV A,DPH
0135 9400 SUBB A,#0
0137 F583 MOV DPH,A
0139 C28C CLR TR0 ;一帧扫描完,关扫描
013B D0E0 GO4: POP ACC
013D 32 RETI ;退出
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -