微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机 EEPROM 24c02 + 数码管 + 中断 统计开机次数

51单片机 EEPROM 24c02 + 数码管 + 中断 统计开机次数

时间:11-19 来源:互联网 点击:

总线14 */15 void Start_I2c()16 {17 SDA=1; //发送起始条件的数据信号18 _Nop();19 SCL=1;20 _Nop(); //起始条件建立时间大于4.7us,延时21 _Nop();22 _Nop();23 _Nop();24 _Nop(); 25 SDA=0; //发送起始信号26 _Nop(); //起始条件锁定时间大于4μ27 _Nop();28 _Nop();29 _Nop();30 _Nop(); 31 SCL=0; //钳住I2C总线,准备发送或接收数据32 _Nop();33 _Nop();34 }35 /*36 结束总线37 */38 void Stop_I2c()39 {40 SDA=0; //发送结束条件的数据信号41 _Nop(); //发送结束条件的时钟信号42 SCL=1; //结束条件建立时间大于4μ43 _Nop();44 _Nop();45 _Nop();46 _Nop();47 _Nop();48 SDA=1; //发送I2C总线结束信号49 _Nop();50 _Nop();51 _Nop();52 _Nop();53 }54 /*-55 字节数据传送函数 56 函数原型: void SendByte(unsigned char c);57 功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对58 此状态位进行操作.(不应答或非应答都使ack=0 假) 59 发送数据正常,ack=1; ack=0表示被控器无应答或损坏。60 */61 void SendByte(unsigned char c)62 {63 unsigned char BitCnt;64 65 for(BitCnt=0;BitCnt<8;BitCnt++) //要传送的数据长度为8位66 {67 if((c

>_<:i2c.h

1 /*--2 名称:IIC协议 头文件3 内容:4 */  5 #ifndef __I2C_H__6 #define __I2C_H__  7 8 #include           //头文件的包含9 #include 10 #define  _Nop()  _nop_()        //定义空指令11 /*12 启动总线13 */14 void Start_I2c();15 /*16 结束总线17 */18 void Stop_I2c();19 /*-20 字节数据传送函数               21 函数原型: void  SendByte(unsigned char c);22 功能:  将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对23 此状态位进行操作.(不应答或非应答都使ack=0 假)     24 发送数据正常,ack=1; ack=0表示被控器无应答或损坏。25 */26 void  SendByte(unsigned char c);27 /*-28 字节数据传送函数               29 函数原型: unsigned char  RcvByte();30 功能:  用来接收从器件传来的数据,并判断总线错误(不发应答信号),31 发完后请用应答函数。  32 */    33 unsigned char  RcvByte();34 /*-35 应答子函数36 原型:  void Ack_I2c(void);37 -*/38 void Ack_I2c(void);39 /*-40 非应答子函数41 原型:  void NoAck_I2c(void);42 -*/43 void NoAck_I2c(void);44 /*-45 向无子地址器件发送字节数据函数               46 函数原型: bit  ISendByte(unsigned char sla,ucahr c);  47 功能:     从启动总线到发送地址,数据,结束总线的全过程,从器件地址sla.48 如果返回1表示操作成功,否则操作有误。49 注意:    使用前必须已结束总线。50 -*/51 bit ISendByte(unsigned char sla,unsigned char c);52 /*-53 向有子地址器件发送多字节数据函数               54 函数原型: bit  ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);  55 功能:     从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件56 地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。57 如果返回1表示操作成功,否则操作有误。58 注意:    使用前必须已结束总线。59 -*/60 bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no);61 /*-62 向无子地址器件读字节数据函数               63 函数原型: bit  IRcvByte(unsigned char sla,ucahr *c);  64 功能:     从启动总线到发送地址,读数据,结束总线的全过程,从器件地65 址sla,返回值在c.66 如果返回1表示操作成功,否则操作有误。67 注意:    使用前必须已结束总线。68 -*/69 bit IRcvByte(unsigned char sla,unsigned char *c);70 /*-71 向有子地址器件读取多字节数据函数               72 函数原型: bit  ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);  73 功能:     从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件74 地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。75 如果返回1表示操作成功,否则操作有误。76 注意:    使用前必须已结束总线。77 -*/78 bit IRcvStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no);79 #endif

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

网站地图

Top