winnie 发表于 2009-5-6 10:11:17

读写PIC18F452单片机內部EEPROM的实例

list        p=18f452
                   #include        <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
         movffData_EE_Addr,EEADR
         movffData_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
页: [1]
查看完整版本: 读写PIC18F452单片机內部EEPROM的实例