uartdriv.c

来自「单片机开发列程」· C语言 代码 · 共 158 行

C
158
字号
#define __UARTDRIV_H__

#include "Config.h"
/********************************************************************************************************
**函数名称:UART0Config
**函数功能:UART0配置函数:八位模式
**输    入:无
**输    出:无
********************************************************************************************************/
void UART0Config(void) 
{ 
	PERIPHEN1 |= BIT3;                  //使能外设UATR0
    UART0CFG   = BAUDREJUST;            //BIT[7:4]波特率调整值
                                        //BIT3    波特率时钟源
                                        //Bit2    发送或接收的第九位
                                        //BIT1    九位模式使能
                                        //BIT0    使能两个停止位模式 
    UART0INT = 0x62; 
    UART0EXT = 0x00;                    //不使用扩展功能 
    UART0BRH = UARTBRH;                 //波特率发生器预置值   
    UART0BRL = UARTBRL;              
}
   
/********************************************************************************************************
**函数名称:UART1Config
**函数功能:UART1配置函数:八位模式
**输    入:无
**输    出:无
********************************************************************************************************/
void UART1Config(void) 
{ 
	PERIPHEN1 |= BIT4;                  //使能外设UART1
    UART1CFG   = BAUDREJUST;            //BIT[7:4]波特率调整值
                                        //BIT3    波特率时钟源
                                        //Bit2    发送或接收的第九位
                                        //BIT1    九位模式使能
                                        //BIT0    使能两个停止位模式 
    UART1INT = 0x62; 
    UART1EXT = 0x00;                    //不使用扩展功能 
    UART1BRH = UARTBRH;                 //波特率发生器预置值   
    UART1BRL = UARTBRL;              
}
/********************************************************************************************************
**函数名称:UART0_SendByte
**函数功能:通过UART0发送一位数据
**输    入:uchar Charact->待发送的字符
**输    出:无
********************************************************************************************************/
void UART0_SendByte( uchar Charact)
{ 
    uchar Genvar; 
    
    Genvar = Genvar;
	UART0BUF = Charact;         //Send Character 

#ifdef DOWNLOAD
    do
	{                      		//wait for TX Empty Flag to be set 
    	Genvar = UART0INT; 
    	Genvar = Genvar & 0x01; 
	}
	while (Genvar == 0x00);     
#endif
  
	UART0INT &= 0xFE; 
}
/********************************************************************************************************
**函数名称:UART1_SendByte
**函数功能:通过UART1发送一位数据
**输    入:uchar Charact->待发送的字符
**输    出:无
********************************************************************************************************/
void UART1_SendByte(uchar Charact)
{ 
    uchar Genvar; 
    
    Genvar = Genvar;
	UART1BUF = Charact;         //Send Character 

#ifdef DOWNLOAD
    do
	{                      		//wait for TX Empty Flag to be set 
    	Genvar = UART1INT; 
    	Genvar = Genvar & 0x01; 
	}
	while (Genvar == 0x00); 
#endif
  
	UART1INT &= 0xFE; 
}

/********************************************************************************************************
**函数名称:UART0_Printf
**函数功能:通过UART0打印数据
**输    入:char *fmt,...->参数表列,同printf
**输    出:
********************************************************************************************************/
#define MAX_TBUF0	100

void UART0_Printf(char *fmt,...)
{
    char xdata tbuf0[MAX_TBUF0]= {0, };

    va_list v_list;
	char *ptr;
	int  i = 0;

	va_start(v_list, fmt);              // Initialize variable arguments. 
	vsprintf(tbuf0, fmt, v_list ); 
	va_end(v_list);

	ptr = tbuf0;
	while((*ptr) && i < MAX_TBUF0)
	{
		UART0_SendByte(*ptr);           //本工程的发送一字节函数
        ptr++;
        i++;
	}
}

/********************************************************************************************************
**函数名称:UART1_Printf
**函数功能:通过UART0打印数据
**输    入:char *fmt,...->参数表列,同printf
**输    出:
********************************************************************************************************/
#define MAX_TBUF1	100

void UART1_Printf(char *fmt,...)
{
    char xdata tbuf1[MAX_TBUF1]= {0, };

    va_list v_list;
	char *ptr;
	int  i = 0;

	va_start(v_list, fmt);     // Initialize variable arguments. 
	vsprintf(tbuf1, fmt, v_list ); 
	va_end(v_list);

	ptr = tbuf1;
	while((*ptr) && i < MAX_TBUF1)
	{
		UART1_SendByte(*ptr);           //本工程的发送一字节函数
        ptr++;
        i++;
	}
}
//****************************************************************************************************
//从UART1打印几个数据,作为简单的测试
//传入参数:无
//返 回 值:无
//****************************************************************************************************
void UART1Test(void)
{
    UART1_Printf("\n This is UART1! \n");
    UART1_Printf("\n UART1 Test OK! \n");
}

⌨️ 快捷键说明

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