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