uart.c

来自「一个基于MEGA16的GUI」· C语言 代码 · 共 65 行

C
65
字号

/*********************************************************************************
**                            串口通信文件
*********************************************************************************/

#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 + =
减小字号Ctrl + -
显示快捷键?