資料介紹
AT24C02/AT24C04/AT24C08/AT24C16/AT24C32/AT24C56序
AT24C01~AT24C256的讀寫程序,各人可根據(jù)自己的需要應(yīng)用。
在buf1中填入需要寫入的內(nèi)容,buf2的大小可根據(jù)需要定義。
addr可根據(jù)使用的芯片選擇,可從任何位置讀寫,只要在該芯片的范圍內(nèi)。
enumer=ATxxx,根據(jù)使用的芯片賦值。各函數(shù)中的形式參數(shù)不需改變。
本程序只要在調(diào)用的程序中定義實(shí)際參數(shù)即可,下述各子程序不必改動(dòng)。*/
#include
#include
#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é)讀寫操作程序,
此程序有五個(gè)入口條件,分別為讀寫數(shù)據(jù)緩沖區(qū)指針,
進(jìn)行讀寫的字節(jié)數(shù),EEPROM首址,EEPROM控制字節(jié),
以及EEPROM類型。此程序結(jié)構(gòu)性良好,具有極好的容錯(cuò)性,程序機(jī)器碼也不多:
DataBuff為讀寫數(shù)據(jù)輸入/輸出緩沖區(qū)的首址
Length 為要讀寫數(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為寫操作,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 的讀寫程序 ------ */
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總線寫數(shù)據(jù)?? */
? unsigned char data j,i=ERROR;
? bit errorflag=1;? /*?? 出錯(cuò)標(biāo)志?? */
? while(i--)
? { Start();? /*?? 啟動(dòng)總線?? */
??? Send(Control & 0xfe); /*?? 向IIC總線寫數(shù)據(jù),器件地址 */
??? if(RecAck()) continue; /*?? 如寫不正確結(jié)束本次循環(huán)?? */
??? if(enumer > AT2416)
??? { Send((unsigned char)(Addr >> 8));//把整型數(shù)據(jù)轉(zhuǎn)換為字符型數(shù)據(jù):棄高取低,只取低8位.如果容量大于32K位,使用16位地址尋址,寫入高八位地址
????? if(RecAck())? continue;
??? }
??? Send((unsigned char)Addr); /*?? 向IIC總線寫數(shù)據(jù)?? */
??? if(RecAck())? continue; /*?? 如寫正確結(jié)束本次循環(huán)?? */
??? if(!(Control & 0x01))?? //判斷是讀器件還是寫器件
??? { j=Length;
????? errorflag=0;???????? /* 清錯(cuò)誤特征位 */
????? while(j--)
????? { Send(*DataBuff++); /*?? 向IIC總線寫數(shù)據(jù)?? */
??????? if(!RecAck()) continue; /*?? 如寫正確結(jié)束本次循環(huán)?? */
??????? errorflag=1;
??????? break;
????? }
????? if(errorflag==1) continue;
????? break;
??? }
??? else
??? { Start();? /*?? 啟動(dòng)總線?? */
????? Send(Control); /*?? 向IIC總線寫數(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;????
}
- 24C02/04/08/16/32/64應(yīng)用介紹 2次下載
- EEPROM存儲(chǔ)芯片AT24C02芯片手冊(cè)
- AT24C02和AT240C04芯片存儲(chǔ)小數(shù)的代碼和工程文件免費(fèi)下載 16次下載
- AT24C02資料 29次下載
- AT24C02數(shù)據(jù)手冊(cè) 44次下載
- AT24C02 13次下載
- AT24C04系列芯片資料(英文版) 0次下載
- at24c02的使用-匯編 0次下載
- 芯片AT24C01A、02、04、08、16 0次下載
- 讀寫AT24C02 并顯示 11次下載
- AT24C08/AT24C16 pdf datasheet
- at24c02a/at24c04a/at24c08a pdf
- 24c16/24c08/24c04中文資料
- 24c02/24c01/24c04讀寫程序
- at24c02/at24c04中文資料,at24c02芯片中
- 通過(guò)IIC總線讀寫AT24C512存儲(chǔ)器 1797次閱讀
- STM32基礎(chǔ)知識(shí):IIC總線操作EEPROM存儲(chǔ)模塊AT24C02 1990次閱讀
- AT24C04芯片驅(qū)動(dòng)程序原理 1823次閱讀
- STM32G0開(kāi)發(fā)筆記:EEPROM M24C02的使用方法 2496次閱讀
- 微雪電子EEPROM存儲(chǔ)模塊AT24C簡(jiǎn)介 2242次閱讀
- AT24C系列芯片的驅(qū)動(dòng)設(shè)計(jì) 4613次閱讀
- AT89S52單片機(jī)并行端口模擬I2C總線協(xié)議讀寫AT24C04的設(shè)計(jì) 2582次閱讀
- 如何使用單片機(jī)模擬讀寫24C01EEPROM數(shù)據(jù) 5054次閱讀
- 基于PIC單片機(jī)從24C02中讀取數(shù)據(jù)到數(shù)碼管顯示的設(shè)計(jì) 3202次閱讀
- 如何采用C51單片機(jī)讀寫CAT24C32 2514次閱讀
- at24c04中文資料匯總(at24c04引腳圖及功能_工作原理及電路圖) 7.9w次閱讀
- C51讀寫AT24C04源代碼及AT24C04測(cè)試程序 1.6w次閱讀
- 單片機(jī)STC12C5A60S2控制AT24C04的程序(C語(yǔ)言) 7432次閱讀
- AT24C256介紹_AT24C256燒錄的完整程序 1.2w次閱讀
- 單片機(jī)之IIC--AT24C256的讀寫程序 1.4w次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 651單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)大棚環(huán)境控制器仿真程序
- 1.10 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多