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 + -
显示快捷键?