📄 uart.h
字号:
/************************************************************************************
* Copyright (c), 2004-2007,西安铭朗电子科技有限责任公司
* All rights reserved.
*
* Http: www.mlarm.com
* Email: mlarm@mlarm.com
*
* File name: Uart.h
* Project : ML-F020ICB
* Processor: C8051F020
* Compiler : Keil C51 Compiler
*
* Author: 李林利
* Version: 1.20
* Date: 2007.6.1
* Email: GavinLi@126.com
*
* Description: 本文件是uart0,uart1硬件驱动程序头文件;
*
* Others: none;
*
* Function List:
* 1. void Uart0_Init(unsigned char mode, unsigned long baud)
* 2. unsigned char Uart0_RecvChar(unsigned char *chr)
* 3. unsigned char Uart0_SendChar(unsigned char chr)
* 4. unsigned char Uart0_RecvBlock(unsigned char *ptr,unsigned char size,unsigned char *rcv)
* 5. unsigned char Uart0_SendBlock(unsigned char *ptr,unsigned char size,unsigned char *snd)
* 6. unsigned char Uart0_SendString(unsigned char *ptr)
* 7. unsigned char Uart0_GetCharsRxBuf(void)
* 8. unsigned char Uart0_GetCharsTxBuf(void)
* 9. void Uart1_Init(unsigned char mode, unsigned long baud)
* 10. unsigned char Uart1_RecvChar(unsigned char *chr)
* 11. unsigned char Uart1_SendChar(unsigned char chr)
* 12. unsigned char Uart1_RecvBlock(unsigned char *ptr,unsigned char size,unsigned char *rcv)
* 13. unsigned char Uart1_SendBlock(unsigned char *ptr,unsigned char size,unsigned char *snd)
* 14. unsigned char Uart1_SendString(unsigned char *ptr)
* 15. unsigned char Uart1_GetCharsRxBuf(void)
* 16. unsigned char Uart1_GetCharsTxBuf(void)
*
* History:
* 1. Author: 李林利
* Version: 1.10
* Date: 2007.3.12
* Modification: none
*
* 2. Author: 李林利
* Version: 1.00
* Date: 2004.11.24
* Modification: 建立文件
*
*************************************************************************************/
/*************************************************************************************
* Uart0硬件驱动程序函数使用说明(以Uart0为例,Uart1同)
*
* 1. 第1步,必须在Config.h文件中进行Uart0 缓存配置,详见其说明;
* 2. 第2步,必须调用函数Uart0_Init(),按函数说明进行设置,本函数只允许调用1次;
* 3. 第3步,调用函数Uart0_RecvChar()和Uart0_RecvBlock()可接收数据;
* 调用函数Uart0_SendChar()和Uart0_SendBlock可发送数据;
* 当然调用前,可使用Uart0_GetCharsRxBuf()和Uart0_GetCharsTxBuf()进行缓存区判断;
* 4. Uart0_SendString()函数用于发送字符串数据;
* 5. 其它细节详见具体函数说明;
* 6。Note: 调用函数Uart0_Init()和Uart1_Init()的波特率设置必须相同, 因为Uart0和Uart1
* 共用Timer1定时器;
*************************************************************************************/
/************************************************************************************/
// 常量及全局变量定义
/************************************************************************************/
//UART串型通信错误类型定义,不允许修改
#define UART_ERR_OK 0 /* OK */
#define UART_ERR_RXEMPTY 1 /* No data in receiver. */
#define UART_ERR_TXFULL 2 /* Transmitter is full. */
#define UART_ERR_PARITY 3 /* Parity error is detected. */
/************************************************************************************/
// Uart0,Uart1 常量及全局变量定义
/************************************************************************************/
extern bit bUart0_TxFull; // Uart0发送数据缓存满标志, 1:缓存满,0:缓存未满;
extern bit bUart0_RxFull; // Uart0接收数据缓存溢出标志, 1:缓存溢出,0:缓存未溢出;
extern bit bUart1_TxFull; // Uart1发送数据缓存满标志, 1:缓存满,0:缓存未满;
extern bit bUart1_RxFull; // Uart1接收数据缓存溢出标志, 1:缓存溢出,0:缓存未溢出;
/*************************************************************************************/
//
// Uart0硬件驱动程序函数定义
//
/*************************************************************************************/
/***********************************************************************************
* Function: Uart0_Init;
*
* Description: Uart0初始化函数,数据格式:1个起始位,8个数据位(LSB在先)和1个停止位;
* 使用定时器1作为时钟,允许发送和接收中断;
*
* Input: mode, 工作模式, 暂时未用; baud, 波特率;
*
* Output: none;
*
* Return: none;
*
* Note: 定时器1资源被占用;baud,波特率范围:2400bps~115200bps;本函数不作范围检查;
************************************************************************************/
void Uart0_Init(unsigned char mode, unsigned long baud);
/***********************************************************************************
* Function: Uart0_RecvChar;
*
* Description: 如果有数据被接收,该函数会返回一个接收数据,否则将返回错误代码;
*
* Input: *chr, 接收数据的指针;
*
* Output: none;
*
* Return: 错误代码
* UART_ERR_OK: 接收数据成功代码;
* UART_ERR_RXEMPTY: 接收数据缓存空错误代码;
*
* Note: 该函数并不等待接收数据就返回;
************************************************************************************/
unsigned char Uart0_RecvChar(unsigned char *chr);
/***********************************************************************************
* Function: Uart0_SendChar;
*
* Description: 发送一个字节数据到发送缓存中;
*
* Input: chr, 发送的数据;
*
* Output: none;
*
* Return: 错误代码
* UART_ERR_OK: 发送数据成功代码;
* UART_ERR_TXFULL: 发送缓存已满错误代码;
*
* Note: 该函数只是存储数据到发送缓存中,并不立即发送;
************************************************************************************/
unsigned char Uart0_SendChar(unsigned char chr);
/***********************************************************************************
* Function: Uart0_RecvBlock;
*
* Description: 如果有数据被接收,该函数会返回接收一定长度的数据块,否则将返回错误代码,
* 该函数只在输入缓存长度不为零有效;
*
* Input: *ptr, 接收数据块指针; size, 接收数据块长度;
*
* Output: *ptr, 接收数据块; *rcv, 实际接收到数据长度;
*
* Return: 错误代码
* UART_ERR_OK : 接收数据成功代码;
* UART_ERR_RXEMPTY: 接收数据最后缓存空错误代码;
*
* Note: 该函数并不等待接收数据就返回;
************************************************************************************/
unsigned char Uart0_RecvBlock(unsigned char *ptr,unsigned char size,unsigned char *rcv);
/***********************************************************************************
* Function: Uart0_SendBlock;
*
* Description: 发送一个数据块到发送缓存中, 该函数只在输入缓存长度不为零有效;
*
* Input: *ptr, 发送数据块指针; size, 发送数据块长度;
*
* Output: *snd : 实际发送数据长度;
*
* Return: 错误代码
* UART_ERR_OK : 发送数据成功代码;
* UART_ERR_RXEMPTY: 发送数据缓存满错误代码;
*
* Note: 该函数只是存储数据到发送缓存中,并不立即发送;
************************************************************************************/
unsigned char Uart0_SendBlock(unsigned char *ptr,unsigned char size,unsigned char *snd);
/***********************************************************************************
* Function: Uart0_SendString;
*
* Description: 发送一个字符串数据到发送缓存中;
*
* Input: *ptr, 发送字符串数据块指针;
*
* Output: none;
*
* Return: 错误代码
* UART_ERR_OK : 发送数据成功代码;
* UART_ERR_RXEMPTY: 发送数据缓存满错误代码;
*
* Note: 该函数只是存储数据到发送缓存中,并不立即发送;
************************************************************************************/
unsigned char Uart0_SendString(unsigned char *ptr);
/***********************************************************************************
* Function: Uart0_GetCharsRxBuf;
*
* Description: 读取接收数据缓存中数据长度;
*
* Input: none;
*
* Output: none;
*
* Return: 接收数据缓存中数据长度;
*
* Note: none;
************************************************************************************/
unsigned char Uart0_GetCharsRxBuf(void);
/***********************************************************************************
* Function: Uart0_GetCharsTxBuf;
*
* Description: 读取发送数据缓存中空闲空间长度;
*
* Input: none;
*
* Output: none;
*
* Return: 发送数据缓存中空闲空间,单位:字节;
*
* Note: none;
************************************************************************************/
unsigned char Uart0_GetCharsTxBuf(void);
/*************************************************************************************/
//
// Uart1硬件驱动程序函数定义
//
/*************************************************************************************/
/***********************************************************************************
* Function: Uart1_Init;
*
* Description: Uart1初始化函数,数据格式:1个起始位,8个数据位(LSB在先)和1个停止位;
* 使用定时器1作为时钟,允许发送和接收中断;
*
* Input: mode, 工作模式, 暂时未用; baud, 波特率;
*
* Output: none;
*
* Return: none;
*
* Note: 定时器1资源被占用;baud,波特率范围:2400bps~115200bps;本函数不作范围检查;
************************************************************************************/
void Uart1_Init(unsigned char mode, unsigned long baud);
/***********************************************************************************
* Function: Uart1_RecvChar;
*
* Description: 如果有数据被接收,该函数会返回一个接收数据,否则将返回错误代码;
*
* Input: *chr, 接收数据的指针;
*
* Output: none;
*
* Return: 错误代码
* UART_ERR_OK: 接收数据成功代码;
* UART_ERR_RXEMPTY: 接收数据缓存空错误代码;
*
* Note: 该函数并不等待接收数据就返回;
************************************************************************************/
unsigned char Uart1_RecvChar(unsigned char *chr);
/***********************************************************************************
* Function: Uart1_SendChar;
*
* Description: 发送一个字节数据到发送缓存中;
*
* Input: chr, 发送的数据;
*
* Output: none;
*
* Return: 错误代码
* UART_ERR_OK: 发送数据成功代码;
* UART_ERR_TXFULL: 发送缓存已满错误代码;
*
* Note: 该函数只是存储数据到发送缓存中,并不立即发送;
************************************************************************************/
unsigned char Uart1_SendChar(unsigned char chr);
/***********************************************************************************
* Function: Uart1_RecvBlock;
*
* Description: 如果有数据被接收,该函数会返回接收一定长度的数据块,否则将返回错误代码,
* 该函数只在输入缓存长度不为零有效;
*
* Input: *ptr, 接收数据块指针; size, 接收数据块长度;
*
* Output: *ptr, 接收数据块指针; *rcv, 实际接收到数据长度;
*
* Return: 错误代码
* UART_ERR_OK : 接收数据成功代码;
* UART_ERR_RXEMPTY: 接收数据最后缓存空错误代码;
*
* Note: 该函数并不等待接收数据就返回;
************************************************************************************/
unsigned char Uart1_RecvBlock(unsigned char *ptr,unsigned char size,unsigned char *rcv);
/***********************************************************************************
* Function: Uart1_SendBlock;
*
* Description: 发送一个数据块到发送缓存中, 该函数只在输入缓存长度不为零有效;
*
* Input: *ptr, 发送数据块指针; size, 发送数据块长度;
*
* Output: *snd : 实际发送数据长度;
*
* Return: 错误代码
* UART_ERR_OK : 发送数据成功代码;
* UART_ERR_RXEMPTY: 发送数据缓存满错误代码;
*
* Note: 该函数只是存储数据到发送缓存中,并不立即发送;
************************************************************************************/
unsigned char Uart1_SendBlock(unsigned char *ptr,unsigned char size,unsigned char *snd);
/***********************************************************************************
* Function: Uart1_SendString;
*
* Description: 发送一个字符串数据到发送缓存中;
*
* Input: *ptr, 发送字符串数据块指针;
*
* Output: none;
*
* Return: 错误代码
* UART_ERR_OK : 发送数据成功代码;
* UART_ERR_RXEMPTY: 发送数据缓存满错误代码;
*
* Note: 该函数只是存储数据到发送缓存中,并不立即发送;
************************************************************************************/
unsigned char Uart1_SendString(unsigned char *ptr);
/***********************************************************************************
* Function: Uart1_GetCharsRxBuf;
*
* Description: 读取接收数据缓存中数据长度;
*
* Input: none;
*
* Output: none;
*
* Return: 接收数据缓存中数据长度;
*
* Note: none;
************************************************************************************/
unsigned char Uart1_GetCharsRxBuf(void);
/***********************************************************************************
* Function: Uart1_GetCharsTxBuf;
*
* Description: 读取发送数据缓存中空闲空间长度;
*
* Input: none;
*
* Output: none;
*
* Return: 发送数据缓存中空闲空间,单位:字节;
*
* Note: none;
************************************************************************************/
unsigned char Uart1_GetCharsTxBuf(void);
/***********************************************************************************/
// 文件结束
/***********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -