📄 最终程序.lst
字号:
页 1
03-02-02
19:11:41
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
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 ;初始化列选择板2端口
0118 90EF00 MOV DPTR,#0EF00H
011B F0 MOVX @DPTR,A ;初始化列选择板3端口
;***************开机画面加载**************
011C 7840 MOV R0,#40H ;加载显示缓存区指针
011E 7900 MOV R1,#0 ;R1是显示数据指针
0120 7A3C MOV R2,#60 ;开机画面存储区有60字节
0122 E9 LOG: 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,LOG ;若R2不为0,则继续读取显示点阵数据
012E 7840 MOV R0,#40H ;加载显示缓存指针供刷新显示
0130 1202B8 LCALL BLOCK1 ;转显示驱动程序
0133 1202F6 LCALL BLOCK2
0136 120334 LCALL BLOCK3
;***************显示控制器状态检测***************
0139 90BF00 POST: MOV DPTR,#0BF00H ;加载DATA标志端口地址
013C E0 POS1: MOVX A,@DPTR ;读DATA标志
013D 5401 ANL A,#01H ;屏蔽A寄存器的高7位
013F 60FB JZ POS1 ;若DATA标志为低,再读DATA标志
0141 74FF MOV A,#0FFH
0143 F590 MOV P1,A ;P1口读入数据时先置全“1”
0145 E590 MOV A,P1 ;读P1口数据
E:\YAM\飞机泊位系统\程序\最终程序.ASM
页 2
03-02-02
19:11:41
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
0147 B4F0F2 CJNE A,#0F0H,POS1 ;若读入数据不为F0H,则等待
014A 90DF00 MOV DPTR,#0DF00H ;加载ACK标志端口地址
014D 7401 MOV A,#01H ;
014F F0 MOVX @DPTR,A ;将ACK标志置高
0150 12037B CALL DELAY1S ;延时1秒
0153 7400 MOV A,#0
0155 F0 MOVX @DPTR,A ;将ACK清零
;***************状态显示数据加载****************
0156 7840 LOGO: MOV R0,#40H ;加载显示缓存区指针
0158 7900 MOV R1,#0 ;R1是显示数据指针
015A 7A3C MOV R2,#60 ;开机画面存储区有60字节
015C E9 LOG1: MOV A,R1
015D 900450 MOV DPTR,#450H ;加载开机画面存储区起始地址
0160 93 MOVC A,@A+DPTR ;查表法得到显示点阵数据
0161 642A XRL A,#0101010B ;此项由磁翻转显示器特性决定
0163 F6 MOV @R0,A ;送点阵数据至显示缓存区
0164 08 INC R0 ;显示缓存指针增1
0165 09 INC R1 ;显示数据指针增1
0166 DAF4 DJNZ R2,LOG1 ;若R2不为0,则继续读取显示点阵数据
0168 7840 MOV R0,#40H ;加载显示缓存指针供刷新显示
016A 1202B8 LCALL BLOCK1 ;转显示驱动程序
016D 1202F6 LCALL BLOCK2
0170 120334 LCALL BLOCK3
;***************主程序段**************
0173 7830 MAIN: MOV R0,#30H ;加载接受缓存区起始地址
0175 90BF00 MAI1: MOV DPTR,#0BF00H ;加载DATA标志端口地址
0178 E0 MAI2: MOVX A,@DPTR ;读入主控制器数据标志
0179 5401 ANL A,#01H ;屏蔽A高7位
017B 60FB JZ MAI2 ;查询DATA信号是否为高
017D 74FF MOV A,#0FFH
017F F590 MOV P1,A ;P1口要读入数据,先置全“1”
0181 E590 MOV A,P1 ;读入P1口的数据
0183 C0E0 PUSH A ;压入最新接收的数据
0185 F6 MOV @R0,A ;将接收数据写入接收数据缓冲区
0186 08 INC R0 ;指向下一个缓冲存储单元
0187 7401 MOV A,#01H
0189 90DF00 MOV DPTR,#0DF00H ;加载ACK端口地址
018C F0 MOVX @DPTR,A ;ACK端口置高
018D 90BF00 MOV DPTR,#0BF00H ;加载DATA标志端口地址
0190 E0 MAI3: MOVX A,@DPTR
0191 5401 ANL A,#01H ;屏蔽高7位数据
0193 70FB JNZ MAI3 ;若DATA未变低,等待
0195 7400 MOV A,#0
0197 90DF00 MOV DPTR,#0DF00H ;加载ACK端口地址
E:\YAM\飞机泊位系统\程序\最终程序.ASM
页 3
03-02-02
19:11:41
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
019A F0 MOVX @DPTR,A ;ACK端口置低
019B D0E0 POP A ;弹出读入的数据
019D B4FFD5 CJNE A,#0FFH,MAI1 ;若不是0FFH结束符,读下一数据
01A0 120280 LCALL CONVERT ;降接收到的ASCII字符转换并译码
;***************显示模式判断程序*****************
01A3 7840 MODE: MOV R0,#40H ;加载显示缓存起始地址
01A5 7930 MOV R1,#30H ;判断30H单元显示模式
01A7 E7 MOV A,@R1
01A8 B4F103 CJNE A,#0F1H,NEXT1
01AB 0201D2 LJMP MODE1 ;0F1H表示显示模式一
01AE B4F203 NEXT1: CJNE A,#0F2H,NEXT2 ;0F2H表示显示模式二
01B1 0201D8 LJMP MODE2
01B4 B4F303 NEXT2: CJNE A,#0F3H,NEXT3 ;0F3H表示显示模式三
01B7 0201E1 LJMP MODE3
01BA B4F403 NEXT3: CJNE A,#0F4H,NEXT4
01BD 0201ED LJMP MODE4 ;0F4H表示显示模式四
01C0 B4F503 NEXT4: CJNE A,#0F5H,NEXT5
01C3 0201FC LJMP MODE5 ;0F5H表示显示模式五
01C6 B4F603 NEXT5: CJNE A,#0F6H,NEXT6
01C9 020243 LJMP TEST ;0F6H为显示系统测试命令
01CC B4F7A4 NEXT6: CJNE A,#0F7H,MAIN
01CF 0201F3 LJMP MODE7 ;0F7H表示显示模式七
01D2 1202B8 MODE1: LCALL BLOCK1 ;刷新第1块显示板
01D5 020173 LJMP MAIN ;返回主程序
01D8 1202B8 MODE2: LCALL BLOCK1 ;刷新第1块显示板
01DB 1202F6 LCALL BLOCK2 ;刷新第2块显示板
01DE 020173 LJMP MAIN ;返回主程序
01E1 1202B8 MODE3: LCALL BLOCK1 ;刷新第1块显示板
01E4 1202F6 LCALL BLOCK2 ;刷新第2块显示板
01E7 120334 LCALL BLOCK3 ;刷新第3块显示板
01EA 020173 LJMP MAIN ;返回主程序
01ED 120334 MODE4: LCALL BLOCK3 ;刷新第3块显示板
01F0 020173 LJMP MAIN ;返回主程序
01F3 1202B8 MODE7: LCALL BLOCK1 ;刷新第1块显示板
01F6 120334 LCALL BLOCK3 ;刷新第3块显示板
01F9 020173 LJMP MAIN ;返回主程序
;***************交替显示程序(方式五)********************
01FC 7868 MODE5: MOV R0,#68H ;加载显示缓存1指针
E:\YAM\飞机泊位系统\程序\最终程序.ASM
页 4
03-02-02
19:11:41
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
01FE 7980 MOV R1,#80H ;加载显示缓存2指针
0200 7A14 MOV R2,#20 ;搬移字节数为20字节
0202 E6 MOD5A: MOV A,@R0
0203 F7 MOV @R1,A ;将显示缓存1后20字节搬移至缓存2
0204 74FF MOV A,#0FFH ;
0206 642A XRL A,#0101010B ;由显示器特性决定
0208 F6 MOV @R0,A ;显存1后20字节送全亮
0209 08 INC R0
020A 09 INC R1
020B DAF5 DJNZ R2,MOD5A
020D 7A28 MOV R2,#40 ;显示缓存二共有40字节
020F 7400 MOD5B: MOV A,#0
0211 642A XRL A,#0101010B
0213 F7 MOV @R1,A
0214 09 INC R1
0215 DAF8 DJNZ R2,MOD5B
0217 7840 ALTER: MOV R0,#40H ;显示缓存一起始地址
0219 1202B8 LCALL BLOCK1 ;显示驱动
021C 1202F6 LCALL BLOCK2
021F 90BF00 MOV DPTR,#0BF00H ;DATA标志位地址
0222 E0 MOVX A,@DPTR
0223 5401 ANL A,#01H
0225 7019 JNZ J2M ;DATA为高转主程序
0227 120388 LCALL DELAY2S
022A 7880 MOV R0,#80H ;显示缓存二的起始地址
022C 1202B8 LCALL BLOCK1 ;驱动显示
022F 1202F6 LCALL BLOCK2
0232 90BF00 MOV DPTR,#0BF00H
0235 E0 MOVX A,@DPTR
0236 5401 ANL A,#01H
0238 7006 JNZ J2M ;查询DATA标志
023A 120388 LCALL DELAY2S
023D 020217 LJMP ALTER
0240 020173 J2M: LJMP MAIN ;若有新数据则跳转至主程序
;***************磁翻转显示屏测试程序*******************
0243 900800 TEST: MOV DPTR,#800H ;测试画面图案数据地址指针
0246 7C0E MOV R4,#14 ;测试画面一共14幅
0248 7830 TES1: MOV R0,#30H ;接收缓存地址指针
024A 74F3 MOV A,#0F3H ;接收缓存模式字
024C F6 MOV @R0,A
024D 08 INC R0
024E 7900 MOV R1,#0 ;便宜数据指针
0250 7A0C MOV R2,#12 ;一共须填入12字节数据
0252 E9 TES2: MOV A,R1
0253 93 MOVC A,@A+DPTR
E:\YAM\飞机泊位系统\程序\最终程序.ASM
页 5
03-02-02
19:11:41
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
0254 F6 MOV @R0,A
0255 08 INC R0
0256 09 INC R1
0257 DAF9 DJNZ R2,TES2
0259 74FF MOV A,#0FFH ;结束标志
025B F6 MOV @R0,A
025C C083 PUSH DPH
025E C082 PUSH DPL ;保护测试画面存储数据指针
0260 120280 LCALL CONVERT ;显示代码转化和译码
0263 7840 MOV R0,#40H ;显示存储区地址指针
0265 1202B8 LCALL BLOCK1
0268 1202F6 LCALL BLOCK2
026B 120334 LCALL BLOCK3
026E D082 POP DPL
0270 D083 POP DPH
0272 7B10 MOV R3,#10H
0274 0582 TES3: INC DPL
0276 DBFC DJNZ R3,TES3
0278 12037B LCALL DELAY1S
027B DCCB DJNZ R4,TES1
027D 020173 LJMP MAIN
;***************显示代码转换和译码程序段******************
0280 900500 CONVERT:MOV DPTR,#0500H ;加载转换码表地址指针
0283 7830 MOV R0,#30H ;加载接收缓存地址指针
0285 08 CONV1: INC R0 ;接受缓存指针加1
0286 E6 MOV A,@R0 ;取一个接受缓存中的数据
0287 B4FF03 CJNE A,#0FFH,CONV2 ;不是0FFH结束符,则继续转换
028A 020292 LJMP DECODE ;若已经结束,转显示译码
028D 93 CONV2: MOVC A,@A+DPTR ;取转换码表数据
028E F6 MOV @R0,A ;将转换后的数据送回接受缓存
028F 020285 LJMP CONV1 ;继续接受缓存下一字节转换
0292 900600 DECODE: MOV DPTR,#0600H ;加载显示字库地址指针
0295 7830 MOV R0,#30H ;加载接收缓存地址指针
0297 7940 MOV R1,#40H ;加载显示缓存地址指针
0299 08 DECO1: INC R0 ;接收缓存指针加1
029A E6 MOV A,@R0 ;取一个接收缓存中的数据
029B B4FF03 CJNE A,#0FFH,DECO2 ;不是FFH结束符,则继续译码
029E 0202B7 LJMP BACK ;若为FFH结束符,转驱动显示
02A1 7A04 DECO2: MOV R2,#4 ;一个字符字库占用5字节
02A3 26 CAL: ADD A,@R0
02A4 DAFD DJNZ R2,CAL ;计算字库存储区偏移量
02A6 7A05 MOV R2,#5 ;一个字符字库占用5字节
02A8 C0E0 GET: PUSH A ;保护偏移量
02AA 93 MOVC A,@A+DPTR ;取ROM字库中点阵显示数据
02AB 642A XRL A,#0101010B ;
02AD F7 MOV @R1,A ;保存点阵显示数据至显示缓冲区
E:\YAM\飞机泊位系统\程序\最终程序.ASM
页 6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -