wl008.lst
来自「单片机开发资料 基于51单片机的单片机开发板 包括《实验例程」· LST 代码 · 共 375 行 · 第 1/2 页
LST
375 行
00A7 120000 F 176 LCALL OUTBYT ; 传送读取指令和地址最高位
00AA E582 177 MOV A, DPL
00AC 120000 F 178 LCALL OUTBYT ; 传送地址低字节
00AF 120000 F 179 LCALL INBYT ; 读取字节
00B2 C290 180 CLR SCK
181
00B4 D294 182 SETB CS
00B6 22 183 RET
184 ;******************************************************************************************
185 ;* PAGE_WRITE: 页写入
186 ;* 传入参数: 无
187 ;* 返回值: 无
188
189 ;******************************************************************************************
00B7 190 PAGE_WRITE:
A51 MACRO ASSEMBLER WL008 11/03/2004 11:08:47 PAGE 4
00B7 9001F0 191 MOV DPTR,#PAGE_ADDR ; 设置第一个字节的地址
00BA C290 192 CLR SCK
00BC C294 193 CLR CS
00BE 7402 194 MOV A,#WRITE_INST
00C0 8583F0 195 MOV B,DPH
00C3 A2F0 196 MOV C,B.0
00C5 92E3 197 MOV ACC.3,C
00C7 120000 F 198 LCALL OUTBYT ; 传送写入指令和地址最高位
00CA E582 199 MOV A,DPL
00CC 120000 F 200 LCALL OUTBYT ; 传送地址低字节
00CF 7422 201 MOV A,#PAGE_DATA1
00D1 120000 F 202 LCALL OUTBYT ; 传送第一个字节数据
00D4 7433 203 MOV A,#PAGE_DATA2
00D6 120000 F 204 LCALL OUTBYT ; 传送第二个字节数据
00D9 7444 205 MOV A,#PAGE_DATA3
00DB 120000 F 206 LCALL OUTBYT ; 传送第三个字节数据
00DE C290 207 CLR SCK
00E0 D294 208 SETB CS
00E2 120000 F 209 LCALL WIP_POLL ; 检测写入进度
00E5 22 210 RET
211
212 ;******************************************************************************************
213 ;* SEQU_READ: 连续读取3个字节
214 ;* 传入参数: 无
215 ;* 返回值: A --- 最后一次读取的字节
216 ;******************************************************************************************
00E6 217 SEQU_READ:
00E6 9001F0 218 MOV DPTR,#PAGE_ADDR ; 设置第一个字节的地址
00E9 C290 219 CLR SCK ;
00EB C294 220 CLR CS ;
00ED 7403 221 MOV A,#READ_INST
00EF 8583F0 222 MOV B,DPH
00F2 A2F0 223 MOV C,B.0
00F4 92E3 224 MOV ACC.3,C
00F6 120000 F 225 LCALL OUTBYT ; 传送读取指令和地址最高位
00F9 E582 226 MOV A,DPL
00FB 120000 F 227 LCALL OUTBYT ; 传送地址低字节
00FE 120000 F 228 LCALL INBYT ; 读取第一个字节
0101 120000 F 229 LCALL INBYT ; 读取第二个字节
0104 120000 F 230 LCALL INBYT ; 读取第三个字节
0107 C290 231 CLR SCK
0109 D294 232 SETB CS
010B 22 233 RET
234
235 ;******************************************************************************************
236 ;* RST_WDOG: 复位看门狗定时器
237 ;* 传入参数: 无
238 ;* 返回值: 无
239 ;******************************************************************************************
010C 240 RST_WDOG:
010C C294 241 CLR CS
010E 00 242 NOP
010F 00 243 NOP
0110 D294 244 SETB CS
0112 22 245 RET
246
247 ;******************************************************************************************
248 ;* WIP_POLL: 写入进度查询
249 ;* 传入参数: 无
250 ;* 返回值: 无
251 ;******************************************************************************************
0113 252 WIP_POLL:
0113 7999 253 MOV R1, #MAX_POLL ; 设置最大的查询次数
0115 254 WIP_POLL1:
0115 120000 F 255 LCALL RDSR_CMD ; 读取状态寄存器
0118 30E002 256 JNB ACC.0,WIP_POLL2 ; 如果WIP位为'0', 则写入周期完成, 返回
A51 MACRO ASSEMBLER WL008 11/03/2004 11:08:47 PAGE 5
011B D9F8 257 DJNZ R1,WIP_POLL1 ; 如果WIP位为'1'并且未达到最大查询次? 则继续查询
258
011D 259 WIP_POLL2:
011D 22 260 RET
261
262 ;******************************************************************************************
263 ;* OUTBYT: 传送字节示莸紼EPROM, 高位在前
264 ;* 传入参数: A --- 要传送的字节
265 ;* 返回值: 无
266 ;******************************************************************************************
011E 267 OUTBYT:
011E 7808 268 MOV R0,#08 ; 设置数据位数
0120 269 OUTBYT1:
0120 C290 270 CLR SCK ;
0122 33 271 RLC A ;
0123 9292 272 MOV SI,C ; 传送一个位到SI
0125 00 273 NOP
0126 D290 274 SETB SCK ;
0128 D8F6 275 DJNZ R0,OUTBYT1 ; 判断是否传完
012A C292 276 CLR SI ;
012C 22 277 RET
278
279 ;******************************************************************************************
280 ;* INBYT: 从EEPROM接收数据 高位在前
281 ;* 传入参数: 无
282 ;* 返回值: A --- 接收到的字节
283 ;******************************************************************************************
012D 284 INBYT:
012D 7808 285 MOV R0,#08 ; 设置数据位数
012F 286 INBYT1:
012F D290 287 SETB SCK ;
0131 00 288 NOP
0132 C290 289 CLR SCK ;
0134 00 290 NOP
0135 A293 291 MOV C,SO ; 接收一个位保存到C
0137 33 292 RLC A ;
0138 D8F5 293 DJNZ R0,INBYT1 ; 判断是否接收完
013A 22 294 RET
295
296 END
A51 MACRO ASSEMBLER WL008 11/03/2004 11:08:47 PAGE 6
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 0097H R SEG=CODE_SEG
BYTE_WRITE . . . . C ADDR 0072H R SEG=CODE_SEG
CODE_SEG . . . . . C SEG 013BH REL=UNIT
CS . . . . . . . . B ADDR 0090H.4 A
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
EA . . . . . . . . B ADDR 00A8H.7 A
INBYT. . . . . . . C ADDR 012DH R SEG=CODE_SEG
INBYT1 . . . . . . C ADDR 012FH R SEG=CODE_SEG
MAIN . . . . . . . C ADDR 0000H R SEG=CODE_SEG
MAIN_LP. . . . . . C ADDR 002DH R SEG=CODE_SEG
MAX_POLL . . . . . N NUMB 0099H A
OUTBYT . . . . . . C ADDR 011EH R SEG=CODE_SEG
OUTBYT1. . . . . . C ADDR 0120H R SEG=CODE_SEG
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 00B7H R SEG=CODE_SEG
RDSR_CMD . . . . . C ADDR 0061H R SEG=CODE_SEG
RDSR_INST. . . . . N NUMB 0005H A
READ_INST. . . . . N NUMB 0003H A
RST_WDOG . . . . . C ADDR 010CH R SEG=CODE_SEG
SCK. . . . . . . . B ADDR 0090H.0 A
SEQU_READ. . . . . C ADDR 00E6H R SEG=CODE_SEG
SI . . . . . . . . B ADDR 0090H.2 A
SO . . . . . . . . B ADDR 0090H.3 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
WIP_POLL . . . . . C ADDR 0113H R SEG=CODE_SEG
WIP_POLL1. . . . . C ADDR 0115H R SEG=CODE_SEG
WIP_POLL2. . . . . C ADDR 011DH R SEG=CODE_SEG
WL008. . . . . . . N NUMB -----
WRDI_CMD . . . . . C ADDR 003DH R SEG=CODE_SEG
WRDI_INST. . . . . N NUMB 0004H A
WREN_CMD . . . . . C ADDR 002FH R SEG=CODE_SEG
WREN_INST. . . . . N NUMB 0006H A
WRITE_INST . . . . N NUMB 0002H A
WRSR_CMD . . . . . C ADDR 004BH 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 + =
减小字号Ctrl + -
显示快捷键?