文章分类

当前位置:首页>技术文章>PIC单片机16F84的内部硬件资源(八)

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,只能用软件清零。


© 星光电子技术工作室 2021 All Rights Reserved.
如有任何问题、建议、业务、合作,请联系手机/微信:13713820066