📄 uart.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 + -