⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pic29.htm

📁 pic单片机原理
💻 HTM
字号:
<html>
<head>
<title>PIC单片机原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
BODY {font-size:12px;font-family:宋体;}
td {font-size:12px;font-family:宋体;}

A:link {	COLOR: #0000ff; TEXT-DECORATION: underline}
A:visited {	COLOR:#0000ff; TEXT-DECORATION: underline}
A:active {	COLOR:red! important; TEXT-DECORATION: underline}
A:hover {	TEXT-DECORATION: none}
.b24 a:link {	FONT-SIZE: 12px; COLOR:#0000ff; TEXT-DECORATION: underline}
.b24 a:visited {FONT-SIZE: 12px; COLOR:#0000ff; TEXT-DECORATION: underline}
.b24 a:active {	FONT-SIZE: 12px; COLOR:#0000ff; TEXT-DECORATION: underline}
.b24 a:hover {	FONT-SIZE: 12px; COLOR:#990000; TEXT-DECORATION: none}
.lh13 {	LINE-HEIGHT: 130%}
.lh15 {	LINE-HEIGHT: 150%}
.lh17 {	LINE-HEIGHT: 170%}
.lh19 {	LINE-HEIGHT: 190%}
.lh30 {	LINE-HEIGHT: 300%}

-->
</style>
</head>

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -