基于Proteus仿真的AVR單片機串口程序
以前在Proteus上做過(guò)51的串口仿真沒(méi)有成功,昨天再次嘗試atmega16的串口仿真居然成功了;當然仿真是最簡(jiǎn)單的,實(shí)際做事的時(shí)候需要加上max232芯片,但仿真時(shí)就不需要了,
本文引用地址:http://dyxdggzs.com/article/201610/311532.htm程序功能:由串口助手向單片機發(fā)送一組數據“I LOVE YOU-----SBILY1988”,單片機收到數據后發(fā)送回串口助手,
數據傳輸方向:計算機——>單片機; 單片機——>計算機;
現送上仿真圖和程序:

#include
#include
void init();
void send(unsigned char);
unsigned char receive();
void main()
{unsigned char i=0,a=300;
init();
while(1)
{
i=receive();
send(i);
}
}
void init() //初始化函數
{
UCSRB=BIT(4)|BIT(3); //使能發(fā)送和接收器
UCSRC=BIT(7)|(3<<1); //設置數據幀格式(8數據位)
UBRRH=0; //設置波特率為8MHZ晶振下 9600bps
UBRRL=51;
}
void send(unsigned char data) //數據發(fā)送
{
while(!(UCSRA&BIT(5))); //等待發(fā)送緩沖器準備完畢
UDR=data;
while(!(UCSRA&BIT(6))); //等待發(fā)送結束
UCSRA&=BIT(6);
}
unsigned char receive() //數據接收
{unsigned char data=0;
while(!(UCSRA&BIT(7))); //等待數據接收完畢
data=UDR;
return data;
}
評論