void SendData ( u8 addr )//发送函数。 { u8 i; /*发送时关掉中断,防止中断影响时序 */ SDA = 1; /*开始拉高*/ delay_us ( 1000 ); SDA = 0; /*开始引导码*/ delay_us ( 3200 );/*此处延时最少要大于2ms*/ for ( i = 0; i < 8; i++ ) /*总共8位数据 */ { SDA = 1; if ( addr & 0x01 ) /*3:1表示数据位1,每个位用两个脉冲表示 */ { delay_us ( 600 ); SDA = 0; delay_us ( 200 ); } else /*1:3表示数据位0 ,每个位用两个脉冲表示 */ { delay_us ( 200 ); SDA = 0; delay_us ( 600 ); } addr >>= 1; } SDA = 1; //恢复中断 } |