English
Language : 

PIC18F1220_07 Datasheet, PDF (66/308 Pages) Microchip Technology – 18/20/28-Pin High-Performance, Enhanced Flash Microcontrollers with 10-bit A/D and nanoWatt Technology
PIC18F1220/1320
EXAMPLE 6-3: WRITING TO FLASH PROGRAM MEMORY
MOVLW D'64
MOVWF COUNTER
MOVLW BUFFER_ADDR_HIGH
MOVWF FSR0H
MOVLW BUFFER_ADDR_LOW
MOVWF FSR0L
MOVLW CODE_ADDR_UPPER
MOVWF TBLPTRU
MOVLW CODE_ADDR_HIGH
MOVWF TBLPTRH
MOVLW CODE_ADDR_LOW
MOVWF TBLPTRL
READ_BLOCK
TBLRD*+
MOVF TABLAT, W
MOVWF POSTINC0
DECFSZ COUNTER
GOTO READ_BLOCK
MODIFY_WORD
MOVLW DATA_ADDR_HIGH
MOVWF FSR0H
MOVLW DATA_ADDR_LOW
MOVWF FSR0L
MOVLW NEW_DATA_LOW
MOVWF POSTINC0
MOVLW NEW_DATA_HIGH
MOVWF INDF0
ERASE_BLOCK
MOVLW CODE_ADDR_UPPER
MOVWF TBLPTRU
MOVLW CODE_ADDR_HIGH
MOVWF TBLPTRH
MOVLW CODE_ADDR_LOW
MOVWF TBLPTRL
BCF
EECON1, CFGS
BSF
EECON1, EEPGD
BSF
EECON1, WREN
BSF
EECON1, FREE
BCF
INTCON, GIE
MOVLW 55h
MOVWF EECON2
MOVLW AAh
MOVWF EECON2
BSF
EECON1, WR
NOP
BSF
INTCON, GIE
WRITE_BUFFER_BACK
MOVLW 8
MOVWF COUNTER_HI
MOVLW BUFFER_ADDR_HIGH
MOVWF FSR0H
MOVLW BUFFER_ADDR_LOW
MOVWF FSR0L
PROGRAM_LOOP
MOVLW 8
MOVWF COUNTER
; number of bytes in erase block
; point to buffer
; Load TBLPTR with the base
; address of the memory block
; 6 LSB = 0
; read into TABLAT, and inc
; get data
; store data and increment FSR0
; done?
; repeat
; point to buffer
; update buffer word and increment FSR0
; update buffer word
; load TBLPTR with the base
; address of the memory block
; 6 LSB = 0
; point to PROG/EEPROM memory
; point to FLASH program memory
; enable write to memory
; enable Row Erase operation
; disable interrupts
; Required sequence
; write 55H
; write AAH
; start erase (CPU stall)
; re-enable interrupts
; number of write buffer groups of 8 bytes
; point to buffer
; number of bytes in holding register
DS39605F-page 64
© 2007 Microchip Technology Inc.