N76E003 <========IIC========> 脱落仪模块(IIC Slave)
IIC 模拟部分代码:
bsp_iic.c
#include "bsp_iic.h"
unsigned char SDA_READ(void)
{
if(SDA_RD)
return 1;
else
return 0;
}
void delay_10us(unsigned int dly)
{
Delay10us(dly);
}
void IIC_Start(void)
{
SDA_H();
SCL_H();
delay_10us(RW_DELAY);
SDA_L();
delay_10us(RW_DELAY);
SCL_L();
}
void IIC_Stop(void)
{
SDA_L();
SCL_L();
delay_10us(RW_DELAY);
SCL_H();
delay_10us(RW_DELAY);
SDA_H();
delay_10us(RW_DELAY);
}
void IIC_Ack(void)
{
SCL_L();
SDA_L();
delay_10us(RW_DELAY);
SCL_H();
delay_10us(RW_DELAY);
SCL_L();
}
void IIC_NAck(void)
{
SCL_L();
SDA_H();
delay_10us(RW_DELAY);
SCL_H();
delay_10us(RW_DELAY);
SCL_L();
}
unsigned char IIC_Wait_Ack(void)
{
unsigned char ucErrTime = 0;
SDA_H();
delay_10us(1);
SCL_H();
delay_10us(1);
while(SDA_READ()) {
ucErrTime++;
if(ucErrTime > 250) {
IIC_Stop();
return 1;
}
}
SCL_L();
return 0;
}
void IIC_WriteByte(unsigned char SendByte)
{
unsigned char t;
SCL_L(); // Set CLK as low to start
delay_10us(RW_DELAY);
for (t = 0; t &l