中级会员
 
- 积分
- 217
- 金钱
- 217
- 注册时间
- 2015-9-27
- 在线时间
- 27 小时
|
1金钱
[mw_shl_code=applescript,true]void IIC_Start(void)
{
SDA_OUT();
IIC_SDA=1;
IIC_SCL=1;
delay_us(4);
IIC_SDA=0;
delay_us(4);
IIC_SCL=0;
}
void IIC_Stop(void)
{
SDA_OUT();
IIC_SCL=0;
IIC_SDA=0;
delay_us(4);
IIC_SCL=1;
IIC_SDA=1;
delay_us(4);
}[/mw_shl_code]
起始信号是在SCL为高电平期间 SDA有一个由高到低的跳变
停止信号是在SCL为高电平期间SDA有一个由低到高的跳变
为什么IIC_Start最后要将SCL置零
下面是我自己写的起始和停止信号
不知道有什么问题?恳请高手指正。
[mw_shl_code=applescript,true]void IIC_Start(void)
{
SDA_OUT(); //SDA线设为输出模式
IIC_SCL = 1;delay_us(2);
IIC_SDA = 1;delay_us(2);
IIC_SDA = 0;delay_us(2); //在SCL为高电平期间,SDA有一个从高电平向低电平的跳变
}
void IIC_Stop(void)
{
SDA_OUT(); //SDA线设为输出模式
IIC_SCL = 1;delay_us(2);
IIC_SDA = 0;delay_us(2);
IIC_SDA = 1;delay_us(2);
}[/mw_shl_code]
|
最佳答案
查看完整内容[请看2#楼]
这代码得连贯起来才能知道是否正确,
I2C通信本是连贯的,在编程时把它拆分,怎么拆就见仁见智了。
一般在I2C尚未完成通信时,SCL都维持在低,代码比较统一。
|