婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> EDA開發應用 >> Keilc >> 正文

AT24C01-AT24C256 的Keil C51讀寫程序

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2016-10-13

/* 以下為AT24C01~AT24C256的讀寫程序,各人可根據自己的需要應用。
在buf1中填入需要寫入的內容,buf2的大小可根據需要定義。
addr可根據使用的芯片選擇,可從任何位置讀寫,只要在該芯片的范圍內。
enumer=ATxxx,根據使用的芯片賦值。各函數中的形式參數不需改變。
本程序只要在調用的程序中定義實際參數即可,下述各子程序不必改動。*/

#include <reg52.h>
#include <intrins.h>
#define  ERROR 10     //允許ERROR的最大次數      
sbit     SDA=P3^0;
sbit     SCL=P3^1;
enum  eepromtype {AT2401,AT2402,AT2404,AT2408,AT2416,AT2432,AT2464,AT24128,AT24256};/*器件的型號*/
enum  eepromtype enumer;   //定義一個枚舉變量
unsigned char code buf1 []={1,3,5,7,9,10,11,12,13,15}; /* 發送緩沖區 */
unsigned char buf2 [10]; /* 接收緩沖區 */

/* 一個通用的24C01-24C256共9種EEPROM的字節讀寫操作程序,
此程序有五個入口條件,分別為讀寫數據緩沖區指針,
進行讀寫的字節數,EEPROM首址,EEPROM控制字節,
以及EEPROM類型。此程序結構性良好,具有極好的容錯性,程序機器碼也不多:
DataBuff為讀寫數據輸入/輸出緩沖區的首址
Length 為要讀寫數據的字節數量
Addr 為EEPROM的片內地址 AT24256為0~32767
Control 為EEPROM的控制字節,具體形式為(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中R/W=1,
表示讀操作,R/W=0為寫操作,A2,A1,A0為EEPROM的頁選或片選地址;
enumer為枚舉變量,需為AT2401至AT24256中的一種,分別對應AT24C01至AT24C256;
函數返回值為一個位變量,若返回1表示此次操作失效,0表示操作成功;
ERROR為允許最大次數,若出現ERRORCOUNT次操作失效后,則函數中止操作,并返回1
SDA和SCL由用戶自定義,這里暫定義為P3^0和P3^1; */
/*對于1K位,2K位,4K位,8K位,16K位芯片采用一個8位長的字節地址碼,對于32K位以上
的采用2個8位長的字節地址碼直接尋址,而4K位,8K位,16K位配合頁面地址來尋址*/

/* -----  AT24C01~AT24C256 的讀寫程序 ------ */
bit   RW24xx(unsigned char *DataBuff,unsigned char Length,unsigned int Addr,
                     unsigned char Control,enum eepromtype enumer)
{ void Delay(unsigned char DelayCount);  /*   延時   */
  void Start(void);  /*   啟動總線   */
  void Stop(void);   /*   停止IIC總線   */
  bit  RecAck(void); /*   檢查應答位   */
  void NoAck(void);  /*   不對IIC總線產生應答   */
  void Ack(void);    /*   對IIC總線產生應答   */
  unsigned char Receive(void); /*   從IIC總線上讀數據子程序  */
  void Send(unsigned char sendbyte); /*   向IIC總線寫數據   */
  unsigned char data j,i=ERROR;
  bit errorflag=1;  /*   出錯標志   */
  while(i--)
  { Start();  /*   啟動總線   */
    Send(Control & 0xfe); /*   向IIC總線寫數據,器件地址 */
    if(RecAck()) continue; /*   如寫不正確結束本次循環   */
    if(enumer > AT2416)
    { Send((unsigned char)(Addr >> 8));//把整型數據轉換為字符型數據:棄高取低,只取低8位.如果容量大于32K位,使用16位地址尋址,寫入高八位地址
      if(RecAck())  continue;
    }
    Send((unsigned char)Addr); /*   向IIC總線寫數據   */
    if(RecAck())  continue; /*   如寫正確結束本次循環   */
    if(!(Control & 0x01))   //判斷是讀器件還是寫器件
    { j=Length;
      errorflag=0;         /* 清錯誤特征位 */
      while(j--)
      { Send(*DataBuff++); /*   向IIC總線寫數據   */
        if(!RecAck()) continue; /*   如寫正確結束本次循環   */
        errorflag=1;
        break;
      }
      if(errorflag==1) continue;
      break;
    }
    else
    { Start();  /*   啟動總線   */
      Send(Control); /*   向IIC總線寫數據   */
      if(RecAck()) continue;//器件沒應答結束本次本層循環
      while(--Length)  /*   字節長為0結束   */
      { *DataBuff ++= Receive();
        Ack();   /*   對IIC總線產生應答   */
      }
      *DataBuff=Receive(); /* 讀最后一個字節 */
      NoAck();  /*   不對IIC總線產生應答   */
      errorflag=0;
      break;
    }
  }
  Stop();  /*   停止IIC總線   */
  if(!(Control & 0x01))
  { Delay(255); Delay(255); Delay(255); Delay(255);
  }
  return(errorflag);
}

/* * * * * 以下是對IIC總線的操作子程序 * * * * */
/* * * * * * 啟動總線 * * * * */
void Start(void)
{ SCL=0; /* SCL處于高電平時,SDA從高電平轉向低電平表示 */
  SDA=1; /* 一個"開始"狀態,該狀態必須在其他命令之前執行 */
  SCL=1;
  _nop_(); _nop_(); _nop_();
  SDA=0;
  _nop_(); _nop_(); _nop_(); _nop_();
  SCL=0;
  SDA=1;    
}

/* * * * * 停止IIC總線 * * * * */
void Stop(void)
{ SCL=0; /*SCL處于高電平時,SDA從低電平轉向高電平 */
  SDA=0; /*表示一個"停止"狀態,該狀態終止所有通訊 */
  SCL=1;
  _nop_(); _nop_(); _nop_(); /* 空操作 */
  SDA=1;
  _nop_(); _nop_(); _nop_();
  SCL=0;
}

/* * * * * 檢查應答位 * * * * */
bit RecAck(void)
{ SCL=0;
  SDA=1;
  SCL=1;
  _nop_(); _nop_(); _nop_(); _nop_();
  CY=SDA;     /* 因為返回值總是放在CY中的 */
  SCL=0;
  return(CY);
}

/* * * * *對IIC總線產生應答 * * * * */
void Ack(void)
{ SDA=0; /* EEPROM通過在收到每個地址或數據之后, */
  SCL=1; /* 置SDA低電平的方式確認表示收到讀SDA口狀態 */
  _nop_(); _nop_(); _nop_(); _nop_();
  SCL=0;
  _nop_();
  SDA=1;
}

/* * * * * * * * * 不對IIC總線產生應答 * * * * */
void NoAck(void)
{ SDA=1;
  SCL=1;
  _nop_(); _nop_(); _nop_(); _nop_();
  SCL=0;
}

/* * * * * * * * * 向IIC總線寫數據 * * * * */
void Send(unsigned char sendbyte)
{ unsigned char data j=8;
  for(;j>0;j--)
  { SCL=0;
    sendbyte <<= 1; /* 使CY=sendbyte^7; */
    SDA=CY; /* CY 進位標志位 */
    SCL=1;
  }
  SCL=0;
}

/* * * * * * * * * 從IIC總線上讀數據子程序 * * * * */
unsigned char Receive(void)
{ register receivebyte,i=8;
  SCL=0;
  while(i--)
  { SCL=1;
    receivebyte = (receivebyte <<1 ) | SDA;
    SCL=0;
  }
  return(receivebyte);
}

/* * * * * * * * 一個簡單延時程序 * * * * * * * * * * * * */
void Delay(unsigned char DelayCount)
{ while(DelayCount--);
}

/* -----  AT24C01~AT24C256 的讀寫程序 ------ */
void main()
{ unsigned char Control,*p1,*p2;
  unsigned char Length;
  unsigned int addr ; /* 24Cxx片內地址 */
  p1=buf1;p2=buf2;
  addr=0; /* 片內地址 AT24C256為0~32767 */
  Length=8; /* 讀寫長度 */
  enumer=AT24256; /* 讀寫AT24C256 */
  Control=0xa0; /* 寫操作 */
  RW24xx(p1,Length,addr,Control,enumer); /* 寫 */
  Control=0xa1; /* 讀操作 */
  RW24xx(p2,Length,addr,Control,enumer); /* 讀 */
}

Tags:keilC,24C01,24C256  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒有了
  • 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁面
    下到頁底
    晶體管查詢
    婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
    <button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 三上悠亚av一区二区三区| 无码人妻丰满熟妇区毛片| 亚洲一区二区福利视频| 中文字幕第80页| 欧美性猛交内射兽交老熟妇| 密臀av一区二区三区| a级免费在线观看| 亚洲黄色av片| xx欧美撒尿嘘撒尿xx| 成人午夜视频免费在线观看| 欧美乱做爰xxxⅹ久久久| 91aaa精品| 欧美丝袜在线观看| 国产一二三四五| 国产精品无码专区av在线播放| 日韩精品一区二区免费| 国产一级片中文字幕| 亚洲天堂av一区二区三区| 亚洲天堂网2018| 亚洲综合激情视频| 日韩网站在线免费观看| 精品久久久久久久免费人妻| 激情六月丁香婷婷| 日韩免费毛片视频| 男人靠女人免费视频网站| 五月婷婷六月丁香激情| 黄色三级视频在线| 一级黄色免费在线观看| 欧美成人黑人猛交| 亚洲一区二区偷拍| 日本精品久久久久久久久久| 国产午夜福利100集发布| 日本一区午夜艳熟免费| 国产深夜男女无套内射| 日韩欧美国产免费| 亚洲熟女乱色一区二区三区 | 69sex久久精品国产麻豆| 手机在线视频一区| 欧美一级视频在线| 一本久道高清无码视频| 国产资源在线免费观看| 玩弄中年熟妇正在播放| 日本在线xxx| 九色porny91| 天天久久综合网| 欧美黑人在线观看| 无码人妻h动漫| 91高清国产视频| 男人天堂网站在线| 精品一二三四五区| 国内精品国产三级国产99| 久久综合久久网| 男人舔女人下面高潮视频| 激情五月俺来也| 少妇大叫太大太粗太爽了a片小说| 免费人成在线观看视频播放| 欧美成人免费高清视频| 色www免费视频| 99er在线视频| 欧美伦理片在线观看| 亚洲精品永久视频| 成人免费在线小视频| 亚洲 欧美 日韩系列| 欧美激情第四页| 波多野结衣50连登视频| 国产高清av片| 男生操女生视频在线观看| 三级在线免费看| 激情成人开心网| 欧美在线观看成人| 日本熟妇人妻xxxxx| 国产欧美综合一区| 五月天av在线播放| 国产亚洲精品网站| 中文字幕日韩精品无码内射| av无码精品一区二区三区| 久久成人福利视频| 久久久福利影院| 精品人妻少妇一区二区| 深夜做爰性大片蜜桃| 日本福利视频在线| 男人的天堂99| 欧美成人xxxxx| 久久国产精品视频在线观看| 福利在线小视频| 在线观看17c| 少妇高潮喷水久久久久久久久久| 91人人澡人人爽人人精品| av观看免费在线| 九九九九九国产| 爱情岛论坛vip永久入口| 日本激情综合网| 国产av人人夜夜澡人人爽麻豆 | 久久久无码中文字幕久...| 国产精品亚洲a| 免费无码国产v片在线观看| 日韩av片网站| 黄色一级片网址| 天天干天天曰天天操| 男女高潮又爽又黄又无遮挡| 国产伦精品一区二区三区四区视频_ | 日韩成人av免费| 性生活免费在线观看| 鲁一鲁一鲁一鲁一色| www插插插无码视频网站| 免费在线观看的av网站| 国产免费人做人爱午夜视频| 欧美乱做爰xxxⅹ久久久| 国产成人精品免费看在线播放| 91av在线免费播放| 欧美另类videosbestsex日本| 免费在线观看的av网站| 欧美三级在线观看视频| 奇米精品一区二区三区| 久久精品影视大全| 午夜剧场在线免费观看| 免费无遮挡无码永久视频| 欧美亚洲日本在线观看| 玩弄中年熟妇正在播放| 欧美精品色婷婷五月综合| 欧美,日韩,国产在线| av久久久久久| 男女爱爱视频网站| 国产精品va无码一区二区| 亚洲涩涩在线观看| 最新av在线免费观看| 亚洲一区 在线播放| 国产淫片av片久久久久久| 亚洲精品一二三四五区| 日韩视频在线免费看| 妺妺窝人体色www在线观看| 日韩av在线综合| 欧美国产综合在线| 男人天堂av片| 天堂av2020| 日韩视频第二页| 色中文字幕在线观看| 久久国产亚洲精品无码| 手机在线免费毛片| 看一级黄色录像| 成年人视频在线免费| www黄色日本| 免费av不卡在线| av丝袜天堂网| 美女网站免费观看视频| 久久精品免费网站| 成年人观看网站| 思思久久精品视频| 日本a级片在线播放| 国产日韩一区二区在线| 久久9精品区-无套内射无码| 黄色成人免费看| 免费黄色福利视频| xx欧美撒尿嘘撒尿xx| 免费大片在线观看| 日韩a∨精品日韩在线观看| 亚洲色图都市激情| 伊人国产精品视频| 粗暴91大变态调教| 成人免费看片'免费看| 日韩久久一级片| 日韩av片在线看| 强开小嫩苞一区二区三区网站| 亚洲精品国产久| 久久精品一区二| 搡女人真爽免费午夜网站| 黄色三级视频在线| 怡红院亚洲色图| 九九九久久久久久久| 天堂在线资源视频| 天堂中文av在线| 天天摸天天碰天天添| 在线视频观看一区二区| 国产三级三级看三级| 另类小说第一页| 91aaa精品| wwwjizzjizzcom| 日本三级中文字幕在线观看| 日韩成人三级视频| 国产91在线免费| 情侣黄网站免费看| 国产又黄又猛又粗| 香蕉视频在线网址| 国产精品专区在线| 天天色综合天天色| 男女爽爽爽视频| 成人性生交视频免费观看| 黄色片免费在线观看视频| 国产美女网站在线观看| 精品日韩久久久| 欧美a级黄色大片| 无码人妻h动漫| 成人高清dvd| 一本久道综合色婷婷五月| 国产成人av影视| 五月婷婷激情久久| 成人免费看片'免费看| 91制片厂毛片| wwwjizzjizzcom| 国产精欧美一区二区三区白种人|