久久久久久久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;//返回讀取的數據
}
關閉窗口
主站蜘蛛池模板: 国产a区| 国产精品视频网站 | 国产精品高清在线 | 久久国产精品久久久久久 | 午夜看电影在线观看 | 成人中文字幕av | 亚洲一二三在线 | www.夜夜骑| 伊人久久在线观看 | 亚洲成人免费 | 日韩欧美综合 | 视频在线观看一区二区 | www.狠狠干 | 三级成人在线观看 | 婷婷综合五月天 | 99精品视频一区二区三区 | 亚洲国产精品成人综合久久久 | 国产欧美一区二区三区久久人妖 | 大香网伊人 | 国产成人精品在线 | 国产一区二区毛片 | 精久久久 | 中文在线一区 | 岛国av一区二区三区 | av不卡一区 | 国产aⅴ爽av久久久久久久 | 国产午夜亚洲精品不卡 | 国产精品毛片av一区 | 日韩欧美国产精品一区二区 | 欧美日韩综合一区 | 在线播放中文字幕 | 黄色电影在线免费观看 | 亚州激情 | 亚洲日本欧美日韩高观看 | 精品欧美激情精品一区 | 日韩www | 国产一区二区电影 | 精品欧美激情在线观看 | 一级毛片视频在线 | 久久久久精 | 91福利网址|