📄 i2c.h
字号:
/*******************************************************************
P89C668 单片机硬件I2C 软件包I2C.H 主方式
668 的硬件I2C 接口定义在P1.6,P1.7 上,分别为P1.6=SCL;P1.7=SDA; (开漏输出)
相应寄存器 地址寄存器S1ADR --用于存放自身从地址(从方式时才有用)。
数据寄存器S1DAT --接收/发送数据用。
控制寄存器S1CON --用于硬件I2C 的设置使能、启动、结束,
应答控制,中断标志等。
状态寄存器S1STA --指示I2C 总线的操作状态码,高5 位有效
若I2C 中断志置位,可查询此寄存器判断
总线情况。
!此软件包是以查询方式完成各种总线操作的,在使用前应对总线进行检查,并
使用看门狗,以防等待总线而造成死机。
!系统工作主频不要高于12MHz
*******************************************************************/
#ifdef uchar
#define READYDEF_uchar 1 /*宏uchar已定义*/
#else
#define uchar unsigned char
#endif
#define DS1307_ADDRESS 0xD0 // I2C write address of DS1307
struct DS1307_time // define a structure to store
{ // date and time in
uchar seconds;
uchar minute;
uchar hour;
uchar weekday;
uchar day;
uchar month;
uchar year;
uchar control;
// bit clock_halt;
// bit mode_12hour;
};
/*******************************************************************
检查总线是否正常
功能: 进行I2C 总线的初始化前的检查
如果返回0,表示总线有误。
如果返回1,表示总线正常。
*******************************************************************/
extern bit I2C_CheckBus();
/*******************************************************************
申请总线
功能: 进行I2C 总线的初始化--包括时钟速率,I2C 使能,发送起始信号等
*******************************************************************/
extern void I2C_GetBus();
/*******************************************************************
发送数据函数
功能: 用于向总线发送数据。
*******************************************************************/
extern void I2C_Send(uchar c);
/*******************************************************************
向无子地址器件发送字节数据函数
函数原型: bit I2C_SendByte(uchar sla,ucahr c);
功能: 从启动总线到发送地址、数据,结束总线的全过程,从器件地址sla,
待发送的数据c ,如果返回1 表示操作成功,否则操作有误。
********************************************************************/
extern bit I2C_SendByte(uchar sla,uchar c);
/*******************************************************************
向有子地址器件发送多字节数据函数
函数原型: bit I2C_SendStr(uchar sla,uchar suba,ucahr *s,uchar no);
功能: 从启动总线到发送地址、子地址、数据、结束总线的全过程。从器件
地址sla、子地址suba、发送内容是s、指向的内容发送no个字节。
如果返回1,表示操作成功,否则操作有误。
********************************************************************/
extern bit I2C_SendStr(uchar sla,uchar suba,uchar *s,uchar no);
/*******************************************************************
向无子地址器件读字节数据函数
函数原型: bit I2C_RcvByte(uchar sla,ucahr *c);
功能: 从启动总线到发送地址,读数据,结束总线的全过程,从器件地
址sla、返回值在c。
如果返回1,表示操作成功,否则操作有误。
********************************************************************/
extern bit I2C_RcvByte(uchar sla,uchar *c);
/*******************************************************************
向有子地址器件读取多字节数据函数
函数原型: bit I2C_SendStr(uchar sla,uchar suba,ucahr *s,uchar no);
功能: 从启动总线到发送地址、子地址、读数据、结束总线的全过程,从器件
地址sla,子地址suba,读出的内容放入s指向的存储区读no个字节。
如果返回1,表示操作成功,否则操作有误。
********************************************************************/
extern bit I2C_RcvStr(uchar sla,uchar suba,uchar *s,uchar no);
#ifndef READYDEF_uchar
#undef uchar
#endif
/*软件包大小 字节*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -