avr单片机的TWI两线串行接口
unsigned char twi_write(unsigned char addr, unsigned char dd)
{
IIC_Start();
IIC_Wait();
if ((TWSR & 0xF8) != 0x08) return 0;//检测到TWINT位置位,比对TWSR寄存器内的状态量,如果正确则向下进行数据传输,错误返回 0
TWDR = EEPROM_BUS_ADDRESS ;
TWCR = (1 << TWINT) | (1 << TWEN);
IIC_Wait();
if ((TWSR & 0xF8) != 0x18) return 0;//检测到TWINT位置位,比对TWSR寄存器内的状态量 , 如果正确则向下进行数据传输,错误返回 0
TWDR = addr;
TWCR = (1 << TWINT) | (1 << TWEN);
IIC_Wait();
if ((TWSR & 0xF8) != 0x28) return 0;//检测到TWINT位置位,比对TWSR寄存器内的状态量 , 如果正确则向下进行数据传输,错误返回 0
TWDR = dd;
TWCR = (1 << TWINT) | (1 << TWEN);
IIC_Wait();