#ifndef I2C_H_ #define I2C_H_ #define BYTE unsigned char #define I2C_DDR DDRC #define I2C_PORT PORTC #define I2C_PIN PINC #define I2C_SCL PORTC0 #define I2C_SDA PORTC1 #define ACK 0 #define NACK 1 #define I2C_DELAY() _delay_ms(1); #define ONE_SCL() { I2C_DDR &= ~(1 << I2C_SCL); I2C_PORT |= (1 << I2C_SCL); } #define NULL_SCL() { I2C_DDR |= (1 << I2C_SCL); I2C_PORT &= ~(1 << I2C_SCL); } #define ONE_SDA() { I2C_DDR &= ~(1 << I2C_SDA); I2C_PORT |= (1 << I2C_SDA); } #define NULL_SDA() { I2C_DDR |= (1 << I2C_SDA); I2C_PORT &= ~(1 << I2C_SDA); } BYTE i2c_stop(void); void i2c_start(void); void i2c_restart(void); void i2c_init(void); BYTE i2c_send_byte(BYTE data); BYTE i2c_read_byte(BYTE ask); #endif /* I2C_H_ */