LetAllLinesOfCodeSpeak

本文详细介绍了单片机IIC驱动程序的设计与实现,包括IIC总线的起始与停止信号的生成,以及如何通过延时函数实现信号稳定。适用于51系列单片机,对于理解与应用IIC通信协议有深入帮助。

/*****************************************************************************************************************************************

*Author:JYW

*Time:2019_02_14

*Describe:LetAllLinesOfCodeSpeak

*****************************************************/

/********************************
*单片机IIC驱动程序
****************************/
#include<reg52.h>
#include<intrins.h>

#define  I2CDelay()            \
{                                                \
    _nop_();                            \
    _nop_();                            \
  _nop_();              \
    _nop_();              \
}                       \

//_nop_(); 执行时间为一个机器周期
    
    
    
    //NOP指令为单周期指令,可由晶振频率算出延时时间,
    //对于12M晶振,延时1uS。对于延时比较长的,
    //要求在大于10us,采用C51中的循环语句来实现。
    
sbit I2C_SCL = P3^7;
sbit I2C_SDA = P3^6;


/*产生总线起始信号*/
void I2CStart()
{
        I2C_SDA = 1;
        I2C_SCL = 1;
    
        I2CDelay();
        I2C_SDA = 0;
        I2CDelay();
        I2C_SCL = 0;
}

 

 

 

 

/*产生总线停止信号*/

void I2CStop()
{
        I2C_SCL = 0;
        I2C_SDA = 0;
        I2CDelay();
        I2C_SCL = 1;
        I2CDelay();
        I2C_SDA = 1;
        I2CDelay();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值