哦,刚刚想起,既然上面的寄存器 LATB4、5、6 和 7 的设置很特别,那么,我下面的IO口模拟I2C操作怎么又很正常的呢,是不是上面的书写不是普通人能看得懂的?
#define IIC_SCL LATB6 //SCL
#define IIC_SDA LATB4 //SDA
//简单延时
void IIC_delay_us(void)
{
unsigned char i=0; //软件延时时间0123456...
while(i) i--;
}
//IIC初始化
void IIC_init(void)
{
TRISB4=0; //端口输出
TRISB6=0;
IIC_SCL=1; //时钟数据STOP
IIC_delay_us();
IIC_SDA=1;
IIC_delay_us();
}
|