#include'iom16v.h'//頭文件,不同的編譯器不一樣
/*串口初始化函數*///使用同一個(gè)串口進(jìn)行發(fā)送與接收,mega162具有雙串口功能
voidUart_Init(void)
{
UCSRA=0x02;/*倍速*/
UCSRB=0x18; /*允許接收和發(fā)送*/
UCSRC = 0x06; /*8位數據*/
UBRRH = 0x00;
UBRRL = 12; /*9600*/
}
/*數據發(fā)送,查詢(xún)方式*/
void Uart_Transmit(unsigned char i)
{
while (!(UCSRA (1UDRE))); /* 等待發(fā)送緩沖器為空*/
UDR = i; /* 發(fā)送數據*/
}
/*數據接收,查詢(xún)方式*/
unsigned char Uart_Receive( void ) //注意函數類(lèi)型
{
while (!(UCSRA (1RXC))); /* 等待接收數據*/
return UDR; /* 獲取并返回數據*/
}
/*主函數*/
void main(void)
{
unsigned char temp;
DDRA = 0x00; /*方向輸入*/
PORTA = 0xFF; /*打開(kāi)上拉*/
DDRB = 0xFF; /*方向輸出*/
PORTB = 0xFF; /*電平設置*/
DDRC = 0x00;
PORTC = 0xFF;
DDRD = 0x02;
PORTD = 0xFF;
Uart_Init();
while (1)
{
temp = Uart_Receive(); /*等待接收數據*/
PORTB = ~temp; /*顯示低電平有效*/
Uart_Transmit(temp); /*發(fā)送收到的數據*/
}
}
原文鏈接:http://www.eeworld.com.cn/mcu/article_2016082328789.html
聯(lián)系客服