📄 at45db.lst
字号:
0085 203 AT_SCK EQU P0.5
0086 204 AT_SI EQU P0.6
00B3 205 AT_CS EQU P3.3
00B7 206 AT_SO EQU P3.7
207
0030 208 ORG 0030H
0030 2100 209 AJMP MAIN
0100 210 ORG 0100H
211
0100 7580FF 212 MAIN: MOV P0,#0FFH
0103 75B0FF 213 MOV P3,#0FFH
0106 120270 214 LCALL DELAY1S
0109 7B00 215 MOV R3,#00H
010B 7C00 216 MOV R4,#00H
010D 7D00 217 MOV R5,#00H ;R5为地址最高字节
218
010F 753050 219 MOV 30H,#50H
0112 753151 220 MOV 31H,#51H
0115 753252 221 MOV 32H,#52H
0118 753353 222 MOV 33H,#53H
011B 753454 223 MOV 34H,#54H
011E 753555 224 MOV 35H,#55H
0121 753656 225 MOV 36H,#56H
0124 753757 226 MOV 37H,#57H
227
0127 1201F7 228 LCALL WRITAT
229 ;LCALL MEM2BUF
230 ;LCALL MBCMP
231 ;LCALL WRBUF
232 ;LCALL BUF2MB
012A 120270 233 LCALL DELAY1S
234 ;LCALL RDBUF
012D 12021C 235 LCALL READAT
236 ;LCALL RDSTA
0130 8546A0 237 MOV P2,46H
0133 C280 238 CLR P0.0 ;
0135 C281 239 CLR P0.1 ;
0137 80FE 240 JMP $
241
0139 C2B3 242 RDSTA: CLR AT_CS ;读状态寄存器
013B 7457 243 MOV A,#57H
013D 120255 244 LCALL WRAT45
0140 120261 245 LCALL RDAT45
0143 D2B3 246 SETB AT_CS
0145 22 247 RET
248
0146 C2B3 249 MBCMP: CLR AT_CS ;主存与缓冲区比较
0148 C285 250 CLR AT_SCK
014A 7460 251 MOV A,#60H
014C 120255 252 LCALL WRAT45
014F 7400 253 MOV A,#00H
0151 120255 254 LCALL WRAT45
0154 7400 255 MOV A,#00H
0156 120255 256 LCALL WRAT45
A51 MACRO ASSEMBLER AT45DB 08/19/2006 15:15:11 PAGE 5
0159 7400 257 MOV A,#00H
015B 120255 258 LCALL WRAT45
015E D2B3 259 SETB AT_CS
0160 D285 260 SETB AT_SCK
0162 22 261 RET
262
0163 263 WRBUF:
0163 C2B3 264 CLR AT_CS
0165 C285 265 CLR AT_SCK
0167 7484 266 MOV A,#84H
0169 120255 267 LCALL WRAT45
268
016C 7400 269 MOV A,#00H
016E 120255 270 LCALL WRAT45
0171 7400 271 MOV A,#00H
0173 120255 272 LCALL WRAT45
0176 7400 273 MOV A,#00H
0178 120255 274 LCALL WRAT45
275
017B 7830 276 MOV R0,#30H ;待写的数据存放在30H-37H内存单元中
017D 7908 277 MOV R1,#08H
017F E6 278 WRBUF1: MOV A,@R0
0180 120255 279 LCALL WRAT45
0183 08 280 INC R0
0184 D9F9 281 DJNZ R1,WRBUF1
0186 D2B3 282 SETB AT_CS
0188 D285 283 SETB AT_SCK
018A 22 284 RET
285
018B C2B3 286 RDBUF: CLR AT_CS ;读缓冲区1/2
018D C285 287 CLR AT_SCK
018F 7454 288 MOV A,#54H ;54H(56H)+15空位+9位地址+8空位
0191 120255 289 LCALL WRAT45
290
0194 7400 291 MOV A,#00H
0196 120255 292 LCALL WRAT45
0199 7400 293 MOV A,#00H ;缓冲区页内地址高字节
019B 120255 294 LCALL WRAT45
019E 7400 295 MOV A,#00H ;
01A0 120255 296 LCALL WRAT45
01A3 7400 297 MOV A,#00H
01A5 120255 298 LCALL WRAT45
299
01A8 7840 300 MOV R0,#40H ;读出的数据暂存在40H-47H内存单元中
01AA 7908 301 MOV R1,#08H
01AC 120261 302 RDBUF1: LCALL RDAT45
01AF F6 303 MOV @R0,A
01B0 08 304 INC R0
01B1 D9F9 305 DJNZ R1,RDBUF1
01B3 D2B3 306 SETB AT_CS
01B5 D285 307 SETB AT_SCK
01B7 22 308 RET
309
01B8 C2B3 310 BUF2MB: CLR AT_CS
01BA C285 311 CLR AT_SCK
01BC 7483 312 MOV A,#83H
01BE 120255 313 LCALL WRAT45
314
01C1 7400 315 MOV A,#00H
01C3 120255 316 LCALL WRAT45
01C6 7400 317 MOV A,#00H
01C8 120255 318 LCALL WRAT45
01CB 7400 319 MOV A,#00H
01CD 120255 320 LCALL WRAT45
321
01D0 D2B3 322 SETB AT_CS
A51 MACRO ASSEMBLER AT45DB 08/19/2006 15:15:11 PAGE 6
01D2 D285 323 SETB AT_SCK
01D4 22 324 RET
325
01D5 C2B3 326 MEM2BUF:CLR AT_CS ;主存页拷贝至缓冲区
01D7 C285 327 CLR AT_SCK
01D9 7453 328 MOV A,#53H
01DB 120255 329 LCALL WRAT45
330
01DE 7400 331 MOV A,#00H
01E0 120255 332 LCALL WRAT45
01E3 7400 333 MOV A,#00H
01E5 120255 334 LCALL WRAT45
01E8 7400 335 MOV A,#00H
01EA 120255 336 LCALL WRAT45
01ED 7400 337 MOV A,#00H
01EF 120255 338 LCALL WRAT45
339
01F2 D2B3 340 SETB AT_CS
01F4 D285 341 SETB AT_SCK
01F6 22 342 RET
343
01F7 C2B3 344 WRITAT: CLR AT_CS
01F9 C285 345 CLR AT_SCK
01FB 7482 346 MOV A,#82H ;82H(85H)+4空位+11位页址+9位页内址
01FD 120255 347 LCALL WRAT45
348
0200 ED 349 MOV A,R5 ;写入地址
0201 120255 350 LCALL WRAT45
0204 EC 351 MOV A,R4
0205 120255 352 LCALL WRAT45
0208 EB 353 MOV A,R3
0209 120255 354 LCALL WRAT45
355
020C 7830 356 MOV R0,#30H ;待写的数据存放在30H-37H内存单元中
020E 7908 357 MOV R1,#08H
0210 E6 358 WRITAT1:MOV A,@R0
0211 120255 359 LCALL WRAT45
0214 08 360 INC R0
0215 D9F9 361 DJNZ R1,WRITAT1
0217 D2B3 362 SETB AT_CS
0219 D285 363 SETB AT_SCK
021B 22 364 RET
365
021C C2B3 366 READAT: CLR AT_CS
021E C285 367 CLR AT_SCK
368
0220 7452 369 MOV A,#52H ;52H+4个空位+11位页地址+9位页内部地址+32个空位
0222 120255 370 LCALL WRAT45
371
0225 ED 372 MOV A,R5 ;写入地址
0226 120255 373 LCALL WRAT45
0229 EC 374 MOV A,R4
022A 120255 375 LCALL WRAT45
022D EB 376 MOV A,R3
022E 120255 377 LCALL WRAT45
378
0231 7400 379 MOV A,#00H ;写入32位无关项
0233 120255 380 LCALL WRAT45
0236 7400 381 MOV A,#00H
0238 120255 382 LCALL WRAT45
023B 7400 383 MOV A,#00H
023D 120255 384 LCALL WRAT45
0240 7400 385 MOV A,#00H
0242 120255 386 LCALL WRAT45
387
0245 7840 388 MOV R0,#40H ;读出的数据暂存在40H-47H内存单元中
A51 MACRO ASSEMBLER AT45DB 08/19/2006 15:15:11 PAGE 7
0247 7908 389 MOV R1,#08H
0249 120261 390 READAT1:LCALL RDAT45
024C F6 391 MOV @R0,A
024D 08 392 INC R0
024E D9F9 393 DJNZ R1,READAT1
0250 D2B3 394 SETB AT_CS
0252 D285 395 SETB AT_SCK
0254 22 396 RET
397
0255 7A08 398 WRAT45: MOV R2,#08H
0257 C285 399 WRAT451:CLR AT_SCK
0259 33 400 RLC A
025A 9286 401 MOV AT_SI,C
025C D285 402 SETB AT_SCK
025E DAF7 403 DJNZ R2,WRAT451
0260 22 404 RET
405
0261 7A08 406 RDAT45: MOV R2,#08H
0263 C285 407 RDAT451:CLR AT_SCK
0265 00 408 NOP
0266 D285 409 SETB AT_SCK ;
0268 A2B7 410 MOV C,AT_SO
026A 33 411 RLC A
026B D285 412 SETB AT_SCK
026D DAF4 413 DJNZ R2,RDAT451
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -