[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
PUBLIC Read_S_REG_EEPROM;
PUBLIC WRITE_EEPROM_SREG;
PUBLIC _WrtEEPROM;
WMCON EQU 96h ; watchdog and memory control register
EEMEN EQU 00001000b ; EEPROM access enable bit
EEMWE EQU 00010000b ; EEPROM write enable bit
WDTRST EQU 00000010b ; EEPROM RDY/BSY bit
DPS EQU 00000100b ; data pointer select bit
EXTRN CODE (DELAY_10ms);
EXTRN XDATA (SRegistri);
RW_EEPROM SEGMENT CODE
RSEG RW_EEPROM
Read_S_REG_EEPROM:
CLR EA
mov dptr, #0 ; address to read
xrl WMCON,#DPS ; switch data pointers
mov dptr,#SRegistri ; address to read
xrl WMCON,#DPS ; switch data pointers
mov r1,#0FFh
read_s_1:
orl WMCON,#EEMEN ; enable EEPROM accesses
movx a,@dptr ; read EEPROM
xrl WMCON,#EEMEN ; disable EEPROM accesses
inc DPTR
xrl WMCON,#DPS ; switch data pointers
movx @dptr,a ; запись в ОЗУ
inc DPTR
xrl WMCON,#DPS ; switch data pointers
DJNZ r1,read_s_1
SETB EA
RET
;***************************************************
_WrtEEPROM:
CLR EA
MOV DPH,R6
MOV DPL,R7
MOV A,R5
ORL WMCON, #EEMEN ; enable EEPROM accesses
ORL WMCON, #EEMWE ; enable EEPROM writes
MOVX @DPTR,A ; write EEPROM
CALL DELAY_10ms
MOV a,WMCON ; get EEPROM write status
ANL a,#WDTRST ; check RDY/BSY
; jz loop ;jump if busy
XRL WMCON,#EEMWE ; disable EEPROM writes
XRL WMCON,#EEMEN ; disable EEPROM accesses
SETB EA
nop
RET
WRITE_EEPROM_SREG:
CLR EA
PUSH DPH
PUSH DPL
PUSH ACC
PUSH 1
mov DPTR,#0 ; address to write
xrl WMCON,#DPS ; switch data pointers
mov dptr,#SRegistri ; address to read
mov r1,#0FFh ; write data length
labl_123:
movx a,@DPTR
inc DPTR
xrl WMCON,#DPS ; switch data pointers
orl WMCON, #EEMEN ; enable EEPROM accesses
orl WMCON, #EEMWE ; enable EEPROM writes
movx @dptr,a ; write EEPROM
loop:
call DELAY_10ms
mov a,WMCON ; get EEPROM write status
anl a,#WDTRST ; check RDY/BSY
; jz loop ;jump if busy
xrl WMCON,#EEMWE ; disable EEPROM writes
xrl WMCON,#EEMEN ; disable EEPROM accesses
inc dptr
xrl WMCON,#DPS ; switch data pointers
DJNZ r1,labl_123
xrl WMCON,#DPS ; switch data pointers
POP 1
POP ACC
POP DPL
POP DPH
SETB EA
RET
;*********************************************
END
E-mail: info@telesys.ru