avr单片机的TWI两线串行接口
发送:
1,设定数据传输波特率
2,发送START信号,等待应答
3,发送芯片地址,等待应答
4,发送数据的绝对地址,等待应答 ==》
5,发送要写入的数据,等待应答
6,发送STOP信号,释放总线
接收:
1,设定数据传输波特率
2,发送START信号,等待应答
3,发送芯片地址,等待应答
4,发送数据的绝对地址,等待应答 ==》
5,发送RESTART信号,等待应答
6,发送芯片地址并注明读操作,等待应答 ==》
7,读取数据,等待应答
8,发送STOP信号,释放总线
应用芯片 :ATMega 16
代码文件:Project
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IAR_DELAY.H
#ifndef __IAR_DELAY_H
#define __IAR_DELAY_H
#include
#define XTAL 7.3728
#define delay_us(x) __delay_cycles ( (unsigned long)(x * XTAL) )
#define delay_ms(x) __delay_cycles ( (unsigned long)(x * XTAL*1000) )
#define delay_s(x) __delay_cycles ( (unsigned long)(x * XTAL*1000000) )
#endif
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
UART.C
#include
#define uchar unsigned char
#define uint unsigned int
//###########################################################
voidUart_Init(void)
{
UCSRC = (1<
UBRRH=0x00;
UBRRL=47;
DDRD_Bit1=1;
}
//###########################################################
voidUart_Transmit(uchar data)
{
UDR = data;
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include
#include "IAR_DELAY.H"
#define uchar unsigned char
#define uint unsigned int
void Uart_Init(void);
void Uart_Transmit(uchar data);
//变量声明
#define EEPROM_BUS_ADDRESS 0xA0