1.I2C
2.程序
就SDA有区别
启动 | 停止 |
---|---|
Sda=1 | Sda=0 |
Scl=1 | Scl=1 |
Sda=1 | Sda=1 |
Scl=0 | Scl=0 |
/*------------------------------------------------
启动IIC总线
------------------------------------------------*/
void Start(void)
{
Sda=1;
_nop_();
Scl=1;
_nop_();
Sda=0;
_nop_();
Scl=0;
}
/*------------------------------------------------
停止IIC总线
------------------------------------------------*/
void Stop(void)
{
Sda=0;
_nop_();
Scl=1;
_nop_();
Sda=1;
_nop_();
Scl=0;
}
3.应答与非应答
应答 | 非应答 |
---|---|
Sda=0 | Sda=1 |
Scl=1 | Scl=1 |
Scl=1 | Scl=0 |
/*------------------------------------------------
应答IIC总线
------------------------------------------------*/
void Ack(void)
{
Sda=0;
_nop_();
Scl=1;
_nop_();
Scl=0;
_nop_();
}
/*------------------------------------------------
非应答IIC总线
------------------------------------------------*/
void NoAck(void)
{
Sda=1;
_nop_();
Scl=1;
_nop_();
Scl=0;
_nop_();
}
4.发送与接收
发送数据 | 接收数据 |
---|---|
Scl=0 | Sda=1(执行1次) |
数据 | Scl=0 |
Scl=1(执行1次) | Scl=1 |
数据 |
/*------------------------------------------------
发送一个字节
------------------------------------------------*/
void Send(unsigned char Data)
{
unsigned char BitCounter=