// 在微机上模拟I2C总线的设计中,用并行口的D0(PIN2)模拟SCL信号,用D1(PIN3)模拟SDA信号。根据IIC总线的电平规范,程序如下: #include #include #include #include #define DELAY_TIME 10 #define FALSE 0 #define TRUE 1 const unsigned char SCL_PIN=0x01; const unsigned char SDA_OIN=0x02; static void SET_SCL(void) { asm{ mov dx,0x378 in ax,dx or ax,SCL_PIN //将SCL置1 out dx,ax } } static void CLR_SCL(void) { asm{ mov dx,0x378 in ax,dx or ax,0xff-SCL_PIN //将SCL置0 out dx,ax } } static void SET_SDA(void) { asm{ mov dx,0x378 in ax,dx or ax,SDA_PIN //将SDA置1 out dx,ax } } static void CLR_SDA(void) { asm{ mov dx,0x378 in ax,dx or ax,0xff-SDA_PIN //将SDA置0 out dx,ax } } void DELAY(int t=DELAY_TIME) //延时子程序 { for(int i=0;i