|
单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)(2) /************************************************************************/ #include<string.h> #include<reg52.h> #include<intrins.h> #define DELAY_TIME 60 /*经实验,不要小于50!否则可能造成时序混乱*/ #define TRUE 1 #define FALSE 0 sbit SCL=P1^7;/*假设由P1.7和P1.6控制*/ sbit SDA=P1^6; /********** Function Definition函数定义 ************/ void DELAY(unsigned int t) /*延时函数*/ { while(t!=0) t--; } void I2C_Start(void) { /*启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变*/ SDA=1; SCL=1; DELAY(DELAY_TIME); SDA=0; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); } void I2C_Stop(void) { /*终止I2C总线,当SCL为高电平时使SDA产生一个正跳变*/ SDA=0; SCL=1; DELAY(DELAY_TIME); SDA=1; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); } void SEND_0(void) /* SEND ACK */ {
|