我一直使用这个程序,采用地址位多机协议,很好用,一点问题没有.
void comm_init(void)///串口初始化
{
UCTL0&=~SWRST;
UTCTL0&=~TXWAKE;
UCTL0|=(CHAR+MM+SPB);
IFG1&=(~(URXIFG0+UTXIFG0));
ME1|=(UTXE0+URXE0);
UTCTL0|=(SSEL0+SSEL1);
UBR00=0x05;//8M/2400
UBR10=0x0d;
UMCTL0=0xa4;
IE1|=URXIE0;
URCTL0=URXWIE;//只有收到地址字符时才永许中断
}
#pragma vector=USART0RX_VECTOR
__interrupt void USART0RX(void)
{//接收中断
unsigned char date,date1;
_EINT();
if((URCTL0&0x21)==0x1)
{//出现错误且该错误非溢出引起
URCTL0=URXWIE;
.......;
date=RXBUF0;
}
else
{
date=RXBUF0;
URCTL0&=~RXERR;
if(URCTL0&URXWIE)//接受到本机地址否
{
if(date==addr)
{
URCTL0&=~URXWIE;
.......
}
.....
}
else//接受命令、数据
{
date1=date;
...
}
else
{//接收数据
}
}
}
}
}
}