📄 display.lst
字号:
Page 1
06-05-01
21:29:19
WAVE assembler version 5.00 Copyright (c) 1989, 99 by CHY
Addr Code Source Line
ORG 0000H
0000 020100 LJMP 0100H ;开机或复位后,跳转至100H单元执行程序
ORG 0100H
0100 7400 INIT: MOV A,#0
0102 90DF00 MOV DPTR,#0DF00H ;ACK标志清零
0105 F0 MOVX @DPTR,A
0106 90FD00 MOV DPTR,#0FD00H ;初始化行复位端口
0109 F0 MOVX @DPTR,A
010A 90FE00 MOV DPTR,#0FE00H ;初始化行置位端口
010D F0 MOVX @DPTR,A
010E 74FF MOV A,#0FFH
0110 90FB00 MOV DPTR,#0FB00H
0113 F0 MOVX @DPTR,A ;初始化列选择板1端口
0114 90F700 MOV DPTR,#0F700H
0117 F0 MOVX @DPTR,A ;初始化列选择板1端口
0118 90EF00 MOV DPTR,#0EF00H
011B F0 MOVX @DPTR,A ;初始化列选择板1端口
011C 7840 LOGO: MOV R0,#40H ;加载显示缓存区指针
011E 7900 MOV R1,#0 ;R1是显示数据指针
0120 7A3C MOV R2,#60 ;开机画面存储区有60字节
0122 E9 LOG1: MOV A,R1
0123 900400 MOV DPTR,#400H ;加载开机画面存储区其实地址
0126 93 MOVC A,@A+DPTR ;查表法得到显示点阵数据
0127 642A XRL A,#0101010B ;此项由磁翻转显示器特性决定
0129 F6 MOV @R0,A ;送点阵数据至显示缓存区
012A 08 INC R0 ;显示缓存指针增1
012B 09 INC R1 ;显示数据指针增1
012C DAF4 DJNZ R2,LOG1 ;若R2不为0,则继续读取显示点阵数据
012E 7840 MOV R0,#40H ;加载显示缓存指针供刷新显示
0130 120248 LCALL BLOCK1 ;转显示驱动程序
0133 120286 LCALL BLOCK2
0136 1202C4 LCALL BLOCK3
0139 90BF00 TEST: MOV DPTR,#0BF00H ;加载DATA标志端口地址
013C E0 TES1: MOVX A,@DPTR ;读DATA标志
013D 5401 ANL A,#01H ;屏蔽A寄存器的高7位
013F 60FB JZ TES1 ;若DATA标志为低,再读DATA标志
0141 74FF MOV A,#0FFH
0143 F590 MOV P1,A ;P1口读入数据时先置全“1”
0145 E590 MOV A,P1 ;读P1口数据
0147 B4F0F2 CJNE A,#0F0H,TES1 ;若读入数据不为F0H,则等待
014A 90DF00 MOV DPTR,#0DF00H ;加载ACK标志端口地址
014D 7401 MOV A,#01H ;
014F F0 MOVX @DPTR,A ;将ACK标志置高
0150 12030B CALL DELAY1S ;延时1秒
0153 7400 MOV A,#0
D:\飞机泊位系统\ASM\DISPLAY.ASM
Page 2
06-05-01
21:29:19
WAVE assembler version 5.00 Copyright (c) 1989, 99 by CHY
Addr Code Source Line
0155 F0 MOVX @DPTR,A ;将ACK清零
0156 7830 MAIN: MOV R0,#30H ;加载接受缓存区起始地址
0158 90BF00 MAI1: MOV DPTR,#0BF00H ;加载DATA标志端口地址
015B E0 MAI2: MOVX A,@DPTR ;读入主控制器数据标志
015C 5401 ANL A,#01H ;屏蔽A高7位
015E 60FB JZ MAI2 ;查询DATA信号是否为高
0160 74FF MOV A,#0FFH
0162 F590 MOV P1,A ;P1口要读入数据,先置全"1"
0164 E590 MOV A,P1 ;读入P1口的数据
0166 C0E0 PUSH A ;压入最新接收的数据
0168 F6 MOV @R0,A ;将接收数据写入接收数据缓冲区
0169 08 INC R0 ;指向下一个缓冲存储单元
016A 7401 MOV A,#01H
016C 90DF00 MOV DPTR,#0DF00H ;加载ACK端口地址
016F F0 MOVX @DPTR,A ;ACK端口置高
0170 90BF00 MOV DPTR,#0BF00H ;加载DATA标志端口地址
0173 E0 MAI3: MOVX A,@DPTR
0174 5401 ANL A,#01H ;屏蔽高7位数据
0176 70FB JNZ MAI3 ;若DATA未变低,等待
0178 7400 MOV A,#0
017A 90DF00 MOV DPTR,#0DF00H ;加载ACK端口地址
017D F0 MOVX @DPTR,A ;ACK端口置低
017E D0E0 POP A ;弹出读入的数据
0180 B4FFD5 CJNE A,#0FFH,MAI1 ;若不是0FFH结束符,读下一数据
0183 900450 CONVERT:MOV DPTR,#0450H ;加载转换码表地址指针
0186 7830 MOV R0,#30H ;加载接收缓存地址指针
0188 08 CONV1: INC R0 ;接受缓存指针加1
0189 E6 MOV A,@R0 ;取一个接受缓存中的数据
018A B4FF03 CJNE A,#0FFH,CONV2 ;不是0FFH结束符,则继续转换
018D 020195 LJMP DECODE ;若已经结束,转显示译码
0190 93 CONV2: MOVC A,@A+DPTR ;取转换码表数据
0191 F6 MOV @R0,A ;将转换后的数据送回接受缓存
0192 020188 LJMP CONV1 ;继续接受缓存下一字节转换
0195 900500 DECODE: MOV DPTR,#0500H ;加载显示字库地址指针
0198 7830 MOV R0,#30H ;加载接收缓存地址指针
019A 7940 MOV R1,#40H ;加载显示缓存地址指针
019C 08 DECO1: INC R0 ;接收缓存指针加1
019D E6 MOV A,@R0 ;取一个接收缓存中的数据
019E B4FF03 CJNE A,#0FFH,DECO2 ;不是FFH结束符,则继续译码
01A1 0201BA LJMP MODE ;若为FFH结束符,转驱动显示
01A4 7A04 DECO2: MOV R2,#4 ;一个字符字库占用5字节
01A6 26 CAL: ADD A,@R0
01A7 DAFD DJNZ R2,CAL ;计算字库存储区偏移量
D:\飞机泊位系统\ASM\DISPLAY.ASM
Page 3
06-05-01
21:29:19
WAVE assembler version 5.00 Copyright (c) 1989, 99 by CHY
Addr Code Source Line
01A9 7A05 MOV R2,#5 ;一个字符字库占用5字节
01AB C0E0 GET: PUSH A ;保护偏移量
01AD 93 MOVC A,@A+DPTR ;取ROM字库中点阵显示数据
01AE 642A XRL A,#0101010B ;
01B0 F7 MOV @R1,A ;保存点阵显示数据至显示缓冲区
01B1 D0E0 POP A ;恢复偏移量
01B3 04 INC A ;取下一字节字库数据
01B4 09 INC R1 ;显示缓存指针加1
01B5 DAF4 DJNZ R2,GET ;不到5字节,继续取字库数据
01B7 02019C LJMP DECO1 ;开始下一字符译码
01BA 7840 MODE: MOV R0,#40H ;加载显示缓存起始地址
01BC 7930 MOV R1,#30H ;判断显示模式
01BE E7 MOV A,@R1
01BF B4F103 CJNE A,#0F1H,NEXT1
01C2 0201DA LJMP MODE1 ;F1H表示显示模式一
01C5 B4F203 NEXT1: CJNE A,#0F2H,NEXT2 ;F2H表示显示模式二
01C8 0201E0 LJMP MODE2
01CB B4F303 NEXT2: CJNE A,#0F3H,NEXT3 ;F3H表示显示模式三
01CE 0201E9 LJMP MODE3
01D1 B4F403 NEXT3: CJNE A,#0F4H,NEXT4
01D4 0201F5 LJMP MODE4 ;F4H表示显示MODE4
01D7 0201FB NEXT4: LJMP MODE5 ;F5H-->MODE5
01DA 120248 MODE1: LCALL BLOCK1 ;刷新第一块显示板
01DD 020156 LJMP MAIN ;返回主程序
01E0 120248 MODE2: LCALL BLOCK1 ;刷新第1块显示板
01E3 120286 LCALL BLOCK2 ;刷新第2块显示板
01E6 020156 LJMP MAIN ;返回主程序
01E9 120248 MODE3: LCALL BLOCK1 ;刷新第1块显示板
01EC 120286 LCALL BLOCK2 ;刷新第2块显示板
01EF 1202C4 LCALL BLOCK3 ;刷新第3块显示板
01F2 020156 LJMP MAIN ;返回主程序
01F5 1202C4 MODE4: LCALL BLOCK3 ;单独刷新第3块显示板
01F8 020156 LJMP MAIN ;返回主程序
01FB 7868 MODE5: MOV R0,#68H ;
01FD 7980 MOV R1,#80H
01FF 7A14 MOV R2,#20
0201 E6 MOD5A: MOV A,@R0
0202 F7 MOV @R1,A
0203 74FF MOV A,#0FFH
0205 642A XRL A,#0101010B
0207 F6 MOV @R0,A
0208 08 INC R0
D:\飞机泊位系统\ASM\DISPLAY.ASM
Page 4
06-05-01
21:29:19
WAVE assembler version 5.00 Copyright (c) 1989, 99 by CHY
Addr Code Source Line
0209 09 INC R1
020A DAF5 DJNZ R2,MOD5A
020C 7A28 MOV R2,#40
020E 7400 MOD5B: MOV A,#0
0210 642A XRL A,#0101010B
0212 F7 MOV @R1,A
0213 09 INC R1
0214 DAF8 DJNZ R2,MOD5B
0216 7840 ALTER: MOV R0,#40H
0218 120248 LCALL BLOCK1
021B 120286 LCALL BLOCK2
021E 1202C4 LCALL BLOCK3
0221 90BF00 MOV DPTR,#0BF00H
0224 E0 MOVX A,@DPTR
0225 5401 ANL A,#01H
0227 701C JNZ J2M
0229 120318 LCALL DELAY5S
022C 7880 MOV R0,#80H
022E 120248 LCALL BLOCK1
0231 120286 LCALL BLOCK2
0234 1202C4 LCALL BLOCK3
0237 90BF00 MOV DPTR,#0BF00H
023A E0 MOVX A,@DPTR
023B 5401 ANL A,#01H
023D 7006 JNZ J2M
023F 120318 LCALL DELAY5S
0242 020216 LJMP ALTER
0245 020156 J2M: LJMP MAIN
0248 7900 BLOCK1: MOV R1,#0 ;列选择线指针置零,从第0列开始刷新
024A E6 BLO1: MOV A,@R0 ;取一列的行点阵显示数据
024B C0E0 PUSH A ;保护行置位数据
024D 90FE00 MOV DPTR,#0FE00H ;加载行置位端口地址
0250 F0 MOVX @DPTR,A ;行置位数据送行置位口
0251 90FB00 MOV DPTR,#0FB00H ;加载第1块列驱动板地址
0254 E9 MOV A,R1 ;列指针内容送A
0255 F0 MOVX @DPTR,A ;选中相应的列选择线
0256 120302 LCALL DELAY
0259 74FF MOV A,#0FFH ;送无效字
025B F0 MOVX @DPTR,A ;以关闭列译码器
025C 7400 MOV A,#0
025E 90FE00 MOV DPTR,#0FE00H ;加载行置位端口地址
0261 F0 MOVX @DPTR,A ;行置位口清零
0262 120302 LCALL DELAY
0265 D0E0 POP A ;恢复行置位数据
0267 F4 CPL A ;取反得到行复位数据
D:\飞机泊位系统\ASM\DISPLAY.ASM
Page 5
06-05-01
21:29:19
WAVE assembler version 5.00 Copyright (c) 1989, 99 by CHY
Addr Code Source Line
0268 90FD00 MOV DPTR,#0FD00H ;加载行复位端口地址
026B F0 MOVX @DPTR,A ;送行复位数据
026C 90FB00 MOV DPTR,#0FB00H ;加载第1块列驱动板地址
026F E9 MOV A,R1
0270 F0 MOVX @DPTR,A ;选中列驱动线
0271 120302 LCALL DELAY
0274 74FF MOV A,#0FFH ;送无效字
0276 F0 MOVX @DPTR,A ;关闭列译码器
0277 7400 MOV A,#0
0279 90FD00 MOV DPTR,#0FD00H ;加载行复位端口地址
027C F0 MOVX @DPTR,A ;行置位口清零
027D 120302 LCALL DELAY ;
0280 09 INC R1 ;修改列驱动选择指针
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -