这是N年前写的用51的IO口模拟I2C的代码,贴在这里,供有需要的朋友参考 //--------------------------------------------------------- #include<reg52.h> //--------------------------------------------------------- #define uchar unsigned char #define SDA P3_6 #define SCL P3_7 //----------------------------------------------------------------------- void delay_100us(); void delay_1s(); void i2c_start(); void i2c_stop(); void get_ack(); void i2c_send_byte(uchar mydata); void i2c_write_byte(uchar dev_addr_wr,uchar word_addr,uchar mydata); uchar i2c_read_byte(uchar dev_addr_wr,uchar dev_addr2_rd,uchar word_addr); //------------------------------------------------------------------------ /*void main() { uchar temp; while(1) { i2c_write_byte(0xa2,0x00,0x00); temp=i2c_read_byte(0xa2,0xa3,0x02); delay_1s(); P1= temp; } }*/ //----------------------------------------- //here are the functions void delay_100us()