新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机 EEPROM 24c02 读取存储多字节

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

作者: 时间:2016-11-19 来源:网络 收藏
先将数据存进去,然后再读出来显示在数码管上。

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

本文引用地址://m.amcfsurvey.com/article/201611/318337.htm
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<
           
          
         



评论


技术专区

关闭