我一直使用这个程序,采用地址位多机协议,很好用,一点问题没有.
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 {//接收数据 } } } } }
} |