#include "IIC.h"
/******************************
I^2C总线初始化函数
将总线都拉高以释放总线
******************************/
void IIC_init()
{
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/******************************
I^2C总线启动信号
SCL在高电平期间,
SDA一个下降沿启动信号
******************************/
void IIC_start()
{
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/****************************
I^2C总线应答信号
SCL在高电平期间,SDA被硬件设备
拉为低电平表示应答
***************************/
void IIC_respons()
{
uchar i;
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
while((SDA==1)&&(i<255))
{
i++;
}
SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/*********************************************************************
- 功能描述:主设备发出应答
- 隶属模块:IIC模块
- 函数属性:外部,供用户使用
- 参数说明:无
- 返回说明:无
- 注:主设备(比如单片机),从从设备(比如PCF8563、AT24C64)读取字节后,如果
要继续读取,就要给从设备一个ACK(即所谓的“应答”,数据位SDA为0)
*********************************************************************/
void IIC_ack()
{
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/*********************************************************************
- 功能描述:主设备发出无应答
- 隶属模块:IIC模块
- 函数属性:外部,供用户使用
- 参数说明:无
- 返回说明:无
- 注:主设备(比如单片机),从从设备(比如PCF8563、AT24C64)读取字节后,如果不再
进行读取,就要给从设备一个NACK(即所谓的“无应答”,数据位SDA为1)
*********************************************************************/
void IIC_nack()
{
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/**************************
I^2C总线停止信号
SCL在高电平期间
SDA一个上升沿信号
*************************/
void IIC_stop()
{
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/***********************
I^2C总线写一个字节函数
将8位左移,将最高位移入
寄存器CY,然后将CY赋给SDA
进而在SCL的控制下发送出去
***********************/
void IIC_writebyte(uchar date)
{
uchar i,j;
j=date;
for(i=0;i<8;i++)
{
j=j<<1;
SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
SDA=CY;
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
}
SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
}
/*************************
I^2C总线读一个字节函数
通过或运算,将数据一位一位
的接受
************************/
uchar IIC_readbyte()
{
uchar i,j,k;
SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
SDA=1;
for(i=0;i<8;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
if(SDA == 1)
{
j = 1;
}
else j = 0;
k=(k<<1)|j;
SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
}
_nop_();
_nop_();
_nop_();
_nop_();
return k;
}
没有合适的资源?快使用搜索试试~ 我知道了~
电子设计程序模块 AT24C02.rar
共4个文件
h:2个
c:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 11 浏览量
2023-03-02
16:03:00
上传
评论
收藏 3KB RAR 举报
温馨提示
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,本人不对所涉及的版权问题或内容负法律责任。如有侵权,请举报或通知本人删除。
资源推荐
资源详情
资源评论
收起资源包目录
电子设计程序模块 AT24C02.rar (4个子文件)
AT24C02
51_24c02
IIC.c 4KB
IIC.h 450B
AT24C02.c 3KB
AT24C02.h 425B
共 4 条
- 1
资源评论
大富大贵7
- 粉丝: 317
- 资源: 8869
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功