📄 at25cxx.lst
字号:
583 ; Data (if any) returned in XDATA.
584 ; Destroys A.
585
01D0 C292 586 clr CS ; select device
587
01D2 B40506 588 cjne a, #RDSR, x1 ; check for read status command
01D5 120235 589 call shout ; send command
01D8 0201E1 590 jmp x2
591 x1:
01DB B4030A 592 cjne a, #READ, x3 ; check for read memory command
01DE 120210 593 call send_addr ; send command/high addr and low addr
594 x2:
01E1 120220 595 call shin ; read data from device
01E4 FA 596 mov zdata, a ; save data
01E5 02020D 597 jmp x10
598 x3:
01E8 B40603 599 cjne a, #WREN, x4 ; check for write enable command
01EB 0201F1 600 jmp x5
MCS-51 MACRO ASSEMBLER CONTROL_AT25XXX 02/06/96 PAGE 12
LOC OBJ LINE SOURCE
601 x4:
01EE B40406 602 cjne a, #WRDI, x6 ; check for write disable command
603 x5:
01F1 120235 604 call shout ; send command
01F4 02020A 605 jmp x9
606 x6:
01F7 B40206 607 cjne a, #WRITE, x7 ; check for write memory command
01FA 120210 608 call send_addr ; send command/high addr and low addr
01FD 020206 609 jmp x8
610 x7:
0200 B4010A 611 cjne a, #WRSR, x10 ; check for write status command
0203 120235 612 call shout ; send command
613 x8:
0206 EA 614 mov a, zdata ; get data
0207 120235 615 call shout ; send data
616 x9:
020A C293 617 clr SCK ; drop clock
020C 00 618 nop ; enforce delay
619 x10:
020D D292 620 setb CS ; deselect device
020F 22 621 ret
622
623
624 send_addr:
625
626 ; Send command combined with most significant bit of address
627 ; followed by least significant byte of address.
628 ; Called with command code in A, address in ADDR_HI:ADDR_LO.
629 ; Returns nothing. Destroys A.
630
0210 C0E0 631 push acc ; save command
0212 ED 632 mov a, addr_hi ; get high byte of address
0213 13 633 rrc a ; move LSB into carry bit
0214 D0E0 634 pop acc ; restore command
0216 92E3 635 mov A8, c ; combine command and high bit of addr
0218 120235 636 call shout ; send command and high bit of address
021B EC 637 mov a, addr_lo ; get low byte of address
021C 120235 638 call shout ; send low byte of address
021F 22 639 ret
640
641
642 shin:
643 ; Shift in a byte from the device, most significant bit first.
644 ; Expects device already selected (CS low).
645 ; Expects SCK high on entry. Returns with SCK high.
646 ; The SO pin is allowed to float before data is read
647 ; to support three-wire (SI shorted to SO) mode.
648 ; Returns assembled byte in A.
649
0220 D295 650 setb SO ; float pin for three-wire mode
651
0222 C0F0 652 push b
0224 75F008 653 mov b, #8 ; bit count
654 ee12:
0227 C293 655 clr SCK ; drop clock
MCS-51 MACRO ASSEMBLER CONTROL_AT25XXX 02/06/96 PAGE 13
LOC OBJ LINE SOURCE
0229 00 656 nop ; enforce output delay
022A A295 657 mov c, SO ; input bit
022C 33 658 rlc a ; move bit into byte
022D D293 659 setb SCK ; raise clock
022F D5F0F5 660 djnz b, ee12 ; next bit
661
0232 D0F0 662 pop b
0234 22 663 ret
664
665
666 shout:
667 ; Shift out a byte to the device, most significant bit first.
668 ; Expects device already selected (CS low).
669 ; Returns with SCK high.
670 ; Called with data to send in A.
671 ; Returns nothing. All registers preserved.
672
0235 C0F0 673 push b
0237 75F008 674 mov b, #8 ; bit count
675
023A 33 676 rlc a ; move bit into CY
677 ee13:
023B C293 678 clr SCK ; drop clock
023D 9294 679 mov SI, c ; output bit
023F 33 680 rlc a ; move bit into CY
0240 D293 681 setb SCK ; raise clock
0242 D5F0F6 682 djnz b, ee13 ; next bit
683
0245 D0F0 684 pop b
0247 22 685 ret
686
687
688 END
MCS-51 MACRO ASSEMBLER CONTROL_AT25XXX 02/06/96 PAGE 14
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E A T T R I B U T E S
A8 . . . . . . . B ADDR 00E0H.3 A
ACC. . . . . . . D ADDR 00E0H A
ADDR_HI. . . . . REG R5
ADDR_LO. . . . . REG R4
B. . . . . . . . D ADDR 00F0H A
BP0. . . . . . . B ADDR 00E0H.2 A
BP1. . . . . . . B ADDR 00E0H.3 A
BUFFER . . . . . D ADDR 0020H A
BYTE_FILL. . . . C ADDR 008BH A
COMMANDER. . . . C ADDR 01D0H A
CONTROL_AT25XXX. ---- ----
CS . . . . . . . B ADDR 0090H.2 A
DISABLE_WRITE. . C ADDR 0141H A
DPH. . . . . . . D ADDR 0083H A
DPL. . . . . . . D ADDR 0082H A
EE10 . . . . . . C ADDR 019BH A
EE11 . . . . . . C ADDR 01C0H A
EE12 . . . . . . C ADDR 0227H A
EE13 . . . . . . C ADDR 023BH A
ENABLE_WRITE . . C ADDR 0134H A
FILL . . . . . . NUMB 0055H A
INDEX. . . . . . REG R0
KOUNT. . . . . . REG R7
NPAGES . . . . . NUMB 0040H A
NRDY . . . . . . B ADDR 00E0H.0 A
ON_RESET . . . . C ADDR 0080H A
P1 . . . . . . . D ADDR 0090H A
PAGE_FILL. . . . C ADDR 00BEH A
PSIZE. . . . . . NUMB 0008H A
RDSR . . . . . . NUMB 0005H A
READ_BYTE. . . . C ADDR 014EH A
READ_PAGE. . . . C ADDR 0183H A
READ_STATUS. . . C ADDR 0113H A
READ . . . . . . NUMB 0003H A
SCK. . . . . . . B ADDR 0090H.3 A
SEND_ADDR. . . . C ADDR 0210H A
SHIN . . . . . . C ADDR 0220H A
SHOUT. . . . . . C ADDR 0235H A
SI . . . . . . . B ADDR 0090H.4 A
SIZE . . . . . . NUMB 0200H A
SO . . . . . . . B ADDR 0090H.5 A
SP . . . . . . . D ADDR 0081H A
STACK. . . . . . D ADDR 0030H A
VERIFY_BYTE_FILL C ADDR 00A3H A
VERIFY_PAGE_FILL C ADDR 00E7H A
WEN. . . . . . . B ADDR 00E0H.1 A
WRDI . . . . . . NUMB 0004H A
WREN . . . . . . NUMB 0006H A
WRITE_BYTE . . . C ADDR 0165H A
WRITE_PAGE . . . C ADDR 01A8H A
WRITE_STATUS . . C ADDR 0120H A
MCS-51 MACRO ASSEMBLER CONTROL_AT25XXX 02/06/96 PAGE 15
N A M E T Y P E V A L U E A T T R I B U T E S
WRITE. . . . . . NUMB 0002H A
WRSR . . . . . . NUMB 0001H A
X1 . . . . . . . C ADDR 01DBH A
X10. . . . . . . C ADDR 020DH A
X11. . . . . . . C ADDR 008EH A
X2 . . . . . . . C ADDR 01E1H A
X21. . . . . . . C ADDR 00A3H A
X22. . . . . . . C ADDR 00ACH A
X23. . . . . . . C ADDR 00BCH A
X24. . . . . . . C ADDR 00BDH A
X3 . . . . . . . C ADDR 01E8H A
X31. . . . . . . C ADDR 00C3H A
X32. . . . . . . C ADDR 00CEH A
X33. . . . . . . C ADDR 00E4H A
X4 . . . . . . . C ADDR 01EEH A
X41. . . . . . . C ADDR 00E7H A
X42. . . . . . . C ADDR 00F2H A
X43. . . . . . . C ADDR 00FAH A
X44. . . . . . . C ADDR 010BH A
X45. . . . . . . C ADDR 0111H A
X46. . . . . . . C ADDR 0112H A
X5 . . . . . . . C ADDR 01F1H A
X6 . . . . . . . C ADDR 01F7H A
X7 . . . . . . . C ADDR 0200H A
X8 . . . . . . . C ADDR 0206H A
X9 . . . . . . . C ADDR 020AH A
ZDATA. . . . . . REG R2
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE, NO ERRORS FOUND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -