- #include "..config.h"
- //定义串口操作变量
- // 串口 0 的接收标志
- char nRev_UART0 ;
- // 串口 0 的接收缓冲区
- int UART0_RX_Len = 0;
- char UART0_RX_BUF[UART0_RX_MAXLen] = {0};
- /*
- int nTX0_Len;
- char nRX0_Len;
- char nTX0_Flag;
- //char nTime_Flag;
- int nSend_TX0;
- */
- int ReadUART0_new = 0;
- /*
- **********************************************************************
- 函数:UART0_Init
- 参数:无
- 返回:无
- 功能:串口0初始化程序
- **********************************************************************
- */
- void UART0_Init(void)
- {
- // UART0 Function, Idle line multiprocessor Protocol, 9600,8,n,1 for GSM
- UCTL0 &= ~SWRST; //reset SWRST bit
- UCTL0 = SPB+CHAR; //
- //9600
- U0BR0 = 0x74; // Prescale divisor = 0x0174
- U0BR1 = 0x01;
- U0MCTL = 0xEF; // Modulation 11101111
- //4800
- //U0BR0 = 0xE9; // Prescale divisor = 0x02E9
- //U0BR1 = 0x02;
- //U0MCTL = 0x6D; // Modulation 01101101
- UTCTL0 |= SSEL0+SSEL1; //UCLK = ACLK 0X10; tx control reg.
- URCTL0 = 0x00; //rx control reg.
- ME1 |=URXE0+UTXE0; // //Enable USART1 TXD/RXD
- P3SEL |= BIT4+BIT5; //P3.4 and P3.5 used by USART module
- P3DIR |= BIT4; //P3.4 is output
- P3DIR &=~ BIT5; //P3.5 is input
- IE1 |= URXIE0; //enable uart0 interrupt*/
- }
- /*
- **********************************************************************
- 函数:UART0_RX_ISR
- 参数:无
- 返回:无
- 功能:处理来自串口 0 的接收中断
- **********************************************************************
- */
- interrupt [UART0RX_VECTOR] void UART0_RX_ISR(void)
- {
- //接收来自的数据
- UART0_RX_BUF[UART0_RX_Len++] = RXBUF0;
- if(UART0_RX_Len >= UART0_RX_MAXLen)
- {
- UART0_RX_Len = 0;
- memset(UART0_RX_BUF,0,UART0_RX_MAXLen);
- }
- ReadUART0_new = 200;
- }
- /*
- **********************************************************************
- 函数:ReadUART0
- 参数:无
- 返回:无
- 功能:接收处理串口0的数据
- **********************************************************************
- */
- void ReadUART0(void)
- {
- if((ReadUART0_new > 0) && ((--ReadUART0_new) == 0))
- {
- ReadUART0_new = 0;
- ReadGSMReturn(UART0_RX_BUF);
- GPRS_Con(UART0_RX_BUF);
- memset(UART0_RX_BUF,0,UART0_RX_MAXLen);
- UART0_RX_Len = 0;
- }
- }
- /*
- **********************************************************************
- 函数:UART0_SendByte
- 参数:dat 要发送的数据
- 返回:无
- 功能:向串口发送字节数据,并等待发送完毕,查询方式。
- **********************************************************************
- */
- void UART0_SendByte (char dat)
- {
- U0TXBUF = dat;
- while ((UTCTL0 & 0x01) == 0); // 等待数据发送完毕
- }
- /*
- *********************************************************************************************************
- 函数:UART0_SendStr()
- 参数:str 要发送的字符串的指针
- 返回:无
- 功能:向串口发送一字符串
- *********************************************************************************************************
- */
- void UART0_SendStr_char (char *str)
- {
- while (1)
- {
- if (*str == ' ') break; // 遇到结束符,退出
- UART0_SendByte(*str++); // 发送数据
- }
- }