本帖最后由 micro_听海 于 2012-11-24 19:58 编辑
这几天一直在搞AVR的twi(twi就是i2c)双机通信程序,使用的是两块arduino开发板。因为最总要这个通信程序最总是要放在winavr的编译环境中,所以没有使用arduino自带的库函数。但是这没关系,因为arduino IDE和winavr编译器的内核都是开源gcc,所以在arduino ide上同样可以使用winavr的语言,赞ARDUINO!
硬件上就是arduino的SCL(A5引脚)和SDA(A4引脚)互联,当然还有GND。
下面上程序
先上发送端
#define uchar unsigned char
#define STATUS (TWSR&0xf8)
#define SLA_W 0x32
#define SLA_R 0x33
#define SLAVER_ADDRESS 0x32
#define START 0x08
#define RE_START 0x10
#define MT_SLA_WRITE_ACK 0x18
#define MT_SLA_READ_ACK 0x40
#define MT_DATA_ACK 0x28
#define MT_READ_ACK 0x58
void Start(void)//主机向从机发送i2c起始信号
{
TWCR=(1<
while(!(TWCR&(1<
}
void Stop(void)//主机发送i2c停止信号
{