邮箱有问题只好贴了
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONST_WRSR EQU 01H
CONST_WRITE EQU 02H
CONST_READ EQU 03H
CONST_WRDIS EQU 04H
CONST_RDSR EQU 05H
CONST_WREN EQU 06H
;;;#####################################################################################################################
CS EQU P1.7
SO EQU P3.2
SCK EQU P3.4
SI EQU P3.5
WP EQU P3.6
FEEDDOG EQU P1.7
FLAG_E2HADR EQU 48H ;;;29H
PAGEADR EQU 34H
;;;#####################################################################################################################
DELAY: MOV R7,#230
DELAY1: CLR FEEDDOG
NOP
NOP
NOP
NOP
SETB FEEDDOG
DJNZ R7,DELAY1
DJNZ R6,DELAY
NOP
RET
READ_STATUS: PUSH IE
CLR EA
CLR SCK
CLR CS
MOV A,#CONST_RDSR
MOV R5,#08H
READ_STATUS1: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R5,READ_STATUS1
MOV R5,#08H
READ_STATUS2: CLR SCK
MOV C,SO
RLC A
SETB SCK
DJNZ R5,READ_STATUS2
SETB CS
SETB SCK
POP IE
RET
;;;#####################################################################################################################
SEND_WRENABLE: CLR SCK
SETB WP
CLR CS
MOV A,#CONST_WREN
MOV R5,#08H
SEND_WRENABLE1: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R5,SEND_WRENABLE1
SETB CS
RET
;;;#####################################################################################################################
WRITE_STATUS: PUSH IE
CLR EA
PUSH A
ACALL SEND_WRENABLE
CLR SCK
CLR CS
SETB WP
MOV A,#CONST_WRSR
MOV R5,#08H
WRITE_STATUS1: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R5,WRITE_STATUS1
POP A
MOV R5,#08H
WRITE_STATUS2: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R5,WRITE_STATUS2
SETB CS
; CLR WP
POP IE
MOV R6,#03H
ACALL DELAY
RET
;;;#####################################################################################################################
READ_EEPROM: PUSH IE
CLR EA
CLR SCK
CLR CS
CLR A
MOV C,FLAG_E2HADR
MOV ACC.3,C
ORL A,#CONST_READ
MOV R5,#08H
READ_EEPROM1: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R5,READ_EEPROM1
MOV A,PAGEADR
MOV R5,#08H
READ_EEPROM2: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R5,READ_EEPROM2
READ_EEPROM3: MOV R5,#08H
READ_EEPROM4: CLR SCK
MOV C,SO
RLC A
SETB SCK
DJNZ R5,READ_EEPROM4
MOV @R1,A
INC R1
DJNZ R3,READ_EEPROM3
SETB CS
SETB SCK
POP IE
RET
;;;#####################################################################################################################
WRITE_EEPROM: PUSH IE
CLR EA
ACALL SEND_WRENABLE
CLR SCK
CLR CS
SETB WP
CLR A
MOV C,FLAG_E2HADR
MOV ACC.3,C
ORL A,#CONST_WRITE
MOV R5,#08H
WRITE_EEPROM1: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R5,WRITE_EEPROM1
MOV A,PAGEADR
MOV R5,#08H
WRITE_EEPROM2: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R5,WRITE_EEPROM2
MOV A,@R0
MOV R5,#08H
WRITE_EEPROM4: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R5,WRITE_EEPROM4
SETB CS
SETB SCK
; CLR WP
POP IE
MOV R6,#03H
ACALL DELAY
INC R0
INC PAGEADR
DJNZ R2,WRITE_EEPROM
RET
;;;;#####################################################################################################################
发表时间:2004年7月9日10:43:54