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

📄 89c52.lst

📁 飞机泊位管理系统中单片机代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
                                                                                        Page   1
                                                                                        04-08-01
                                                                                        09:06:42
WAVE assembler version 5.00                   Copyright (c) 1989, 99 by CHY

Addr  Code  Source Line

            	ORG	0000H
0000 020100  	LJMP	0100H		;开机或者复位后,跳转到INIT初始化程序
            
                    ORG	0100H
0100 7400   INIT:   MOV	A,#0
0102 90FD00 	MOV	DPTR,#0FD00H	;初始化行复位端口,置全零
0105 F0     	MOVX	@DPTR,A
0106 90FE00 	MOV	DPTR,#0FE00H	;初始化行置位端口,置全零
0109 F0     	MOVX	@DPTR,A
010A 74FF           MOV	A,#0FFH
010C 90FB00 	MOV	DPTR,#0FB00H
010F F0     	MOVX	@DPTR,A		;初始化列选择1端口,送无效字
0110 90F700 	MOV	DPTR,#0F700H
0113 F0     	MOVX	@DPTR,A		;初始化列选择2端口,送无效字
0114 90EF00 	MOV	DPTR,#0EF00H
0117 F0     	MOVX	@DPTR,A		;初始化列选择3端口,送无效字
            
0118 7840   LOGO:   MOV     R0,#40H         ;R0 IS DISPLAY BUFFER POINTER
011A 7900           MOV     R1,#0           ;R1 IS DATA POINTER
011C 7A3C           MOV     R2,#60          ;THERE ARE 40 Bytes Logo Buffer
011E E9     LOG1:   MOV     A,R1            ;MOVE DATA POINER TO "A"
011F 900300         MOV     DPTR,#300H      ;LOAD LOGO ADDRESS
0122 93             MOVC    A,@A+DPTR       ;MOVE DISPLAY DATA TO "A"
0123 F6             MOV     @R0,A           ;MOVE "A" TO BUFFER
0124 08             INC     R0              ;INCREASE BUFFER POINTER
0125 09             INC     R1              ;INCREASE DATA POINTER
0126 DAF6           DJNZ    R2,LOG1         ;IF !(R2=0) THEN GOTO LOG1
0128 7840           MOV	R0,#40H         ;LOAD DISPLAY BUFFER ADDRESS TO R0
012A 1201D5         LCALL   FIRST           ;GOTO DISPLAY SUBPROGRAM
            
            
012D 90BF00 TEST:   MOV     DPTR,#0BF00H    ;加载DATA标志端口地址
0130 E0     TES1:   MOVX    A,@DPTR         ;读入DATA标志
0131 5401           ANL     A,#01H          ;屏蔽高7位
0133 60FB           JZ      TES1            ;为低,则继续查询DATA标志
0135 74FF           MOV     A,#0FFH
0137 F590           MOV     P1,A            ;要从P1口读入,先置全“1”
0139 E590           MOV     A,P1            ;读入P1口数据
013B B4F0F2         CJNE    A,#0F0H,TES1    ;若不为F0H则继续查询
013E 907F00         MOV     DPTR,#07F00H    ;加载ACK端口地址
0141 7401           MOV     A,#01H          ;屏蔽高7位
0143 F0             MOVX    @DPTR,A         ;ACK置高
0144 120289         CALL    DELAY1S         ;延时1S
0147 7400           MOV     A,#0
0149 F0             MOVX    @DPTR,A         ;ACK置低
            
014A 7830   MAIN:	MOV	R0,#30H		;加载接收数据缓冲区起始地址指针
            


D:\飞机泊位系统\ASM\89C52.ASM                                                       
 
                                                                                        Page   2
                                                                                        04-08-01
                                                                                        09:06:42
WAVE assembler version 5.00                   Copyright (c) 1989, 99 by CHY

Addr  Code  Source Line

014C 90BF00 MAI1:	MOV	DPTR,#0BF00H	;加载DATA标志端口地址
014F E0     MAI2:	MOVX	A,@DPTR		;读入主控制器数据标志
0150 5401   	ANL	A,#01H		;屏蔽A高7位
0152 60FB   	JZ	MAI2		;查询DATA信号是否为高
0154 74FF   	MOV	A,#0FFH
0156 F590           MOV     P1,A            ;P1口要读入数据,先置全"1"
0158 E590   	MOV	A,P1		;读入P1口的数据
015A C0E0   	PUSH	A		;压入最新接收的数据
015C F6     	MOV	@R0,A		;将接收数据写入接收数据缓冲区
015D 08     	INC	R0		;指向下一个缓冲存储单元
015E 7401   	MOV	A,#01H
0160 907F00 	MOV	DPTR,#07F00H	;加载ACK端口地址
0163 F0     	MOVX	@DPTR,A		;ACK端口置高
0164 90BF00 	MOV	DPTR,#0BF00H	;加载DATA标志端口地址
0167 E0     MAI3:	MOVX	A,@DPTR
0168 5401   	ANL	A,#01H		;屏蔽高7位数据
016A 70FB   	JNZ	MAI3		;若DATA未变低,等待
016C 7400   	MOV	A,#0
016E 907F00 	MOV	DPTR,#07F00H	;加载ACK端口地址
0171 F0     	MOVX	@DPTR,A		;ACK端口置低
0172 D0E0   	POP	A		;弹出读入的数据
0174 B4FFD5 	CJNE	A,#0FFH,MAI1	;若不是0FFH结束符,读下一数据
            
0177 900400 DECODE:	MOV	DPTR,#0400H	;加载显示字库地址指针
017A 7830   	MOV	R0,#30H		;加载接收缓存地址指针
017C 7940   	MOV	R1,#40H		;加载显示缓存地址指针
017E 08     DECO1:	INC	R0		;接收缓存指针加1
017F E6     	MOV	A,@R0		;取一个接收缓存中的数据
0180 B4FF03 	CJNE	A,#0FFH,DECO2	;不是FFH结束符,则继续译码
0183 02019A 	LJMP	DRIVE		;若为FFH结束符,转驱动显示
0186 7A04   DECO2:	MOV	R2,#4		;一个字符字库占用5字节
0188 26     CAL:	ADD	A,@R0
0189 DAFD   	DJNZ	R2,CAL		;计算字库存储区偏移量
018B 7A05   	MOV	R2,#5		;一个字符字库占用5字节
018D C0E0   GET:	PUSH	A		;保护偏移量
018F 93     	MOVC	A,@A+DPTR	;取ROM字库中点阵显示数据
0190 F7     	MOV	@R1,A		;保存点阵显示数据至显示缓冲区
0191 D0E0   	POP	A		;恢复偏移量
0193 04     	INC	A		;取下一字节字库数据
0194 09     	INC	R1		;显示缓存指针加1
0195 DAF6   	DJNZ	R2,GET		;不到5字节,继续取字库数据
0197 02017E  	LJMP	DECO1		;开始下一字符译码
            
019A 7840   DRIVE:	MOV	R0,#40H		;加载显示缓存起始地址
019C 7930   	MOV	R1,#30H		;判断显示模式
019E E7     	MOV	A,@R1
019F B4F103 	CJNE	A,#0F1H,NEXT1
01A2 0201B4         LJMP    MODE1        	;F1H表示显示模式一


D:\飞机泊位系统\ASM\89C52.ASM                                                       
 
                                                                                        Page   3
                                                                                        04-08-01
                                                                                        09:06:42
WAVE assembler version 5.00                   Copyright (c) 1989, 99 by CHY

Addr  Code  Source Line

01A5 B4F203 NEXT1:	CJNE	A,#0F2H,NEXT2	;F2H表示显示模式二
01A8 0201BA         LJMP    MODE2
01AB B4F303 NEXT2:	CJNE	A,#0F3H,NEXT3	;F3H表示显示模式三
01AE 0201C3         LJMP    MODE3
01B1 0201CF NEXT3:  LJMP    MODE4           ;F4H表示显示MODE4
            
01B4 1201D5 MODE1:	lCALL	FIRST		;刷新第一块显示板
01B7 02014A 	LJMP	MAIN		;返回主程序
            
01BA 1201D5 MODE2:	LCALL	FIRST		;刷新第1块显示板
01BD 12020E 	LCALL	SECOND		;刷新第2块显示板
01C0 02014A 	LJMP	MAIN		;返回主程序
            
01C3 1201D5 MODE3:	LCALL	FIRST		;刷新第1块显示板
01C6 12020E 	LCALL	SECOND		;刷新第2块显示板
01C9 120247 	LCALL	THIRD		;刷新第3块显示板
01CC 02014A 	LJMP	MAIN		;返回主程序
            
01CF 120247 MODE4:	LCALL	THIRD		;单独刷新第3块显示板
01D2 02014A 	LJMP	MAIN		;返回主程序
            
01D5 7900   FIRST:	MOV	R1,#0		;列选择线指针置零,从第0列开始刷新
01D7 E6     FIR1:	MOV	A,@R0		;取一列的行点阵显示数据
01D8 C0E0   	PUSH	A		;保护行置位数据
01DA F4             CPL     A               ;对A取反,得到行复位数据
01DB 90FD00 	MOV	DPTR,#0FD00H	;加载行复位端口地址
01DE F0     	MOVX	@DPTR,A		;行置位数据送行置位口
01DF 90FB00 	MOV	DPTR,#0FB00H	;加载第1块列驱动板地址
01E2 E9     	MOV	A,R1		;列指针内容送A
01E3 F0     	MOVX	@DPTR,A		;选中相应的列选择线
01E4 120280         LCALL   DELAY           ;延时5ms
01E7 74FF   	MOV	A,#0FFH		;送无效字
01E9 F0     	MOVX	@DPTR,A		;以关闭列译码器
01EA 7400   	MOV	A,#0
01EC 90FD00 	MOV	DPTR,#0FD00H	;加载行复位端口地址
01EF F0     	MOVX	@DPTR,A		;行复位口清零
01F0 09     	INC	R1		;列选择数据加1
01F1 D0E0   	POP	A		;恢复行置位数据
01F3 90FE00 	MOV	DPTR,#0FE00H	;加载行置位端口地址
01F6 F0     	MOVX	@DPTR,A		;送行复位数据
01F7 90FB00 	MOV	DPTR,#0FB00H	;加载第1块列驱动板地址
01FA E9     	MOV	A,R1
01FB F0     	MOVX	@DPTR,A		;选中列置位驱动线
01FC 120280 	LCALL   DELAY           ;延时5ms
01FF 74FF   	MOV	A,#0FFH		;送无效字
0201 F0     	MOVX	@DPTR,A		;关闭列译码器
0202 7400   	MOV	A,#0
0204 90FE00 	MOV	DPTR,#0FE00H	;加载行置位端口地址


D:\飞机泊位系统\ASM\89C52.ASM                                                       
 
                                                                                        Page   4
                                                                                        04-08-01
                                                                                        09:06:42
WAVE assembler version 5.00                   Copyright (c) 1989, 99 by CHY

Addr  Code  Source Line

0207 F0     	MOVX	@DPTR,A		;行置位口清零
0208 09     	INC 	R1		;修改列驱动选择指针
0209 08     	INC	R0		;修改显示缓存指针
020A B928CA 	CJNE	R1,#40,FIR1	;不满二十列则继续刷新
020D 22     	RET			;返回主程序
            
020E 7900   SECOND:	MOV	R1,#0		;列选择线指针置零,从第0列开始刷新
0210 E6     SEC1:	MOV	A,@R0		;取行点阵显示数据
0211 C0E0   	PUSH	A		;保护数据
0213 F4             CPL     A               ;对A取反,得到行复位数据
0214 90FD00 	MOV	DPTR,#0FD00H	;加载行复位端口地址
0217 F0     	MOVX	@DPTR,A		;行复位数据送行复位口
0218 90F700 	MOV	DPTR,#0F700H	;加载列驱动板2地址
021B E9     	MOV	A,R1
021C F0     	MOVX	@DPTR,A		;选中列复位选择线
021D 120280 	LCALL	DELAY		;延时5ms
0220 74FF   	MOV	A,#0FFH		;送无效字
0222 F0     	MOVX	@DPTR,A		;以关闭列译码器
0223 7400   	MOV	A,#0		;
0225 90FD00 	MOV	DPTR,#0FD00H	;加载行复位端口地址
0228 F0     	MOVX	@DPTR,A		;行复位口清零
0229 D0E0   	POP	A		;弹出行置位数据
022B 90FE00 	MOV	DPTR,#0FE00H	;加载行置位端口地址
022E F0     	MOVX	@DPTR,A		;送行置位数据
022F 09     	INC 	R1		;列选择数据指针加1
0230 90F700 	MOV	DPTR,#0F700H	;加载列驱动板2地址
0233 E9     	MOV	A,R1
0234 F0     	MOVX	@DPTR,A		;选中列置位驱动线
0235 120280 	LCALL	DELAY		;延时5ms
0238 74FF   	MOV	A,#0FFH		;送无效字
023A F0     	MOVX	@DPTR,A		;关闭列译码器
023B 7400   	MOV	A,#0
023D 90FE00 	MOV	DPTR,#0FE00H	;加载行置位端口地址
0240 F0     	MOVX	@DPTR,A		;行置位口清零
0241 09     	INC 	R1		;修改列驱动选择指针
0242 08     	INC	R0		;修改显示缓存指针
0243 B928CA 	CJNE	R1,#40,SEC1	;不满二十列则继续刷新
0246 22     	RET			;返回主程序
            
0247 7900   THIRD:	MOV	R1,#0		;列选择线指针置零,从第0列开始刷新
0249 E6     THI1:	MOV	A,@R0		;取行点阵显示数据
024A C0E0   	PUSH	A		;保护数据
024C F4             CPL     A               ;对A取反,得到行复位数据
024D 90FD00 	MOV	DPTR,#0FD00H	;加载行复位端口地址
0250 F0     	MOVX	@DPTR,A		;行复位数据送行复位口
0251 90EF00 	MOV	DPTR,#0EF00H	;加载列驱动板3地址
0254 E9     	MOV	A,R1
0255 F0     	MOVX	@DPTR,A		;选中列复位选择线


D:\飞机泊位系统\ASM\89C52.ASM                                                       
 
                                                                                        Page   5
                                                                                        04-08-01
                                                                                        09:06:42
WAVE assembler version 5.00                   Copyright (c) 1989, 99 by CHY

Addr  Code  Source Line

0256 120280 	LCALL	DELAY		;延时5ms
0259 74FF   	MOV	A,#0FFH		;送无效字
025B F0     	MOVX	@DPTR,A		;以关闭列译码器
025C 7400   	MOV	A,#0		;
025E 90FD00 	MOV	DPTR,#0FD00H	;加载行复位端口地址
0261 F0     	MOVX	@DPTR,A		;行复位口清零
0262 D0E0   	POP	A		;弹出行置位数据
0264 90FE00 	MOV	DPTR,#0FE00H	;加载行置位端口地址
0267 F0     	MOVX	@DPTR,A		;送行置位数据
0268 09     	INC 	R1		;列选择数据指针加1
0269 90EF00 	MOV	DPTR,#0EF00H	;加载列驱动板3地址
026C E9     	MOV	A,R1
026D F0     	MOVX	@DPTR,A		;选中列置位驱动线
026E 120280 	LCALL	DELAY		;延时5ms
0271 74FF   	MOV	A,#0FFH		;送无效字
0273 F0     	MOVX	@DPTR,A		;关闭列译码器
0274 7400   	MOV	A,#0
0276 90FE00 	MOV	DPTR,#0FE00H	;加载行置位端口地址
0279 F0     	MOVX	@DPTR,A		;行置位口清零
027A 09     	INC 	R1		;修改列驱动选择指针
027B 08     	INC	R0		;修改显示缓存指针
027C B928CA 	CJNE	R1,#40,THI1	;不满二十列则继续刷新
027F 22     	RET			;返回主程序
            
0280 7F14   DELAY:	MOV	R7,#20          ;5ms延时子程序(12MHz)
0282 7E7D   DEL1:	MOV	R6,#125
0284 DEFE   DEL2:	DJNZ	R6,DEL2
0286 DFFA   	DJNZ	R7,DEL1
0288 22     	RET
            
0289 7F0A   DELAY1s:MOV     R7,#10		;延时1S的子程序
028B 7EC8   DEL1S1: MOV     R6,#200
028D 7D7D   DEL1S2: MOV     R5,#125
028F DDFE   DEL1S3: DJNZ    R5,DEL1S3
0291 DEFA           DJNZ    R6,DEL1S2
0293 DFF6           DJNZ    R7,DEL1S1
0295 22             RET
            
                    ORG     0300H
            
0300 7F0408 
0303 107F           DB      7FH,04H,08H,10H,7FH
0305 3F4040 
0308 403F           DB      3FH,40H,40H,40H,3FH
030A 7C1211 
030D 127C           DB      7CH,12H,11H,12H,7CH
030F 7C1211 
0312 127C           DB      7CH,12H,11H,12H,7CH


D:\飞机泊位系统\ASM\89C52.ASM                                                       
 
                                                                                        Page   6
                                                                                        04-08-01
                                                                                        09:06:42
WAVE assembler version 5.00                   Copyright (c) 1989, 99 by CHY

Addr  Code  Source Line

            
0314 000000 
0317 0000           DB      0,0,0,0,0
0319 000000 
031C 0000           DB      0,0,0,0,0
031E 000000 
0321 0000           DB      0,0,0,0,0
0323 000000 
0326 0000           DB      0,0,0,0,0
            
                    ORG	0400H
0400 3E5149 
0403 453E   	DB	3EH,51H,49H,45H,3EH	;数字“0”的字库编码
0405 00427F 
0408 4000   	DB	00H,42H,7FH,40H,00H	;数字“1”的字库编码
040A 426151 
040D 4946   	DB	42H,61H,51H,49H,46H	;数字“2”的字库编码
040F 224949 
0412 4936   	DB	22H,49H,49H,49H,36H	;数字“3”的字库编码
0414 181412 
0417 7F10   	DB	18H,14H,12H,7FH,10H	;数字“4”的字库编码
0419 2F4949 
041C 4931   	DB	2FH,49H,49H,49H,31H	;数字“5”的字库编码

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -