微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机 EEPROM 24c02 读取存储多字节

51单片机 EEPROM 24c02 读取存储多字节

时间:11-19 来源:互联网 点击:
先将数据存进去,然后再读出来显示在数码管上。

除了代码里定义的连线外还要把p0连接到8位数码管的8针上。

1 /*--2 名称:IIC协议 EEPROM24c023 内容:此程序用于检测EEPROM性能,测试方法如下:写入24c02一些数据,然后在内存中清除这些数据,4 掉电后主内存将失去这些信息,然后从24c02中调入这些数据。看是否与写入的相同。5 函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器6 周期,即晶振频率要小于12MHZ)7 */  8 #include           //头文件的包含9 #include 10 11 #define  _Nop()  _nop_()        //定义空指令12 13 // 常,变量定义区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;   //发送起始条件的数据信号59     _Nop();60     SCL=1;61     _Nop();    //起始条件建立时间大于4.7us,延时62     _Nop();63     _Nop();64     _Nop();65     _Nop();    66     SDA=0;     //发送起始信号67     _Nop();    //起始条件锁定时间大于4μ68     _Nop();69     _Nop();70     _Nop();71     _Nop();       72     SCL=0;    //钳住I2C总线,准备发送或接收数据73     _Nop();74     _Nop();75 }76 /*77 结束总线78 */79 void Stop_I2c()80 {81     SDA=0;    //发送结束条件的数据信号82     _Nop();   //发送结束条件的时钟信号83     SCL=1;    //结束条件建立时间大于4μ84     _Nop();85     _Nop();86     _Nop();87     _Nop();88     _Nop();89     SDA=1;    //发送I2C总线结束信号90     _Nop();91     _Nop();92     _Nop();93     _Nop();94 }95 /*-96 字节数据传送函数               97 函数原型: void  SendByte(unsigned char c);98 功能:  将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对99 此状态位进行操作.(不应答或非应答都使ack=0 假)     100 发送数据正常,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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top