Handling EEPROM
This program writes data to on-chip EEPROM memory. In this case, the data is a hexadecimal number 23 which is to be written to the location with address 00.To make sure that this number is correctly written, the same location of EEPROM is read 10mS later in order to compare these two numbers. If they match, F will be displayed. Otherwise, E will be displayed on the LED display (Error).
;************************************************************************
;* PROGRAM NAME: EEProm1.ASM
;* DESCRIPTION: Programming EEPROM at address 0000hex and displaying message
;* on LED display.
;************************************************************************
;BASIC DIRECTIVES
$MOD53
$TITLE(EEPROM1.ASM)
$PAGEWIDTH(132)
$DEBUG
$OBJECT
$NOPAGING
WMCON DATA 96H
EEMEN EQU 00001000B ; Access to internal EEPROM is enabled
EEMWE EQU 00010000B ; Write to EEPROM is enabled
TEMP DATA 030H ; Define Auxiliary register
THE END EQU 071H ; Display "F"
ERROR EQU 033H ; Display "E"
;STACK
DSEG AT 03FH
STACK_START: DS 040H
;RESET VECTORS
CSEG AT 0
JMP XRESET ; Reset vector
ORG 100H
XRESET: MOV IE,#00 ; All interrupts are disabled
MOV SP,#STACK_START
MOV DPTR,#0000H ; Choose location address in EEPROM
ORL WMCON,#EEMEN ; Access to EEPROM is enabled
ORL WMCON,#EEMWE ; Write to EEPROM is enabled
MOV TEMP,#23H ; Number written to EEPROM is moved to
MOV A,TEMP ; register TEMP and Accumulator
MOVX @DPTR,A ; Write byte to EEPROM
CALL DELAY ; 10ms delay
MOVX A,@DPTR ; Read the same location and compare to TEMP,
CJNE A,TEMP,ERROR ; If they don't match, jump to label ERROR
MOV A,#KRAJ ; Display F (correct)
MOV P1,A
XRL WMCON,#EEMWE ; Write to EEPROM is disabled
XRL WMCON,#EEMEN ; Access to EEPROM is disabled
LOOP1: SJMP LOOP1 ; Remain here
ERROR: MOV A,#ERROR ; Display E (error)
MOV P1,A
LOOP2: SJMP LOOP2
DELAY: MOV A,#0AH ; Delay
MOV R3,A
LOOP3: NOP
LOOP4: DJNZ B,LOOP4
LOOP5: DJNZ B,LOOP5
DJNZ R3,LOOP3
RET
END ; End of program