日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>單片機>AT24C32/AT24C56讀寫程序

AT24C32/AT24C56讀寫程序

2008-08-13 | rar | 444 | 次下載 | 5積分

資料介紹

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

#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};/*器件的型號*/
enum? eepromtype enumer;?? //定義一個枚舉變量
unsigned char code buf1 []={1,3,5,7,9,10,11,12,13,15}; /* 發(fā)送緩沖區(qū) */
unsigned char buf2 [10]; /* 接收緩沖區(qū) */

/* 一個通用的24C01-24C256共9種EEPROM的字節(jié)讀寫操作程序,
此程序有五個入口條件,分別為讀寫數(shù)據(jù)緩沖區(qū)指針,
進行讀寫的字節(jié)數(shù),EEPROM首址,EEPROM控制字節(jié),
以及EEPROM類型。此程序結(jié)構(gòu)性良好,具有極好的容錯性,程序機器碼也不多:
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的頁選或片選地址;
enumer為枚舉變量,需為AT2401至AT24256中的一種,分別對應(yīng)AT24C01至AT24C256;
函數(shù)返回值為一個位變量,若返回1表示此次操作失效,0表示操作成功;
ERROR為允許最大次數(shù),若出現(xiàn)ERRORCOUNT次操作失效后,則函數(shù)中止操作,并返回1
SDA和SCL由用戶自定義,這里暫定義為P3^0和P3^1; */
/*對于1K位,2K位,4K位,8K位,16K位芯片采用一個8位長的字節(jié)地址碼,對于32K位以上
的采用2個8位長的字節(jié)地址碼直接尋址,而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); /*?? 檢查應(yīng)答位?? */
? void NoAck(void);? /*?? 不對IIC總線產(chǎn)生應(yīng)答?? */
? void Ack(void);??? /*?? 對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;? /*?? 出錯標志?? */
? while(i--)
? { Start();? /*?? 啟動總線?? */
??? 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;???????? /* 清錯誤特征位 */
????? while(j--)
????? { Send(*DataBuff++); /*?? 向IIC總線寫數(shù)據(jù)?? */
??????? if(!RecAck()) continue; /*?? 如寫正確結(jié)束本次循環(huán)?? */
??????? errorflag=1;
??????? break;
????? }
????? if(errorflag==1) continue;
????? break;
??? }
??? else
??? { Start();? /*?? 啟動總線?? */
????? Send(Control); /*?? 向IIC總線寫數(shù)據(jù)?? */
????? if(RecAck()) continue;//器件沒應(yīng)答結(jié)束本次本層循環(huán)
????? while(--Length)? /*?? 字節(jié)長為0結(jié)束?? */
????? { *DataBuff ++= Receive();
??????? Ack();?? /*?? 對IIC總線產(chǎn)生應(yīng)答?? */
????? }
????? *DataBuff=Receive(); /* 讀最后一個字節(jié) */
????? NoAck();? /*?? 不對IIC總線產(chǎn)生應(yīng)答?? */
????? 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從高電平轉(zhuǎn)向低電平表示 */
? SDA=1; /* 一個"開始"狀態(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處于高電平時,SDA從低電平轉(zhuǎn)向高電平 */
? SDA=0; /*表示一個"停止"狀態(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;???? /* 因為返回值總是放在CY中的 */
? SCL=0;
? return(CY);
}


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


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

/* * * * * * * * * 向IIC總線寫數(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 進位標志位 */
??? 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);
}

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

/* -----? AT24C01~AT24C256 的讀寫程序 ------ */

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; /* 讀寫長度 */
? enumer=AT24256; /* 讀寫AT24C256 */
? Control=0xa0; /* 寫操作 */
? RW24xx(p1,Length,addr,Control,enumer); /* 寫 */
? Control=0xa1; /* 讀操作 */
? RW24xx(p2,Length,addr,Control,enumer); /* 讀 */
}

AT24C
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

評論

查看更多

下載排行

本周

  1. 1美的電磁爐電路原理圖資料
  2. 4.39 MB   |  16次下載  |  10 積分
  3. 2反激式開關(guān)電源設(shè)計解析
  4. 0.89 MB   |  2次下載  |  5 積分
  5. 3簡易光伏控制器原理圖資料
  6. 0.07 MB   |  1次下載  |  5 積分
  7. 4TPS23755數(shù)據(jù)手冊
  8. 0.07 MB   |  次下載  |  免費
  9. 536伏,10兆赫茲低噪聲雙運算放大器COS5532 技術(shù)手冊
  10. 0.41 MB   |  次下載  |  免費
  11. 6LM5176 55V 寬輸入電壓同步4開關(guān)降壓/升壓控制器技術(shù)手冊
  12. 2.40 MB   |  次下載  |  免費
  13. 7MCU模塊原理圖資料
  14. 0.37 MB   |  次下載  |  1 積分
  15. 8LoRa1121 FCC&amp;CE認證 多頻段LoRa無線通訊模塊規(guī)格書
  16. 997.05 KB  |  次下載  |  免費

本月

  1. 1美的電磁爐電路原理圖資料
  2. 4.39 MB   |  16次下載  |  10 積分
  3. 2冷柜-電氣控制系統(tǒng)講解
  4. 13.68 MB  |  7次下載  |  10 積分
  5. 3SDFM 激光測距模塊模組手冊
  6. 0.54 MB   |  7次下載  |  免費
  7. 4直流電路的組成和基本定律
  8. 1.67 MB   |  4次下載  |  免費
  9. 5SW6238V ACCC 三 PD 四口多協(xié)議移動電源 SOC規(guī)格書
  10. 0.59 MB   |  4次下載  |  1 積分
  11. 6安川A1000變頻器中文版說明書
  12. 20.16 MB  |  3次下載  |  3 積分
  13. 7IP6742_datasheet_100V8A 同步 BUCK 控制器
  14. 2.16 MB  |  3次下載  |  免費
  15. 8PAW3395DM-T6QU:光學游戲?qū)Ш叫酒謨?/a>
  16. 1.26 MB   |  2次下載  |  10 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233094次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191448次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183360次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81605次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73829次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分
瓮安县| 六盘水市| 余江县| 禄劝| 贡嘎县| 闵行区| 马公市| 牡丹江市| 高州市| 叶城县| 平果县| 讷河市| 沅陵县| 宜川县| 新沂市| 博罗县| 遂川县| 五寨县| 延川县| 盘锦市| 盐池县| 九江县| 西城区| 扎赉特旗| 启东市| 丽水市| 保定市| 凉山| 中西区| 富民县| 公安县| 浮梁县| 石河子市| 瑞安市| 涞源县| 宜兰县| 黄龙县| 曲阳县| 万州区| 昌江| 鹤峰县|