基于Proteus仿真的AVR單片機串口程序
以前在Proteus上做過51的串口仿真沒有成功,昨天再次嘗試atmega16的串口仿真居然成功了;當然仿真是最簡單的,實際做事的時候需要加上max232芯片,但仿真時就不需要了,
本文引用地址:http://www.ex-cimer.com/article/201610/311532.htm程序功能:由串口助手向單片機發(fā)送一組數(shù)據(jù)“I LOVE YOU-----SBILY1988”,單片機收到數(shù)據(jù)后發(fā)送回串口助手,
數(shù)據(jù)傳輸方向:計算機——>單片機; 單片機——>計算機;
現(xiàn)送上仿真圖和程序:
#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() //初始化函數(shù)
{
UCSRB=BIT(4)|BIT(3); //使能發(fā)送和接收器
UCSRC=BIT(7)|(3<<1); //設置數(shù)據(jù)幀格式(8數(shù)據(jù)位)
UBRRH=0; //設置波特率為8MHZ晶振下 9600bps
UBRRL=51;
}
void send(unsigned char data) //數(shù)據(jù)發(fā)送
{
while(!(UCSRA&BIT(5))); //等待發(fā)送緩沖器準備完畢
UDR=data;
while(!(UCSRA&BIT(6))); //等待發(fā)送結(jié)束
UCSRA&=BIT(6);
}
unsigned char receive() //數(shù)據(jù)接收
{unsigned char data=0;
while(!(UCSRA&BIT(7))); //等待數(shù)據(jù)接收完畢
data=UDR;
return data;
}
評論