| 采用C51編寫,程序通過(guò)測(cè)試,現(xiàn)已成功用于項(xiàng)目中.適用于所有的51內(nèi)核單片機(jī),可以移植到別的單片機(jī)上,修改很少,我已經(jīng)移植到430單片機(jī)上. 聲明:本代碼為個(gè)人原創(chuàng),若要轉(zhuǎn)載請(qǐng)注明出處! sbit bI2C_SDA = P0^4; // SDA sbit bI2C_SCL = P1^0; // SCL #define T1 5 #define T2 10 #define T3 15 #define T5 25 //---------------------------------------------------------------------------- void I2CInit (void) { bI2C_SCL = 0; I2CDelay(T2); bI2C_SDA = 1; I2CDelay(T2); bI2C_SCL = 1; I2CDelay(T2); bI2C_SCL = 0; I2CDelay(T2); bI2C_SDA = 0; I2CDelay(T2); bI2C_SCL = 1; I2CDelay(T2); bI2C_SCL = 0; I2CDelay(T2); I2CStop(); } //---------------------------------------------------------------------------- //名稱:I2CDelay //功能:I2C中的延時(shí) //入口:無(wú) //出口:無(wú) //---------------------------------------------------------------------------- void I2CDelay ( uint i ) { while(i) { i--; } } void msDelay (uint ms) { while(ms) { I2CDelay(9000); ms--; } } //---------------------------------------------------------------------------- //名稱:I2CStart //功能:I2C的啟動(dòng) //入口:無(wú) //出口:無(wú) //---------------------------------------------------------------------------- void I2CStart (void) { bI2C_SDA = 1; I2CDelay(T2); bI2C_SCL = 1; I2CDelay(T2); bI2C_SDA = 0; I2CDelay(T2); bI2C_SCL = 0; I2CDelay(T2); } //---------------------------------------------------------------------------- //名稱:I2CStop //功能:I2C的停止 //入口:無(wú) //出口:無(wú) //---------------------------------------------------------------------------- void I2CStop (void) { bI2C_SDA = 0; I2CDelay(T2); bI2C_SCL = 1; I2CDelay(T2); bI2C_SDA = 1; I2CDelay(T2); bI2C_SCL = 0; I2CDelay(T2); } //---------------------------------------------------------------------------- //名稱:SendACK //功能:主機(jī)給出ACK信號(hào) //入口:無(wú) //出口:出 //---------------------------------------------------------------------------- void SendACK ( void ) { bI2C_SDA = 0; I2CDelay(T3); bI2C_SCL = 1; I2CDelay(T3); bI2C_SCL = 0; I2CDelay(T3); } //---------------------------------------------------------------------------- //名稱:SendNoACK //功能:主機(jī)不給出ACK信號(hào),而將SDA拉高 //入口:無(wú) //出口:出 //---------------------------------------------------------------------------- |