1.串口初始化
void Uart_Init(void)
{
P3SEL |= BIT3+BIT4; // P3.3,4 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSWRST; // **Put state machine in reset**
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 0x09; // 1MHz 115200 (see User's Guide)
UCA0BR1 = 0x00; // 1MHz 115200
UCA0MCTL |= UCBRS_1 + UCBRF_0; // Modulation UCBRSx=1, UCBRFx=0
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt
// _EINT();
__bis_SR_register(GIE); //开启全局中断
}
2.串口发送字节
void Send_Char(char sendchar)
{
while (!(UCA0IFG&UCTXIFG)); //等待发送寄存器为空
UCA0TXBUF = sendchar;
}
3.串口发送字符串
void Send_Str(unsigned char *ptr)
{
while(*ptr != '\0')
{
Send_Char(*ptr++); // 发送数据
}
Send_Char('\n'); //发送换行指令
}
4.接收中断服务函数
#pragma vector=USCI_A0_VECTOR
__interrupt void uartA0_Rx()
{
char a;
UCA0IFG &=~UCRXIFG;
while(!(UCA0IFG&UCRXIFG))
{
a=UCA0RXBUF;
switch(a){
case '1': Send_Str("aid");
__delay_cycles(1000000);break;
default:Send_Str("bid");
__delay_cycles(1000000);break;
}
}
}