⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 avr基础程序大全
💻 C
字号:
//包含所需头文件
#include "Com_header.h"


#define BAUDRATE  9600	//波特率

/*------计算和定义波特率设置参数------*/
#define BAUD 9600 
#define CRYSTAL 8000000 
//#define BAUD_SETTING (unsigned int)((unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1) //正常模式
#define BAUD_SETTING (unsigned int)((unsigned long)CRYSTAL/(8*(unsigned long)BAUD)-1) //波特率加倍模式
#define BAUD_H (unsigned char)(BAUD_SETTING>>8) 
#define BAUD_L (unsigned char)(BAUD_SETTING) 

/**********************************************************
* 名    称:UART_Init()
* 功    能:初始化串口。设置其工作模式及波特率。
* 入口参数:无
* 出口参数:无
* 范    例:
* 说    明:异步工作模式,奇偶校验位保留,1个停止位,8个数据位,
            波特率9600,波物率加倍,允许接收,允许发送,允许RXC中断,晶振1MHz,
************************************************************/
//串口通信初始化
void usart_init(void)
{
	UCSRB = 0x00;//禁止中断
	UCSRA = (1<<U2X);//波特率加倍
	UCSRC = BIT(URSEL) | 0x26;
	UBRRL = BAUD_L;
	UBRRH = BAUD_H;
	UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);   // 允许RXC中断,接收允许,发送允许
}

/*******************************************************/
//串口发送函数
//发送单个字节
int uart_putchar(char c)
{
	if(c=='\n')
		uart_putchar('\r');
	loop_until_bit_is_set(UCSRA,UDRE);//不断进行空循环,直到UCSRA的UDRE位被置1
	UDR=c;
	loop_until_bit_is_set(UCSRA,TXC);//
	return 0;	
}

/*******************************************************/
//串口接收函数
//
int usart_getchar(void)
{
//	unsigned char data;
	loop_until_bit_is_set(UCSRA,RXC);
//	data=UDR;
	return (UDR);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -