51單片機 EEPROM 24c02 讀取存儲多字節(jié)
除了代碼里定義的連線外還要把p0連接到8位數碼管的8針上。
本文引用地址:http://www.biyoush.com/article/201611/318337.htm1 /*--2 名稱:IIC協議 EEPROM24c023 內容:此程序用于檢測EEPROM性能,測試方法如下:寫入24c02一些數據,然后在內存中清除這些數據,4 掉電后主內存將失去這些信息,然后從24c02中調入這些數據??词欠衽c寫入的相同。5 函數是采用軟件延時的方法產生SCL脈沖,固對高晶振頻率要作 一定的修改....(本例是1us機器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};//分別對應相應的數碼管點亮,即位碼17 18 sbit LATCH1=P2^2;19 sbit LATCH2=P2^3;20 21 sbit SDA=P2^1; //模擬I2C數據傳送位22 sbit SCL=P2^0; //模擬I2C時鐘控制位23 24 bit ack; //應答標志位25 26 void DelayUs2x(unsigned char t);//函數聲明 27 void DelayMs(unsigned char t);28 /*29 uS延時函數,含有輸入參數 unsigned char t,無返回值30 unsigned char 是定義無符號字符變量,其值的范圍是31 0~255 這里使用晶振12M,精確延時請使用匯編,大致延時32 長度如下 T=tx2+5 uS 33 */34 void DelayUs2x(unsigned char t)35 { 36 while(--t);37 }38 /*39 mS延時函數,含有輸入參數 unsigned char t,無返回值40 unsigned char 是定義無符號字符變量,其值的范圍是41 0~255 這里使用晶振12M,精確延時請使用匯編42 */43 void DelayMs(unsigned char t)44 {45 46 while(t--)47 {48 //大致延時1mS49 DelayUs2x(245);50 DelayUs2x(245);51 }52 }53 /*54 啟動總線55 */56 void Start_I2c()57 {58 SDA=1; //發(fā)送起始條件的數據信號59 _Nop();60 SCL=1;61 _Nop(); //起始條件建立時間大于4.7us,延時62 _Nop();63 _Nop();64 _Nop();65 _Nop(); 66 SDA=0; //發(fā)送起始信號67 _Nop(); //起始條件鎖定時間大于4μ68 _Nop();69 _Nop();70 _Nop();71 _Nop(); 72 SCL=0; //鉗住I2C總線,準備發(fā)送或接收數據73 _Nop();74 _Nop();75 }76 /*77 結束總線78 */79 void Stop_I2c()80 {81 SDA=0; //發(fā)送結束條件的數據信號82 _Nop(); //發(fā)送結束條件的時鐘信號83 SCL=1; //結束條件建立時間大于4μ84 _Nop();85 _Nop();86 _Nop();87 _Nop();88 _Nop();89 SDA=1; //發(fā)送I2C總線結束信號90 _Nop();91 _Nop();92 _Nop();93 _Nop();94 }95 /*-96 字節(jié)數據傳送函數 97 函數原型: void SendByte(unsigned char c);98 功能: 將數據c發(fā)送出去,可以是地址,也可以是數據,發(fā)完后等待應答,并對99 此狀態(tài)位進行操作.(不應答或非應答都使ack=0 假) 100 發(fā)送數據正常,ack=1; ack=0表示被控器無應答或損壞。101 */102 void SendByte(unsigned char c)103 {104 unsigned char BitCnt;105 106 for(BitCnt=0;BitCnt<8;BitCnt++) //要傳送的數據長度為8位107 {108 if((c<
評論