
flash_Erase: MOV R7,#00 ; RAM POINTER 
             MOV R3,#64 ; 64 BYTES TO BE ERASED 
             MOV FMCON,#00H ; "LOAD" COMMAND 
             MOV FMADRH,#04H; ADDRESS HIGH 
             MOV FMADRL,#40H; ADDRESS LOW 
              MOV A,R7 
             MOV R0,A 
LOAD_PAGE:   MOV FMDATA,@R0 
             INC R0 
             DJNZ R3,LOAD_PAGE 
             MOV FMCON,#68H; "ERASE" COMMAND FOR 89LPC952 
             MOV R7,FMCON ; TO READ STATUS MOV A,R7 
             ANL A,#0FH; CHECK THE STATUS OF FMCON 
             JNZ BAD ; REGISTER AND IF ERASED IT IS ZERO 
             CLR C
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
             MOV R3,#64 ; 64 BYTES TO BE ERASED 
             MOV FMCON,#00H ; "LOAD" COMMAND 
             MOV FMADRH,#04H; ADDRESS HIGH 
             MOV FMADRL,#40H; ADDRESS LOW 
LOAD_PAGE1:  MOV FMDATA,#32H ; TO WRITE "32H" TO ADDRESS 0440H
             DJNZ R3,LOAD_PAGE1; TO 0480H
             RET 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BAD:         SETB C ; SET THE CARRY REGISTER IF NOT 
             RET ; ANY ERROR FOUND IN PROGRAMMING 
