您现在的位置是:首页 > 单片机

读写PIC18F452內部EEPROM的实例源程序

2020-03-21 02:15:12

读写PIC18F452內部EEPROM的实例源程序

 list p=18f452
     #i nclude <P18F452.INC>
;  
;---- 18F452 RAM LOCATIONS ------
Data_EE_Addr   EQU   0X000
Data_EE_Data   EQU   0X001
EEPROM_Buffer equ  0x02
;--------VECTORS------------

  org  0x00  
        bra     START

;-------PROGRAM--------------
  
        org  0x20
START
        rcall   INIT
;
;----   Test the WRITE EEPROM RouTIne ----
;
  clrf Data_EE_Addr ; set EEPROM start address at 0x00
  movlw '0'    ; Load a ASCII code "0" to W
  movwf Data_EE_Data
EE_Write
  rcall IN_DATA_EEW
  incf Data_EE_Data,F ; 0x30+ N
  incf Data_EE_Addr,F  ; Point to next EEPROM Address
  btfss Data_EE_Addr,5 ; Write 32 bytes ?
  goto EE_Write
;
;----   Test the READ EEPROM RouTIne ----
;
  clrf FSR0H   ; Set RAM point to 0x010
  movlw 0x10
  movwf FSR0L

  clrf Data_EE_Addr
EE_Read
  rcall READ_EEPROM
  movwf POSTINC0  ; move W --> RAM then point + 1
;
  incf Data_EE_Addr,F  ; Point to next EEPROM Address
  btfss Data_EE_Addr,5 ; Read 32 bytes ?
  goto EE_Read
;
LSTOP     
        GOTO   LSTOP        
;
;------ INTERNAL EEPROM READ ------
;
READ_EEPROM
  movff Data_EE_Addr,EEADR
;
;       bcf     INTCON,GIE 
  bcf  EECON1,EEPGD
  bsf  EECON1,RD
  movf EEDATA,W
;       bsf     INTCON,GIE 
  return
;
;----INTERNAL EEPROM WRITE-----
;
IN_DATA_EEW
         movff  Data_EE_Addr,EEADR
         movff  Data_EE_Data,EEDATA
;
         BCF     EECON1,EEPGD
         BCF    EECON1,CFGS   ; There are difference with data sheet
     
;         BCF     INTCON,GIE  
           
         BSF     EECON1,WREN

         MOVLW   0X55
         MOVWF   EECON2
         MOVLW   0XAA
         MOVWF   EECON2     
         BSF    EECON1,WR
;        
;         BSF   INTCON,GIE

LOOP1    BTFSS   PIR2, EEIF
         GOTO    LOOP1
;
         BCF    EECON1,WREN  
         BCF     PIR2,EEIF
     
         RETURN

;---------INITIAL----------------
INIT     
         BCF      PIR2,EEIF
         BCF      PIE2,EEIE
         RETURN
;--------------------------------
            END