位置:51电子网 » 技术资料 » 单 片 机

PIC单片机16F84的内部硬件资源(八)

发布时间:2008/5/27 0:00:00 访问次数:569

http://www.hificat.com

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



http://www.hificat.com

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



相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!