www.pudn.com > M26(2M).rar > SerialSvr.c, change:2016-01-20,size:3323b


/*************************************************************************************************** 
	* Copyright (c) 2015 BHS 
	* All rights reserved. 
	* 文件名称: SerialSvr.c 
	* 摘 要:    通信任务 
	* 当前版本: V1.0, 易建, 2015-10-12 
	* 更改记录: 
***************************************************************************************************/ 
#include "Includes.h" 
 
#define     START_HCT_DET   0 
#define     HCT_DET_DATA    1 
#define     START_BG_DET    2 
#define     BG_DET_DATA     3 
#define     STOP_HCT_DET    4 
#define     STOP_BG_DET     5 
 
void TimerB_Init(u8 freq); 
 
/*************************************************************************************************** 
 * 函 数 名: UCA0_Init 
 * 功能描述: 串口0初始化,从CPU通信 
 * 函数说明: 设置UCA0的时钟源为SMCLK,设置为8位字符,奇校验,1位停止位 
 			 设置为UART工作模式 
 * 输  入: 无 
 * 返  回: 无 
***************************************************************************************************/ 
void UCA0_Init(void) 
{ 
    #ifdef CLK_8MHZ 
    ME1 |= UTXE0 + URXE0;                                   // Enabled USART0 TXD/RXD 
    UCTL0 |= CHAR;                                          // 8-bit character, SWRST = 1 
    UTCTL0 |= SSEL1;                                        // UCLK = SMCLK, start edge detect 
    UBR00 = 0x45;                                           // 115200 from 8Mhz 
    UBR10 = 0x00; 
    UMCTL0 = 0x54;                                          // Modulation 
    UCTL0 &= ~SWRST;                                        // Initialize USART state machine 
    IE1 |= URXIE0;                                          // Enable USART0 RX interrupt 
    #endif 
   
    #ifdef CLK_1MHZ 
    ME1 |= UTXE0 + URXE0;                                   // Enable USART0 TXD/RXD 
    UCTL0 |= CHAR;                                          // 8-bit character 
    UTCTL0 |= SSEL1;                                        // UCLK = SMCLK 
    UBR00 = 215;                                           // 2MHz 9600 
    UBR10 = 0;                                             // 2MHz 9600 
    UMCTL0 = 0x40;                                          // modulation 
    UCTL0 &= ~SWRST;                                        // Initialize USART state machine 
    IE1 |= URXIE0;                                          // Enable USART0 RX interrupt 
    #endif 
} 
 
/*************************************************************************************************** 
 * 函 数 名: UCA0_SendByte 
 * 功能描述: 串口发送一字节 
 * 函数说明: 无 
 * 输  入: unsigned char c 
 * 返  回: 无 
***************************************************************************************************/ 
void UCA0_SendByte(unsigned char c) 
{ 
    while (!(IFG1 & UTXIFG0)); 
        U0TXBUF = c; 
} 
 
/*************************************************************************************************** 
 * 函 数 名: USCI_A0_ISR 
 * 功能描述: USCI_A0串口中断处理函数 
 * 函数说明: 接收从MCU命令 
 * 输  入: 无 
 * 返  回: 无 
***************************************************************************************************/ 
#pragma vector = USART0RX_VECTOR 
__interrupt void USCI_A0_ISR(void) 
{ 
    RxDataBuff[g_u8RxIndexW++] = U0RXBUF; 
    if (g_u8RxIndexW > RX_BUFF_LEN-1) 
        g_u8RxIndexW = 0; 
}