在51上用P1口模拟I2C
下面是用普通C51实现的I2C基本电平模拟函数和通用函数。 <BR><BR>       /*  电平模拟函数和基本读写函数 <BR>       void IIC_Start(void); <BR>       void IIC_Stop(void); <BR>       void SEND_0(void); <BR>       void SEND_1(void); <BR>       bit Check_Acknowledge(void); <BR>       void Write_Byte(uchar b)reentrant; <BR>       bit Write_N_Bytes(uchar *buffer,uchar n)reentrant; <BR>       bit Read_N_Bytes(uchar SlaveAdr,uchar n,uchar *buffer); <BR>       uchar Read_Byte(void)reentrant; <BR>   */ <BR><BR>       #include<STRING.H> <BR>       #include<REG52.H> <BR>       #include<INTRINS.H> <BR>       #include"aiic_51.h" <BR><BR>       sbit SCL=P1^6; <BR>       sbit SDA=P1^7; <BR><BR>       void DELAY(uint t) <BR>       { <BR>           while(t!=0) <BR>               t--; <BR>       } <BR><BR>       void IIC_Start(void) <BR>       { <BR>           //启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变 <BR>           SDA=1; <BR>           SCL=1; <BR>           DELAY(DELAY_TIME); <BR>           SDA=0; <BR>           DELAY(DELAY_TIME); <BR>           SCL=0; <BR>           DELAY(DELAY_TIME); <BR>       } <BR><BR>       void IIC_Stop(void) <BR>       { <BR>           //终止I2C总线,当SCL为高电平时使SDA产生一个正跳变 <BR>           SDA=0; <BR>           SCL=1; <BR>           DELAY(DELAY_TIME); 
相关资讯