/* PCF8574 Address */ #define PCF_ADR 0x40 // Address of PCF8574 /* PCF8574 Read/Write */ #define PCF_READ 0x01 // Sets read bit #define PCF_WRITE 0x00 // Sets write bit /* PCF8574 Pin Defines */ #define PCF0 0 // PCF In/Out 0 #define PCF1 1 // PCF In/Out 1 #define PCF2 2 // PCF In/Out 2 #define PCF3 3 // PCF In/Out 3 #define PCF4 4 // PCF In/Out 4 #define PCF5 5 // PCF In/Out 5 #define PCF6 6 // PCF In/Out 6 #define PCF7 7 // PCF In/Out 7 /* Functions */ uint8_t pcf_start(uint8_t address) { // Send start condition if(i2c_start(address | PCF_ADR)) return 1; else return 0; } void pcf_stop(void) { i2c_stop(); } uint8_t pcf_write(uint8_t data) { if(i2c_write(data)) return 1; else return 0; } uint8_t pcf_write_oc(uint8_t data) { if(i2c_write(~data)) return 1; else return 0; }