—— —— —— 技术资料下载中心

>> PIC单片机原理 \

PIC单片机16F84的内部硬件资源（八）
12 E2PROM的使用方法 在PIC16F84单片机中，除了可直接寻址的由SRAM构成的数据存储器外，还另有可电擦、电写的E2PROM数据存储器。该E2PROM共有64字节，其地址为00～3FH单元。由于E2PROM具有在线改写，并在掉电后仍能保持数据的特点，可为用户的特殊应用提供方便。16F84的E2PROM在正常操作时的整个VDD工作电压范围内是可读写的，典型情况下可重写100万次，数据保存期大于40年。 PIC16F84的E2PROM并未映象在寄存器组空间中，所以它们不能像SRAM通用寄存器那样用指令直接寻址访问，而需要通过专用寄存器进行间接寻址操作。因此，在16F84中增加了以下四个专用寄存器，即EECON1、EECON2、EEDATA、EEADR，专门用于片内对E2PROM的操作。该专用寄存器中，EEDATA存放8位读/写数据，EEADR存放正在被访问的E2PROM存储单元的地址。
EECON1是只有低五位的控制寄存器，其高三位不存在，读作“0”。具体见下表。
D7　D6　D5　D4　 D3　 D2　D1 D0
－ 　 －　 － EEIF WRERR WREN WR RD
控制位RD和WR分别用于读写操作的启动，这两位可以由软件置1，以启动读、写操作，但不能用软件清零，原因是防止不恰当的软件操作会使写入失败。当读写操作完成后由硬件自动清零，表示此刻未对E2PROM进行读写操作。当WREN位被置1时，允许进行写操作，而在上电时该位被清零。在正常操作时，一旦有MCLR或WDT复位，WRERR位就置1，表示写操作被中止。当写操作完成时，EEIF被置1(需由软件清零)；当写操作未完成或尚未启动时，EEIF为“0”。
EECON2仅是一个逻辑上的寄存器，而不是一个物理上存在的寄存器，读出时将总是为零。它只在写操作时起作用。
(1)E2PROM的读操作
为进行一次E2PROM读操作，需执行如下步骤：
1)将E2PROM的单元地址放入EEADR。2)置RD(EECON的D0位)=1。3)读取EEDATA寄存器。
程序段举例，读取25H处的E2PROM存储器数据：
…
BCF 　 STATUS，RP0 ；选Bank0
MOVLW 25H
MOVWF EEADR 　 ；地址25H→EEADR
BSF 　 STATUS，RP0 ；选Bank1
BSF EECON1，RD ；启动读操作
BCF STATUS，RP0 ；选Bank0
MOVF EEDATA，W ；将E2PROM数据
…　　 ；读入W寄存器
(2)E2PROM的写操作
要进行一次E2PROM写操作，需执行如下步骤：
1)将E2PROM单元地址放入EEADR；2)将写入数据放入EEDATA；3)执行一段控制程序段。
例如：将数据99H写入E2PROM的25H单元，需执行下列程序：
…
BCF 　 STATUS，RP0 ；送Bank0
MOVLW 25H
MOVWF EEADR　　　 ；地址→EEADR
MOVLW 99H
MOVWF EEDATA　　 ；写入数据→EEDATA
BSF 　 STATUS，RP0　；选Bank1
BSF 　 EECON1，WREN；写操作功能允许
1 BCF 　 INTCON，GIE　；关闭总中断
2 MOVLW 0x55
3 MOVWF EECON2
4 MOVLW 0xAA
5 MOVWF EECON2 ；操作EECON2
6 BSF　 EECON1，WR；启动写操作
7 BSF 　 INTCON，GIE ；开放总中断
…
注意：上列程序中的2～6条各语句必须严格执行，否则不能启动E2PROM的写操作。而1～7条则是我们建议用户执行的操作，即在E2PROM写操作序列步骤中要关闭所有中断，以免这个序列被中断打断。
另外，WREN(EECON1的D2位)是用来保证E2PROM不会被意外写入而设置的，所以，在平时，用户程序应保持WREN=0以禁止写操作。只有当需对E2PROM写入时才置WREN=1，并在写入完成后将其恢复为0。用户只有置WREN=1后才能置WREN=1启动写操作。上电复位后WREN位自动清零。
E2PROM写操作约需10ms的时间才能完成。用户程序可通过查询WR位的状态(当WR=0时表示操作已完成)，或者用E2PROM写入完成中断来判断E2PROM写操作是否完成。如要使用中断，应先置EEIF(INTCON的D6)为1，以开中断。E2PROM写完成要中断标志位EEIF，只能用软件清零。

成都　卫东

知识竞赛试题：
25简述PIC单片机带E2PROM的数据存储器的特点和用途。

[ 返回 ]