mega8 iccavr的串口程序(已修正)-查询方式

查询方式:串口查询方式

中断完整方式:串口中断完整方式

简明版:串口中断程序简明版

下边是查询方式的串口程序(uart、usart)。

从双龙的例程修改来的。验证好用!


/******************************************/
/*             http://truemans.inf        */
/*             修改自双龙                 */
/*             RS232通讯框架              */
/*             作者:HB                    */
/*               2010年8月5日             */
/*  目标MCU:MEGA8   晶振:内部晶振  8MHZ   */
/******************************************/
#include <iom8.h>

#define fosc 8000000 //晶振8MHZ
#define baud 19200     //波特率

/*       字符输出函数       */
void _putchar(unsigned char c)
{     
     while (!(UCSRA&(1<<UDRE)));
     UDR=c;    
}
/*       字符输入函数       */   
unsigned char _getchar(void)
{
     while(!(UCSRA& (1<<RXC)));
     return UDR;
}   
/*     字符串输出函数            */   
void _puts(char *s)
{
    while (*s)
   {
        _putchar(*s);
        s++;
    }   
    _putchar(0x0a);//回车换行
    _putchar(0x0d);
}
/*     UART初始化     */   
void uart_init(void)

UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收
UBRRL=(fosc/16/(baud+1))%256;
UBRRH=(fosc/16/(baud+1))/256;
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
}

void main(void)
{
char temp;

uart_init();
_puts("welcome!");
while(1)
{
  temp=_getchar();
  if(0!=temp)      _putchar(temp);  //回显   
}
}

Leave a comment

2 Comments.

Leave a Reply


[ Ctrl + Enter ]