📄 up51s011.lst
字号:
00BC 900055 199 MOV DPTR,#BYTE_ADDR ; 设置要读取的地址
00BF C293 200 CLR SCK
00C1 C292 201 CLR CS
00C3 7403 202 MOV A,#READ_INST
00C5 8583F0 203 MOV B,DPH
00C8 A2F0 204 MOV C,B.0
00CA 92E3 205 MOV ACC.3,C
00CC 120000 F 206 LCALL OUTBYT ; 传送读取指令和地址最高位
00CF E582 207 MOV A, DPL
00D1 120000 F 208 LCALL OUTBYT ; 传送地址低字节
00D4 120000 F 209 LCALL INBYT ; 读取字节
00D7 C293 210 CLR SCK
211
00D9 D292 212 SETB CS
00DB 22 213 RET
214 ;******************************************************************************************
215 ;* PAGE_WRITE: 页写入
216 ;* 传入参数: 无
217 ;* 返回值: 无
218
219 ;******************************************************************************************
00DC 220 PAGE_WRITE:
00DC 9001F0 221 MOV DPTR,#PAGE_ADDR ; 设置第一个字节的地址
00DF C293 222 CLR SCK
00E1 C292 223 CLR CS
00E3 7402 224 MOV A,#WRITE_INST
00E5 8583F0 225 MOV B,DPH
00E8 A2F0 226 MOV C,B.0
00EA 92E3 227 MOV ACC.3,C
00EC 120000 F 228 LCALL OUTBYT ; 传送写入指令和地址最高位
00EF E582 229 MOV A,DPL
00F1 120000 F 230 LCALL OUTBYT ; 传送地址低字节
00F4 7422 231 MOV A,#PAGE_DATA1
00F6 120000 F 232 LCALL OUTBYT ; 传送第一个字节数据
00F9 7433 233 MOV A,#PAGE_DATA2
00FB 120000 F 234 LCALL OUTBYT ; 传送第二个字节数据
00FE 7444 235 MOV A,#PAGE_DATA3
0100 120000 F 236 LCALL OUTBYT ; 传送第三个字节数据
0103 C293 237 CLR SCK
0105 D292 238 SETB CS
0107 120000 F 239 LCALL WIP_POLL ; 检测写入进度
010A 22 240 RET
241
242 ;******************************************************************************************
243 ;* SEQU_READ: 连续读取3个字节
244 ;* 传入参数: 无
245 ;* 返回值: A --- 最后一次读取的字节
246 ;******************************************************************************************
010B 247 SEQU_READ:
010B 9001F0 248 MOV DPTR,#PAGE_ADDR ; 设置第一个字节的地址
010E C293 249 CLR SCK ;
0110 C292 250 CLR CS ;
0112 7403 251 MOV A,#READ_INST
0114 8583F0 252 MOV B,DPH
0117 A2F0 253 MOV C,B.0
0119 92E3 254 MOV ACC.3,C
011B 120000 F 255 LCALL OUTBYT ; 传送读取指令和地址最高位
011E E582 256 MOV A,DPL
A51 MACRO ASSEMBLER UP51S011 03/20/2005 18:59:08 PAGE 5
0120 120000 F 257 LCALL OUTBYT ; 传送地址低字节
0123 120000 F 258 LCALL INBYT ; 读取第一个字节
0126 120000 F 259 LCALL INBYT ; 读取第二个字节
0129 120000 F 260 LCALL INBYT ; 读取第三个字节
012C C293 261 CLR SCK
012E D292 262 SETB CS
0130 22 263 RET
264
265 ;******************************************************************************************
266 ;* RST_WDOG: 复位看门狗定时器
267 ;* 传入参数: 无
268 ;* 返回值: 无
269 ;******************************************************************************************
0131 270 RST_WDOG:
0131 C292 271 CLR CS
0133 00 272 NOP
0134 00 273 NOP
0135 D292 274 SETB CS
0137 22 275 RET
276
277 ;******************************************************************************************
278 ;* WIP_POLL: 写入进度查询
279 ;* 传入参数: 无
280 ;* 返回值: 无
281 ;******************************************************************************************
0138 282 WIP_POLL:
0138 7999 283 MOV R1, #MAX_POLL ; 设置最大的查询次数
013A 284 WIP_POLL1:
013A 120000 F 285 LCALL RDSR_CMD ; 读取状态寄存器
013D 30E002 286 JNB ACC.0,WIP_POLL2 ; 如果WIP位为'0', 则写入周期完成, 返回
0140 D9F8 287 DJNZ R1,WIP_POLL1 ; 如果WIP位为'1'并且未达到最大查询次? 则继续查询
288
0142 289 WIP_POLL2:
0142 22 290 RET
291
292 ;******************************************************************************************
293 ;* OUTBYT: 传送字节示莸紼EPROM, 高位在前
294 ;* 传入参数: A --- 要传送的字节
295 ;* 返回值: 无
296 ;******************************************************************************************
0143 297 OUTBYT:
0143 7808 298 MOV R0,#08 ; 设置数据位数
0145 299 OUTBYT1:
0145 C293 300 CLR SCK ;
0147 33 301 RLC A ;
0148 9294 302 MOV SI,C ; 传送一个位到SI
014A 00 303 NOP
014B D293 304 SETB SCK ;
014D D8F6 305 DJNZ R0,OUTBYT1 ; 判断是否传完
014F C294 306 CLR SI ;
0151 22 307 RET
308
309 ;******************************************************************************************
310 ;* INBYT: 从EEPROM接收数据 高位在前
311 ;* 传入参数: 无
312 ;* 返回值: A --- 接收到的字节
313 ;******************************************************************************************
0152 314 INBYT:
0152 7808 315 MOV R0,#08 ; 设置数据位数
0154 316 INBYT1:
0154 D293 317 SETB SCK ;
0156 00 318 NOP
0157 C293 319 CLR SCK ;
0159 00 320 NOP
015A A295 321 MOV C,SO ; 接收一个位保存到C
015C 33 322 RLC A ;
A51 MACRO ASSEMBLER UP51S011 03/20/2005 18:59:08 PAGE 6
015D D8F5 323 DJNZ R0,INBYT1 ; 判断是否接收完
015F 22 324 RET
325 ;******************************************************************************************
326 ;* DELAY: 延时程序
327 ;* 传入参数: 无
328 ;* 返回值: 无
329 ;******************************************************************************************
0160 330 DELAY: ; 延时子程序
0160 78FF 331 MOV R0,#0FFH
0162 79FF 332 MOV R1,#0FFH
0164 333 DLY_LP:
0164 00 334 NOP
0165 00 335 NOP
0166 D8FC 336 DJNZ R0,DLY_LP
0168 78FF 337 MOV R0,#0FFH
016A D9F8 338 DJNZ R1,DLY_LP
016C 22 339 RET
340
341
342 END
A51 MACRO ASSEMBLER UP51S011 03/20/2005 18:59:08 PAGE 7
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
BYTE_ADDR. . . . . N NUMB 0055H A
BYTE_DATA. . . . . N NUMB 0011H A
BYTE_READ. . . . . C ADDR 00BCH R SEG=CODE_SEG
BYTE_WRITE . . . . C ADDR 0097H R SEG=CODE_SEG
CODE_SEG . . . . . C SEG 016DH REL=UNIT
CS . . . . . . . . B ADDR 0090H.2 A
DELAY. . . . . . . C ADDR 0160H R SEG=CODE_SEG
DLY_LP . . . . . . C ADDR 0164H R SEG=CODE_SEG
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
EA . . . . . . . . B ADDR 00A8H.7 A
INBYT. . . . . . . C ADDR 0152H R SEG=CODE_SEG
INBYT1 . . . . . . C ADDR 0154H R SEG=CODE_SEG
MAIN . . . . . . . C ADDR 0000H R SEG=CODE_SEG
MAIN_LP. . . . . . C ADDR 0052H R SEG=CODE_SEG
MAX_POLL . . . . . N NUMB 0099H A
OUTBYT . . . . . . C ADDR 0143H R SEG=CODE_SEG
OUTBYT1. . . . . . C ADDR 0145H R SEG=CODE_SEG
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
PAGE_ADDR. . . . . N NUMB 01F0H A
PAGE_DATA1 . . . . N NUMB 0022H A
PAGE_DATA2 . . . . N NUMB 0033H A
PAGE_DATA3 . . . . N NUMB 0044H A
PAGE_WRITE . . . . C ADDR 00DCH R SEG=CODE_SEG
RDSR_CMD . . . . . C ADDR 0086H R SEG=CODE_SEG
RDSR_INST. . . . . N NUMB 0005H A
READ_INST. . . . . N NUMB 0003H A
RST_WDOG . . . . . C ADDR 0131H R SEG=CODE_SEG
SCK. . . . . . . . B ADDR 0090H.3 A
SEQU_READ. . . . . C ADDR 010BH R SEG=CODE_SEG
SI . . . . . . . . B ADDR 0090H.4 A
SO . . . . . . . . B ADDR 0090H.5 A
SP . . . . . . . . D ADDR 0081H A
STACK. . . . . . . I ADDR 0000H R SEG=STACK_SEG
STACK_SEG. . . . . I SEG 0014H REL=UNIT
STATUS_REG . . . . N NUMB 0000H A
UP51S011 . . . . . N NUMB -----
WIP_POLL . . . . . C ADDR 0138H R SEG=CODE_SEG
WIP_POLL1. . . . . C ADDR 013AH R SEG=CODE_SEG
WIP_POLL2. . . . . C ADDR 0142H R SEG=CODE_SEG
WRDI_CMD . . . . . C ADDR 0062H R SEG=CODE_SEG
WRDI_INST. . . . . N NUMB 0004H A
WREN_CMD . . . . . C ADDR 0054H R SEG=CODE_SEG
WREN_INST. . . . . N NUMB 0006H A
WRITE_INST . . . . N NUMB 0002H A
WRSR_CMD . . . . . C ADDR 0070H R SEG=CODE_SEG
WRSR_INST. . . . . N NUMB 0001H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -