#include<avr/io.h>
void init_master(void);
void i2c_start(void);
void i2c_write_address(unsigned char data);
void i2c_writedata(unsigned char data);
void i2c_stop(void);
unsigned char address = 0x20, read = 1, write = 0;
unsigned char write_data = 0x05;
int main(void)
{
init_master();
while(1){
i2c_start();
i2c_write_address(address+write);
i2c_writedata(write_data);
i2c_stop();
}
}
void init_master(void)
{
TWSR = 0x00;
TWBR = 0x0C;
}
void i2c_start(void)
{
TWCR= (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
while (!(TWCR & (1<<TWINT)));
}
void i2c_write_address(unsigned char data)
{
TWDR = data;
TWCR = (1<<TWINT)|(1<<TWEN);
while (!(TWCR & (1<<TWINT)));
}
void i2c_writedata(unsigned char data)
{
TWDR = data;
TWCR = (1<<TWINT)|(1<<TWEN);
while (!(TWCR & (1<<TWINT)));
}
void i2c_stop(void)
{
TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN);
}