AVR的uart串口通信程序
//1、使用ICCAVR的終端調(diào)試窗口(Terminal),進(jìn)行通信調(diào)試。
//2、對(duì)ICCAVR的終端調(diào)試窗口進(jìn)行設(shè)置,設(shè)置串口為com1或com2
//通信波特率為19200(Tools->EnvironmentOptions...)。
//3、將PC屏幕光標(biāo)定位于調(diào)試窗口中。
#include
#definefosc8000000//晶振8MHZ
#definebaud19200//波特率
#defineosc_address0x1ff0
externunsignedcharread_flash(unsignedintadd);
voidputchar(unsignedcharc)
{
while(!(UCSRA(1UDR=c;
}
unsignedchargetchar(void)
{
while(!(UCSRA(1returnUDR;
}
intputs(char*s)
{
while(*s)
{
putchar(*s);
s++;
}
putchar(0x0a);//回車換行
putchar(0x0d);
return1;
}
voidputstr(char*s)
{
while(*s)
{
putchar(*s);
s++;
}
}
voiduart_init(void)
{
OSCCAL=read_flash(osc_address);
UCSRB=(1UBRRL=(fosc/16/(baud+1))%6;
UBRRH=(fosc/16/(baud+1))/256;
UCSRC=(1}
voidmain(void)
{
unsignedchari;
uart_init();
puts(廣州天河雙龍電子公司RS232通信演示程序);
puts(HTTP://WWW.SL.COM.CN);
puts(MAILTsllg@sl.com.cn);
while(1)
{
i=getchar();
if(i!=0)//按PC鍵盤開始測(cè)試
{
putstr(當(dāng)前按鍵是:);
putchar(i);
putchar(0x0a);
putchar(0x0d);
puts(廣州天河雙龍電子公司RS232通信演示程序);
puts(HTTP://WWW.SL.COM.CN);
puts(MAILTsllg@sl.com.cn);
putchar(0x0a);
putchar(0x0d);
}
}
}
評(píng)論