查询方式:串口查询方式
中断完整方式:串口中断完整方式
简明版:串口中断程序简明版
下边是查询方式的串口程序(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); //回显
}
}
2 Comments.