PIC16F87X
DS30292C-page 44
2001 Microchip Technology Inc.
4.4
Reading the FLASH Program
Memory
Reading FLASH program memory is much like that of
EEPROM data memory, only two NOP instructions must
be inserted after the RD bit is set. These two instruction
cycles that the NOP instructions execute, will be used
by the microcontroller to read the data out of program
memory
and
insert
the
value
into
the
EEDATH:EEDATA registers. Data will be available fol-
lowing the second NOP instruction. EEDATH and
EEDATA will hold their value until another read opera-
tion is initiated, or until they are written by firmware.
The steps to reading the FLASH program memory are:
1.
Write the address to EEADRH:EEADR. Make
sure that the address is not larger than the mem-
ory size of the PIC16F87X device.
2.
Set the EEPGD bit to point to FLASH program
memory.
3.
Set the RD bit to start the read operation.
4.
Execute two NOP instructions to allow the micro-
controller to read out of program memory.
5.
Read the data from the EEDATH:EEDATA
registers.
EXAMPLE 4-3:
FLASH PROGRAM READ
4.5
Writing to the FLASH Program
Memory
Writing to FLASH program memory is unique, in that
the microcontroller does not execute instructions while
programming is taking place. The oscillator continues
to run and all peripherals continue to operate and
queue interrupts, if enabled. Once the write operation
completes (specification D133), the processor begins
executing code from where it left off. The other impor-
tant difference when writing to FLASH program mem-
ory, is that the WRT configuration bit, when clear,
prevents any writes to program memory (see Table 4-1).
Just like EEPROM data memory, there are many steps
in writing to the FLASH program memory. Both address
and data values must be written to the SFRs. The
EEPGD bit must be set, and the WREN bit must be set
to enable writes. The WREN bit should be kept clear at
all times, except when writing to the FLASH Program
memory. The WR bit can only be set if the WREN bit
was set in a previous operation, i.e., they both cannot
be set in the same operation. The WREN bit should
then be cleared by firmware after the write. Clearing the
WREN bit before the write actually completes will not
terminate the write in progress.
Writes to program memory must also be prefaced with
a special sequence of instructions that prevent inad-
vertent write operations. This is a sequence of five
instructions that must be executed without interruption
for each byte written. These instructions must then be
followed by two NOP instructions to allow the microcon-
troller to setup for the write operation. Once the write is
complete, the execution of instructions starts with the
instruction after the second NOP.
The steps to write to program memory are:
1.
Write the address to EEADRH:EEADR. Make
sure that the address is not larger than the mem-
ory size of the PIC16F87X device.
2.
Write the 14-bit data value to be programmed in
the EEDATH:EEDATA registers.
3.
Set the EEPGD bit to point to FLASH program
memory.
4.
Set the WREN bit to enable program operations.
5.
Disable interrupts (if enabled).
6.
Execute the special five instruction sequence:
Write 55h to EECON2 in two steps (first to W,
then to EECON2)
Write AAh to EECON2 in two steps (first to W,
then to EECON2)
Set the WR bit
7.
Execute two NOP instructions to allow the micro-
controller to setup for write operation.
8.
Enable interrupts (if using interrupts).
9.
Clear the WREN bit to disable program
operations.
BSF
STATUS, RP1
;
BCF
STATUS, RP0
;Bank 2
MOVF
ADDRL, W
;Write the
MOVWF
EEADR
;address bytes
MOVF
ADDRH,W
;for the desired
MOVWF
EEADRH
;address to read
BSF
STATUS, RP0
;Bank 3
BSF
EECON1, EEPGD ;Point to Program memory
BSF
EECON1, RD
;Start read operation
NOP
;Required two NOPs
NOP
;
BCF
STATUS, RP0
;Bank 2
MOVF
EEDATA, W
;DATAL = EEDATA
MOVWF
DATAL
;
MOVF
EEDATH,W
;DATAH = EEDATH
MOVWF
DATAH
;
相关PDF资料
PIC16F877T-10E/PT IC MCU FLASH 8KX14 EE 44TQFP
22-15-3053 CONN FFC/FPC 5POS .100 RT ANG
PIC16C58BT-40/SS IC MCU OTP 2KX12 20SSOP
PIC16C57CT-40/SO IC MCU OTP 2KX12 28SOIC
PIC16C55AT-40/SO IC MCU OTP 512X12 28SOIC
PIC16C56AT-40/SO IC MCU OTP 1KX12 18SOIC
PIC16C57CT-40/SS IC MCU OTP 2KX12 28SSOP
22-02-3053 CONN FFC/FPC 5POS .100 VERTICAL
相关代理商/技术参数
PIC16F873T-04I/SO 功能描述:8位微控制器 -MCU 7KB 192 RAM 22 I/O RoHS:否 制造商:Silicon Labs 核心:8051 处理器系列:C8051F39x 数据总线宽度:8 bit 最大时钟频率:50 MHz 程序存储器大小:16 KB 数据 RAM 大小:1 KB 片上 ADC:Yes 工作电源电压:1.8 V to 3.6 V 工作温度范围:- 40 C to + 105 C 封装 / 箱体:QFN-20 安装风格:SMD/SMT
PIC16F873T-10E/SO 功能描述:8位微控制器 -MCU 7KB 192 RAM 22 I/O RoHS:否 制造商:Silicon Labs 核心:8051 处理器系列:C8051F39x 数据总线宽度:8 bit 最大时钟频率:50 MHz 程序存储器大小:16 KB 数据 RAM 大小:1 KB 片上 ADC:Yes 工作电源电压:1.8 V to 3.6 V 工作温度范围:- 40 C to + 105 C 封装 / 箱体:QFN-20 安装风格:SMD/SMT
PIC16F873T-20/SO 功能描述:8位微控制器 -MCU 7KB 192 RAM 22 I/O RoHS:否 制造商:Silicon Labs 核心:8051 处理器系列:C8051F39x 数据总线宽度:8 bit 最大时钟频率:50 MHz 程序存储器大小:16 KB 数据 RAM 大小:1 KB 片上 ADC:Yes 工作电源电压:1.8 V to 3.6 V 工作温度范围:- 40 C to + 105 C 封装 / 箱体:QFN-20 安装风格:SMD/SMT
PIC16F873T-20I/SO 功能描述:8位微控制器 -MCU 7KB 192 RAM 22 I/O RoHS:否 制造商:Silicon Labs 核心:8051 处理器系列:C8051F39x 数据总线宽度:8 bit 最大时钟频率:50 MHz 程序存储器大小:16 KB 数据 RAM 大小:1 KB 片上 ADC:Yes 工作电源电压:1.8 V to 3.6 V 工作温度范围:- 40 C to + 105 C 封装 / 箱体:QFN-20 安装风格:SMD/SMT
PIC16F874-04/L 功能描述:8位微控制器 -MCU 7KB 192 RAM 33 I/O RoHS:否 制造商:Silicon Labs 核心:8051 处理器系列:C8051F39x 数据总线宽度:8 bit 最大时钟频率:50 MHz 程序存储器大小:16 KB 数据 RAM 大小:1 KB 片上 ADC:Yes 工作电源电压:1.8 V to 3.6 V 工作温度范围:- 40 C to + 105 C 封装 / 箱体:QFN-20 安装风格:SMD/SMT
PIC16F874-04/L 制造商:Microchip Technology Inc 功能描述:8BIT FLASH MCU SMD 16F874 PLCC44
PIC16F87404/P 制造商:Microchip Technology Inc 功能描述:MICROCONTROLLER IC
PIC16F874-04/P 功能描述:8位微控制器 -MCU 7KB 192 RAM 33 I/O RoHS:否 制造商:Silicon Labs 核心:8051 处理器系列:C8051F39x 数据总线宽度:8 bit 最大时钟频率:50 MHz 程序存储器大小:16 KB 数据 RAM 大小:1 KB 片上 ADC:Yes 工作电源电压:1.8 V to 3.6 V 工作温度范围:- 40 C to + 105 C 封装 / 箱体:QFN-20 安装风格:SMD/SMT