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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

PIC16F877A 內部EEPROM讀寫實驗

作者:佚名   來源:不詳   點擊數:  更新時間:2014年08月31日   【字體:

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

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

void WriteEE(uint8 addr,uint8 data);//EEPROM寫函數
uint8 ReadEE(uint8 addr);   //EEPROM讀函數
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]; //取出數據,送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) //主函數
{
   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);    //從片內EEPROM中的地址0X10中讀出數據
 
// GIE = 1;
   while(1)
   {
  Display(0,buf/100);
  Display(1,buf/10%10);
  Display(2,buf%100%10);                         
   }}
//EEPROM寫數據函數
void WriteEE(uint8 addr,uint8 data)
{
    do{}
    while(WR == 1);//等待寫完成
   
   
    EEADR = addr;//寫入地址信息
    EEDATA = data;//寫入數據信息
    EEPGD = 0;//操作EEPROM
     WREN = 1; //寫EEPROM允許
    EECON2 = 0x55;//寫入特定時序
    EECON2 = 0xaa;
    WR = 1; //執行寫操作
    do{}
    while(WR == 1);//等待寫完成
    WREN = 0;//禁止寫入EEPROM
}
//EEPROM讀數據函數
uint8 ReadEE(uint8 addr)
{
    uint8 num;
    do{}
    while(RD == 1);//等待讀完成
    EEADR = addr;//寫入要讀的址址
    EEPGD = 0;//操作EEPROM
    RD = 1;//執行讀操作
    do{}
    while(RD == 1);//等待讀完成
    num = EEDATA;
    return num;//返回讀取的數據
}
關閉窗口
主站蜘蛛池模板: 在线观看av不卡 | 久久久网| 欧美激情综合网 | 日本字幕在线观看 | a免费在线| 一区二区在线观看免费视频 | 亚洲a毛片 | 精品国产一区二区三区观看不卡 | 黄色一级免费观看 | 日韩一区二区成人 | 国产亚洲一区二区三区 | 欧美一区二区三 | 91天堂网 | 特级特黄特色的免费大片 | 天天综合天天 | 天堂久久一区 | 国产精品久久久久久久久久三级 | 成人一区二区三区在线观看 | 91精品国产一区二区在线观看 | 国产成人免费视频网站视频社区 | 久久一二区| 日韩一三区 | 久久久久亚洲精品 | 国产伦精品一区二区三毛 | 国产一区二区视频在线 | 四虎影视一区二区 | 男插女下体视频 | 99国产精品久久久久老师 | 久久99精品久久久久婷婷 | 色欧美片视频在线观看 | 草草在线观看 | 久久九精品 | 蜜桃久久 | 中文一区二区 | 91av在线不卡| 日韩午夜影院 | 草久在线视频 | 欧美日韩在线电影 | 密色视频| 伊人免费在线观看 | 久久久久久国产精品久久 |