/* ****************************************************************************** * * @file uart.c * @brief uart module * * * @version 1.0 * @date 2022/12/14 15:00:40 * @author Alex Xu * * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. * All Rights Reserved * * History: * Revision Date Author Desc * 1.0.0 2022/12/14 Alex build this file ******************************************************************************/ /*_____ I N C L U D E S ____________________________________________________*/ #include "uart.h" #include "system.h" #include "vox_module.h" #include "sleep.h" #if UART0_ENABLE /******************************************************************************\ Macro definitions \******************************************************************************/ #define NONE_PARITY 0 //无校验 #define ODD_PARITY 1 //奇校验 #define EVEN_PARITY 2 //偶校验 #define MARK_PARITY 3 //标记校验 #define SPACE_PARITY 4 //空白校验 #define PARITYBIT EVEN_PARITY //定义校验位 /******************************************************************************\ Variables definitions \******************************************************************************/ bit busy0; #ifdef VOX_RX idata uint8_t RX0_Buffer[COM0_Data_Lenth] = 0; //接收缓冲 bit Uart0_RX_Finish_Flag = 0; #endif #ifdef _DEBUG_ALL void Uart0SendData(uint8_t Txdata) { while(busy0); ACC = Txdata; if (P) //根据P来设置校验位 { #if (PARITYBIT == ODD_PARITY) TB80 = 0; //设置校验位为0 #elif (PARITYBIT == EVEN_PARITY) TB80 = 1; //设置校验位为1 #endif } else { #if (PARITYBIT == ODD_PARITY) TB80 = 1; //设置校验位为1 #elif (PARITYBIT == EVEN_PARITY) TB80 = 0; //设置校验位为0 #endif } busy0 = 1; S0BUF = ACC; } char putchar(char c) { #if 0 while(!TI0); TI0 = 0; return (S0BUF = c); #else Uart0SendData(c); return(c); #endif } #endif /* ******************************************************************************* * void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf) * * Description : UART0 Send Packet * * Arguments : NONE * Returns : NONE * Notes : NONE * ******************************************************************************* */ #ifdef VOX_TX void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf) { uint8_t i = 0; for(i=0;i