STC8学习--I2C通信2

本文详细介绍了如何使用STC8单片机实现I2C通信,包括启动、结束函数,发送和接收字节的函数,以及应答和非应答函数的编写。此外,还提供了写字节和读字节的完整函数示例,以及针对特定传感器QMA7981的初始化设置。通过对这些函数的组合,可以实现I2C总线上的数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.启动函数,结束函数按照时序图就可以写出来了。接下来就是发送字节函数,接收字节函数,应答与非应答函数。

2.发送字节函数,就是将字节变量按位赋予SDA引脚,通过引脚的高低电平变化,将字节发送出去。接收字节函数,即接收SDA上的引脚电平变化,将接收到的结果存放到字节上,最后将结果返回。至于是读还是写,在发送地址的时候,最低位就已经确定了

发送字节函数,实现方法很多,站内有很多例子可以参考。

 特别要注意的是发送函数,要先将字节位赋给SDA引脚后再,将SCL引脚拉高。接收函数,则相反,需要把需要先把SCL引脚拉高再读取。  自己写的时候将接收函数弄反了,查询结果是个错误的,

①发送函数

将数据最高位放入SDA后,将数据左移一位,最后拉低SCL引脚。循环8次后数据就发送出去了。

这里是先接收数据,再拉低SCL引脚,表示接收完数据

/* I2C发送字节 */
void IIC_Send(unsigned char txd)
{                        
    unsigned char i;   
    
    for(i=0;i<8;i++)
    {       
            SDA=(txd&0x80);
            txd<<=1;     
            Delay4us(); 
            SCL=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值