#include<msp430x22x2.h>
#define uchar unsigned char
#define RxIn 90 //定义接收的数组长度为90
uchar AT[]="AT"; //握手信号
uchar SystemBuf[RxIn]; //储存出口接收数据
uchar Rx=0;
void UART_init (void);
void sendchar(uchar ch);
void sendstring(uchar *p);
/******************************************************************************************************************/
//////////////////////函数void UART_init;实现功能:对串口进行初始化////////////////////////////////////////////////
/******************************************************************************************************************/
void UART_init (void)
{
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_1MHZ; //设置DCO为1MHz
DCOCTL = CALDCO_1MHZ;
UCA0CTL1 |= UCSWRST; //开启设置
UCA0CTL1 |= UCSSEL_2; //选择时钟源SMCLK
UCA0BR0 = 104; // 1MHZ/ 9600 = 104.166
UCA0BR1 = 0;
UCA0MCTL = UCBRS0; //0.17*8=1.33,四舍五入为1
P3SEL |= 0x30; //P3.4 /5 为USART0的TXD/RXD
P3DIR |= 0x10; //P3.4 为输出
UCA0CTL1 &= ~UCSWRST;
IE2 |= UCA0RXIE; // 使能USCI_A0的接收中断
_EINT();
}
/******************************************************************************************************************/
//////////////////////函数void sendchar(uchar ch);实现功能:发送一字节数据///////////////////////////////////////
/******************************************************************************************************************/
void sendchar(uchar ch)
{
while((IFG2& UCA0TXIFG)==0);
UCA0TXBUF = ch;
}
/******************************************************************************************************************/
//////////////////////函数void sendstring(uchar *p);实现功能:通过串口发送字符串///////////////////////////////
/******************************************************************************************************************/
void sendstring(uchar *p)
{
while(*p)
{
sendchar(*p);
p++;
}
sendchar(0x0D);
sendchar(0x0A);
}
/******************************************************************************************************************/
///////////////////函数 void main();实现功能:主函数,////////////////////////////////////////
/******************************************************************************************************************/
void main()
{
ADC10CTL0&=~ENC; //不能启动AD转换
UART_init(); //串口初始化
sendstring(AT); //发送AT握手信号
Delay(); //延时函数,具体形式不再给出,功能为延迟一定时间
}
/******************************************************************************************************************/
///////////////////中断函数void USART0_RX (void);实现功能:通过串口接收数据///////////////////////////////
/******************************************************************************************************************/
#pragma vector = USCIAB0RX_VECTOR
__interrupt void USA0RX_ISR (void)
{
if(Rx<RxIn)
{
SystemBuf[Rx] = UCA0RXBUF;
Rx++;
}
IFG2 &= ~0x01; //跳出中断函数
}