<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>單片機>AT24C02/AT24C04/AT24C08/AT24C1

AT24C02/AT24C04/AT24C08/AT24C1

2008-08-13 | rar | 444 | 次下載 | 免費

資料介紹

AT24C02/AT24C04/AT24C08/AT24C16/AT24C32/AT24C56序

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

#include
#include
#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;????
}

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關電源基礎知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統的設計與實現
  10. 0.61 MB  |  2次下載  |  免費
  11. 651單片機窗簾控制器仿真程序
  12. 1.93 MB  |  2次下載  |  免費
  13. 751單片機大棚環境控制器仿真程序
  14. 1.10 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>