STC8学习-- IIC通信3

本文详细介绍了如何在STC8单片机中使用寄存器配置实现IIC通信,强调了配置寄存器I2CMSCR的重要性,并提供了启动、停止、发送、接收及应答等函数的实现。特别指出硬件IIC的接收应答函数RecvACK()与模拟IIC的区别,以及初始化函数中的注意事项。

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

1.使用寄存器配置来应用IIC通信,流程上和之前的寄存器配置过程类似。

大部分是通过配置主机寄存控制器I2CMSCR 来进行的,I2CMSCR的低四位按照特定要求置为0和1可以实现IIC的启动,停止,发送,接收以及应答。注意这里直接通过赋值来进行,不要通过 |=操作来进行,与或操作多次之后,寄存器低四位都有可能被置为1,这样就不是预期的配置结果了。

2. Wait()函数,和之前一样,I2CMSST的第七位是标志位,可以通过标志位确保IIC的操作执行完成。

3.模拟IIC和硬件IIC的读数据写数据的模块是一样的,启动,停止,发送,接收以及应答函数写完了,就可以按照之前的顺序拼接成,读数据写数据函数。

4.最大的一个区别就是,硬件IIC的接收应答函数RecvACK(),没有返回值。

我最开始按照模拟IIC的形式写,带有返回值(这个命令本身是有返回值的,返回在I2CMSST的最低位引脚上,可以读取的),结果读数据函数读出来的芯片标识是01,不是E7。按例程修改之后就正常了,不知道为什么。

5.初始化函数里面,也要配置寄存器

void IIC_Init(void)
{
    P_SW2 |= 0xB0; // EAXFR=1使能访问XFR  I2C_S=11把I2C引脚映射到P3.2 P3.3引脚
 I2CCFG = 0XFF; //使能I2C功能,单片机工作在主机模式,设置时钟为63
    I2CMSST = 0x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值