日产精品视频无码免费_亚洲蜜臀AV日韩熟妇在线_国产亚洲精品女人久久久久久 _妞中文字幕在线视频导航

電子開(kāi)發(fā)網(wǎng)

電子開(kāi)發(fā)網(wǎng)電子設(shè)計(jì) | 電子開(kāi)發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開(kāi)發(fā)網(wǎng) >> 電子開(kāi)發(fā) >> EDA開(kāi)發(fā)應(yīng)用 >> Keilc >> 正文

AT24C01-AT24C256 的Keil C51讀寫(xiě)程序

作者:佚名    文章來(lái)源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2016-10-13

/* 以下為AT24C01~AT24C256的讀寫(xiě)程序,各人可根據(jù)自己的需要應(yīng)用。
在buf1中填入需要寫(xiě)入的內(nèi)容,buf2的大小可根據(jù)需要定義。
addr可根據(jù)使用的芯片選擇,可從任何位置讀寫(xiě),只要在該芯片的范圍內(nèi)。
enumer=ATxxx,根據(jù)使用的芯片賦值。各函數(shù)中的形式參數(shù)不需改變。
本程序只要在調(diào)用的程序中定義實(shí)際參數(shù)即可,下述各子程序不必改動(dòng)。*/

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

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

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

/* * * * * 以下是對(duì)IIC總線的操作子程序 * * * * */
/* * * * * * 啟動(dòng)總線 * * * * */
void Start(void)
{ SCL=0; /* SCL處于高電平時(shí),SDA從高電平轉(zhuǎn)向低電平表示 */
  SDA=1; /* 一個(gè)"開(kāi)始"狀態(tài),該狀態(tài)必須在其他命令之前執(zhí)行 */
  SCL=1;
  _nop_(); _nop_(); _nop_();
  SDA=0;
  _nop_(); _nop_(); _nop_(); _nop_();
  SCL=0;
  SDA=1;    
}

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

/* * * * * 檢查應(yīng)答位 * * * * */
bit RecAck(void)
{ SCL=0;
  SDA=1;
  SCL=1;
  _nop_(); _nop_(); _nop_(); _nop_();
  CY=SDA;     /* 因?yàn)榉祷刂悼偸欠旁贑Y中的 */
  SCL=0;
  return(CY);
}

/* * * * *對(duì)IIC總線產(chǎn)生應(yīng)答 * * * * */
void Ack(void)
{ SDA=0; /* EEPROM通過(guò)在收到每個(gè)地址或數(shù)據(jù)之后, */
  SCL=1; /* 置SDA低電平的方式確認(rèn)表示收到讀SDA口狀態(tài) */
  _nop_(); _nop_(); _nop_(); _nop_();
  SCL=0;
  _nop_();
  SDA=1;
}

/* * * * * * * * * 不對(duì)IIC總線產(chǎn)生應(yīng)答 * * * * */
void NoAck(void)
{ SDA=1;
  SCL=1;
  _nop_(); _nop_(); _nop_(); _nop_();
  SCL=0;
}

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

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

/* * * * * * * * 一個(gè)簡(jiǎn)單延時(shí)程序 * * * * * * * * * * * * */
void Delay(unsigned char DelayCount)
{ while(DelayCount--);
}

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

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

    還可以輸入 200 個(gè)字
    [ 查看全部 ] 網(wǎng)友評(píng)論
    關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁(yè)面
    下到頁(yè)底
    晶體管查詢
    亚洲精品中文字幕久久久久久| 中文字幕一区二区三区精彩视频 | 韩国三级香港三级日本三级| 你懂的日韩| 国产韩国精品一区二区三区| 日韩在线观看免费| 免费一级生活片| 韩国三级香港三级日本三级| 国产伦精品一区二区三区无广告| 99热精品一区| 国产成人欧美一区二区三区的| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 免费毛片基地| 精品视频在线观看视频免费视频| 天天做人人爱夜夜爽2020毛片| 日韩avdvd| 精品视频在线观看一区二区| 国产不卡福利| 欧美激情伊人| 九九精品在线| 国产一区国产二区国产三区| 国产一区二区精品久久91| 四虎影视久久| a级毛片免费观看网站| 久久久久久久免费视频| 日本在线不卡视频| 日韩专区第一页| 91麻豆精品国产片在线观看| 日韩中文字幕在线亚洲一区| 国产伦精品一区二区三区无广告| 91麻豆精品国产自产在线| 欧美激情一区二区三区视频高清| 欧美1区| 成人免费网站久久久| 黄视频网站免费观看| 午夜精品国产自在现线拍| 国产高清视频免费观看| 黄色免费网站在线| 国产一区二区精品| 国产国语在线播放视频| 黄色福利片| 国产视频网站在线观看| 中文字幕97| 国产一区二区高清视频| 久久成人亚洲| 亚洲精品中文字幕久久久久久| 99热热久久| 可以免费在线看黄的网站| 成人a级高清视频在线观看| 91麻豆精品国产自产在线观看一区| 一级毛片看真人在线视频| 久久国产精品自由自在| 天天做日日干| 韩国毛片免费大片| 国产麻豆精品| 九九久久99| 成人a大片高清在线观看| 韩国三级视频网站| 久久99这里只有精品国产| 99久久网站| 国产亚洲免费观看| 国产综合91天堂亚洲国产| 成人高清护士在线播放| 国产一区二区精品久久91| 黄色免费网站在线| 国产亚洲免费观看| 成人免费观看的视频黄页| 成人免费高清视频| 日韩在线观看视频免费| 精品国产亚洲人成在线| 亚洲女人国产香蕉久久精品 | 99久久精品国产高清一区二区 | 国产一区二区精品在线观看| 国产亚洲男人的天堂在线观看| 午夜欧美成人久久久久久| 一本伊大人香蕉高清在线观看| 亚洲天堂在线播放| 日韩中文字幕一区| 亚州视频一区二区| 精品在线免费播放| 国产一区二区精品| 国产美女在线观看| 国产一区二区福利久久| 99色视频在线| 精品视频免费在线| 中文字幕97| 91麻豆精品国产自产在线| 九九久久国产精品| 青青久在线视频| 国产成人精品影视| 天天做人人爱夜夜爽2020| 国产成人啪精品| 国产成人精品在线| 亚洲爆爽| 九九精品在线| 一级女人毛片人一女人| 国产不卡在线播放| 免费一级片在线观看| 国产伦久视频免费观看 视频| 精品美女| 精品视频在线看| 亚洲第一视频在线播放| 精品视频在线观看视频免费视频| 一级女性大黄生活片免费| 国产高清在线精品一区a| 精品国产三级a∨在线观看| 日韩免费片| 九九久久国产精品| 97视频免费在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 91麻豆精品国产高清在线| 可以免费在线看黄的网站| 91麻豆国产福利精品| 日本免费区| 欧美电影免费看大全| 青青青草影院| 国产91素人搭讪系列天堂| 国产极品白嫩美女在线观看看| 国产一区二区精品久久91| 999精品在线| 欧美电影免费| 精品视频一区二区| 久久国产精品自由自在| 韩国毛片免费大片| 久久精品店| 国产a毛片| 日韩在线观看免费| 久久成人性色生活片| 欧美另类videosbestsex久久| 日本伦理黄色大片在线观看网站| 国产欧美精品午夜在线播放| 青青久久国产成人免费网站| 99久久精品国产免费| 91麻豆精品国产自产在线观看一区| 九九九网站| 国产视频网站在线观看| 国产精品1024永久免费视频| 久久国产一久久高清| 999精品在线| 九九精品影院| 日本在线播放一区| 国产精品1024在线永久免费| 欧美18性精品| 久久久成人影院| 国产精品12| 天天色成人网| 美女免费精品高清毛片在线视| 亚洲精品永久一区| 国产原创视频在线| 韩国三级香港三级日本三级| 日本特黄特色aaa大片免费| 四虎久久影院| 日韩专区一区| 久久国产影院| 国产91素人搭讪系列天堂| 精品国产三级a∨在线观看| 久久福利影视| 99久久精品国产国产毛片| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 久久精品道一区二区三区| 久久久久久久网| 可以在线看黄的网站| 国产视频一区二区三区四区| 国产视频在线免费观看| 色综合久久天天综合| 一 级 黄 中国色 片| 国产不卡精品一区二区三区| 久久成人综合网| 日韩av片免费播放| 亚洲精品永久一区| 精品国产香蕉伊思人在线又爽又黄| 一级毛片视频播放| 日韩在线观看网站| 一a一级片| 一级毛片视频播放| 999精品影视在线观看| 欧美电影免费看大全| 尤物视频网站在线| 成人影院一区二区三区| 日本特黄特黄aaaaa大片 | 精品视频在线观看视频免费视频| 日韩免费在线视频| 亚欧成人乱码一区二区 | 日本在线www| 欧美激情一区二区三区视频| 青青久久精品| 欧美a级大片| 色综合久久天天综合| 日本免费乱理伦片在线观看2018| 在线观看成人网| 日韩免费在线视频| 国产一区二区精品在线观看| 天天色成人网| 美女被草网站| 免费一级片网站| 国产精品免费精品自在线观看| 免费国产在线观看不卡| 色综合久久天天综合绕观看| 亚洲女人国产香蕉久久精品| 国产网站在线|