⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.h

📁 西安明朗公司开发板ML-F020ICB的全部测试代码
💻 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 + -