📄 uart.c
字号:
/*********************************************************************************
** 串口通信文件
*********************************************************************************/
#include "config.h"
#ifndef UART_EN
#define UART_EN 0 /*如果要使用到串口则使能 (1)*/
#endif
#if UART_EN
/*****************************************************************************
**函数名: UART_init
**
**功能描述: 串口初始化
**
**
**
*****************************************************************************/
void UART_init(void) //11.0592MHz频率,设置波特率9.6k,8位数据位,无校验,接收发送使能,1位停止位
{
// UBRRH= ((Fosc/(16*Baud))-1)>>8;
UCSRC =0x06; //0x06 8位数据,1位停止位,无校验
UBRRH=0;
// UBRRL =((Fosc/(16*Baud))-1); /*在异步情况下设置波特率*/
UBRRL=7;
UCSRA = 0x00;
UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN); //发送接收使能,使用查询方式,故没有使能中断
}
/*****************************************************************************
**函数名: UART_sentbyte
**
**功能描述: 出口发送数据查询方式发送接收字符
**
**入口参数:要发送的数据
**
*****************************************************************************/
void UART_sentbyte(uint8 c) //
{
while(!(UCSRA&(1<<UDRE)));//等待发送缓冲区为空
UDR=c;
}
/****************************************************************************
* 名称:ISendBuf()
* 功能:将缓冲区的数据发送回主机,并等待发送完毕。
* 入口参数:数据指针
* 出口参数:无
****************************************************************************/
void UART_SendData(uint8 *ptr)
{
while (*ptr)
{
UART_sentbyte(*ptr++);
}
UART_sentbyte(0x0D);
UART_sentbyte(0x0A); //结尾发送回车换行
}
/****************************************************************************
* 名称
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -