久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

PIC16F877A 內(nèi)部EEPROM讀寫實(shí)驗(yàn)

作者:佚名   來源:不詳   點(diǎn)擊數(shù):  更新時(shí)間:2014年08月31日   【字體:

/******************************************
******PIC16F877A 內(nèi)部EEPROM讀寫實(shí)驗(yàn)*******好象還有點(diǎn)問題,沒有寫進(jìn)去?
Author:hnrain
Date:2010-12-25
Version:V0.1
Email:hnrain1004@gmail.com
_______________________________
實(shí)驗(yàn)現(xiàn)象:先給內(nèi)部EEPROM的0~7字節(jié)寫數(shù)據(jù)1~8,再讀出第0字節(jié)的
內(nèi)容,并判斷讀出來的數(shù)據(jù)是不是1,如果是1則點(diǎn)亮RD0口的LED。

重點(diǎn)內(nèi)容:
內(nèi)部EEPROM的操作主要通過4個(gè)寄存器
EECON1,EECON2,EEDATA,EEADR
EEDATA寄存器存放8位讀寫數(shù)據(jù)
EEADR存放EEPROM被訪問過的地址
EECON1寄存器定義:
bit7:5 未用;讀為0
bit4   EEIF:EEPROM寫操作中斷標(biāo)志位
 = 寫操作完成(必須軟件清零)
 = 寫操作未完成或還未開始
bit3   WRERR:EEPROM錯(cuò)誤標(biāo)志位
 = 寫操作過早終止
 = 寫操作已完成
bit2   WREN:EEPROM寫使能位
 = 允許寫入
 = 禁止寫入EEPROM
bit1   WR:寫操作控制位
 = 啟動(dòng)寫周期,一旦寫入完成,該位將被硬件清零
            寫操作控制位只能用軟件置"1"
 = EEPROM的寫周期已完成
bit0   RD:讀控制位
 = 啟動(dòng)EEPROM讀操作。讀需要一個(gè)周期,RD由硬件清零
           RD只能用軟件置“1”
 = 未啟動(dòng)EEPROM讀操作
寫入EEPROM有一個(gè)特定的過程:將55H寫入EECON2,將AAH寫入EECON2
然后將WR位置1
*******************************************/
#include <pic.h>
#include "../head/config.h"
__CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);   
//HS振蕩,禁止看門狗,低壓編程關(guān)閉,啟動(dòng)延時(shí)定時(shí)器

void WriteEE(uint8 addr,uint8 data);//EEPROM寫函數(shù)
uint8 ReadEE(uint8 addr);   //EEPROM讀函數(shù)
uint8 cydata;   //定義全局變量
oid DelayMs(unsigned int t)
{
 unsigned int i,j;
 for(i=0;i<t;i++)
 {
  for(j=0;j<10;j++);
 }
}
void Display(unsigned char num,unsigned char data)             
{
 PORTD = TABLE[data]; //取出數(shù)據(jù),送D口顯示
 PORTC = 0x01;
 switch(num)
 {
  case 0:
   PORTA = 0x01;
   break;
  case 1:
   PORTA = 0x02;
   break;
  case 2:
   PORTA = 0x04;
   break;
  case 3:
   PORTA = 0x06;
   break;
  case 4:
   PORTA = 0x08;
   break;
  case 5:
   PORTA = 0x0A;
   break;
  case 6:
   PORTA = 0x0C;
   break;
  case 7:
   PORTA = 0x0E;
   break;
  
  default:
   PORTA = 0x00; 
 }
 DelayMs(2);
}
void main(void) //主函數(shù)
{
   unsigned char buf;
 GIE =0;
 TRISD = 0;     //portd 輸出
   TRISA = 0;     //porta 輸出
 TRISC = 0;     //porta 輸出
 PORTC = 0x01;     //74HC138控制端口
 DelayMs(50);
 buf=232;
// writeByte(0x15,buf);
 eeprom_write(0x30,buf);   
 buf = 0;
    DelayMs(50);
// buf = 0;
// buf = readByte(0x15);
 buf=eeprom_read(0x30);    //從片內(nèi)EEPROM中的地址0X10中讀出數(shù)據(jù)
 
// GIE = 1;
   while(1)
   {
  Display(0,buf/100);
  Display(1,buf/10%10);
  Display(2,buf%100%10);                         
   }}
//EEPROM寫數(shù)據(jù)函數(shù)
void WriteEE(uint8 addr,uint8 data)
{
    do{}
    while(WR == 1);//等待寫完成
   
   
    EEADR = addr;//寫入地址信息
    EEDATA = data;//寫入數(shù)據(jù)信息
    EEPGD = 0;//操作EEPROM
     WREN = 1; //寫EEPROM允許
    EECON2 = 0x55;//寫入特定時(shí)序
    EECON2 = 0xaa;
    WR = 1; //執(zhí)行寫操作
    do{}
    while(WR == 1);//等待寫完成
    WREN = 0;//禁止寫入EEPROM
}
//EEPROM讀數(shù)據(jù)函數(shù)
uint8 ReadEE(uint8 addr)
{
    uint8 num;
    do{}
    while(RD == 1);//等待讀完成
    EEADR = addr;//寫入要讀的址址
    EEPGD = 0;//操作EEPROM
    RD = 1;//執(zhí)行讀操作
    do{}
    while(RD == 1);//等待讀完成
    num = EEDATA;
    return num;//返回讀取的數(shù)據(jù)
}
關(guān)閉窗口
主站蜘蛛池模板: 亚洲一区毛片 | 成人影院在线 | av网站观看 | 日产精品久久久一区二区福利 | 岛国av在线免费观看 | 国产超碰人人爽人人做人人爱 | 一区二区三区视频在线 | 在线视频一区二区三区 | 精品成人| 成人免费高清 | 一区二区三区亚洲 | 一区二区免费 | 久久久影院 | 久久99精品久久久久久狂牛 | 高清一区二区 | 一区二区三区高清不卡 | 911网站大全在线观看 | 亚洲天堂一区 | 夜夜夜夜夜夜曰天天天 | 手机日韩 | 精品一区二区av | 国产精品久久久av | 亚洲欧美精品久久 | 美女天堂在线 | 在线中文字幕av | 日韩一区二区福利视频 | 日韩在线视频一区 | 黄毛片 | 一区免费观看 | 久久久久国产精品一区二区 | 久久久蜜臀国产一区二区 | 高清视频一区二区三区 | 中文二区 | 美女福利视频网站 | 在线看黄免费 | 在线成人免费视频 | 久久久久久久久久久高潮一区二区 | 成人国产精品免费观看 | 久久99国产精一区二区三区 | 这里只有精品99re | 亚洲精品一区二区三区 |