我调试成功的,只是写的:
void IIC_START() { //DAT_PIN_OUT(); SDIO=1; NOP(); SCLK=1; NOP(); SDIO=0; NOP(); SCLK=0; } //------------------------------------------------------------ void IIC_STOP() { //DAT_PIN_OUT(); SCLK=0; NOP(); SDIO=0; NOP(); SCLK=1; NOP(); SDIO=1; } //--------------------------------------------------- void IIC_ACK() { SCLK=0; NOP(); NOP(); NOP(); _pbc = 0b10111111; //DAT_PIN_IN(); SDIO=1; NOP(); NOP(); SCLK=1; NOP(); NOP(); if(SDIO){ NOP(); } SCLK=0; _pbc = 0b00111111; //DAT_PIN_OUT(); SDIO=0; SCLK=0; } //-----------------写一字节数据--------------------- void IICWrByte(uchar DAT) { uchar i; //DAT_PIN_OUT(); //---------------------------------- NOP(); for(i=0;i<8;i++) { NOP(); SCLK=0; NOP(); if(DAT & 0X01){ SDIO=1; }
else { SDIO=0; } NOP(); SCLK=1; NOP(); SCLK=0; DAT >>= 1; } }
|