sbit SDA=P1^7; sbit SCL=P1^6; sbit LED=P1^4; void start(void) { SDA=1; // FOCUS FIRST SDA AND AFTER SCL SCL=1; _nop_(); _nop_(); SDA=0; _nop_(); _nop_(); SCL=0; } void stop(void) { SDA=0; SCL=1; _nop_(); _nop_(); SDA=1; _nop_(); _nop_(); SCL=0; } void write(unsigned char temp) { unsigned char q=0x00,a=0x80,i; SCL=0; for (i=0; i<8; i++) { q=temp & a; if (q==0) { SDA=0; } else { SDA=1; } a=a>>1; SCL=1; SCL=0; } SDA=1; SCL=1; if (SDA) { LED=1; delay(100); } SCL=0; } unsigned char read(void) { unsigned char temp1=0x80,i,data_in=0x00; SDA=1; for(i=0; i<8; i++) { SCL=1; if(SDA) { data_in=data_in|temp1; } temp1=temp1>>1; SCL=0; } return data_in; } void ack(void) { SDA=0; SCL=1; _nop_(); _nop_(); SCL=0; } void nack(void) { SDA=1; SCL=1; _nop_(); _nop_(); SCL=0; }