新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī) EEPROM 24c02 讀取存儲(chǔ)多字節(jié)

51單片機(jī) EEPROM 24c02 讀取存儲(chǔ)多字節(jié)

作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò) 收藏
先將數(shù)據(jù)存進(jìn)去,然后再讀出來(lái)顯示在數(shù)碼管上。

除了代碼里定義的連線外還要把p0連接到8位數(shù)碼管的8針上。

本文引用地址:http://m.butianyuan.cn/article/201611/318337.htm
1 /*--2 名稱:IIC協(xié)議 EEPROM24c023 內(nèi)容:此程序用于檢測(cè)EEPROM性能,測(cè)試方法如下:寫(xiě)入24c02一些數(shù)據(jù),然后在內(nèi)存中清除這些數(shù)據(jù),4 掉電后主內(nèi)存將失去這些信息,然后從24c02中調(diào)入這些數(shù)據(jù)??词欠衽c寫(xiě)入的相同。5 函數(shù)是采用軟件延時(shí)的方法產(chǎn)生SCL脈沖,固對(duì)高晶振頻率要作 一定的修改....(本例是1us機(jī)器6 周期,即晶振頻率要小于12MHZ)7 */  8 #include           //頭文件的包含9 #include 10 11 #define  _Nop()  _nop_()        //定義空指令12 13 // 常,變量定義區(qū)14 unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,15 0x77,0x7c,0x39,0x5e,0x79,0x71};// 顯示段碼值0~F16 unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼17 18 sbit LATCH1=P2^2;19 sbit LATCH2=P2^3;20 21 sbit SDA=P2^1;            //模擬I2C數(shù)據(jù)傳送位22 sbit SCL=P2^0;            //模擬I2C時(shí)鐘控制位23 24 bit ack;                  //應(yīng)答標(biāo)志位25 26 void DelayUs2x(unsigned char t);//函數(shù)聲明 27 void DelayMs(unsigned char t);28 /*29 uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值30 unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是31 0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí)32 長(zhǎng)度如下 T=tx2+5 uS 33 */34 void DelayUs2x(unsigned char t)35 {   36     while(--t);37 }38 /*39 mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值40 unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是41 0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編42 */43 void DelayMs(unsigned char t)44 {45     46     while(t--)47     {48         //大致延時(shí)1mS49         DelayUs2x(245);50         DelayUs2x(245);51     }52 }53 /*54 啟動(dòng)總線55 */56 void Start_I2c()57 {58     SDA=1;   //發(fā)送起始條件的數(shù)據(jù)信號(hào)59     _Nop();60     SCL=1;61     _Nop();    //起始條件建立時(shí)間大于4.7us,延時(shí)62     _Nop();63     _Nop();64     _Nop();65     _Nop();    66     SDA=0;     //發(fā)送起始信號(hào)67     _Nop();    //起始條件鎖定時(shí)間大于4μ68     _Nop();69     _Nop();70     _Nop();71     _Nop();       72     SCL=0;    //鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)73     _Nop();74     _Nop();75 }76 /*77 結(jié)束總線78 */79 void Stop_I2c()80 {81     SDA=0;    //發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)82     _Nop();   //發(fā)送結(jié)束條件的時(shí)鐘信號(hào)83     SCL=1;    //結(jié)束條件建立時(shí)間大于4μ84     _Nop();85     _Nop();86     _Nop();87     _Nop();88     _Nop();89     SDA=1;    //發(fā)送I2C總線結(jié)束信號(hào)90     _Nop();91     _Nop();92     _Nop();93     _Nop();94 }95 /*-96 字節(jié)數(shù)據(jù)傳送函數(shù)               97 函數(shù)原型: void  SendByte(unsigned char c);98 功能:  將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,并對(duì)99 此狀態(tài)位進(jìn)行操作.(不應(yīng)答或非應(yīng)答都使ack=0 假)     100 發(fā)送數(shù)據(jù)正常,ack=1; ack=0表示被控器無(wú)應(yīng)答或損壞。101 */102 void  SendByte(unsigned char c)103 {104     unsigned char BitCnt;105     106     for(BitCnt=0;BitCnt<8;BitCnt++)  //要傳送的數(shù)據(jù)長(zhǎng)度為8位107     {108         if((c<



評(píng)論


技術(shù)專區(qū)

關(guān)閉