#include "msp430x14x.h" #define uchar unsigned char void init(void); uchar data1[6]={'a','b','c','d','e'}; uchar buff[4]; uchar i=0,flag=0,k=0,n=0; uchar j=0; /* PC机发以Oxff开头,最后发送的数据为前几个数据的和结束的数据包,430发送字符串"abcde"给PC机*/ void main( void ) { WDTCTL=WDTPW+WDTHOLD; //BCSCTL1=0x07; //BCSCTL2=0x88; init(); _EINT(); while(1) { //TXBUF1=0xff; //while(UTCTL1&0x01==0); //i=0; if(j==1) { //i=0; for(n=0;n<6;n++) { TXBUF1=data1[n]; //for(i=0;i<10;i++); while((UTCTL1&0x01)==0); } j=0; } } } void init(void) { UCTL1|=SWRST; //UCTL1&=~SWRST; UCTL1=0x10; //8 bit数据,1bit停止位,无校验 UBR01=0x03; //9600波特率 UBR11=0x00; UMCTL1=0x4A; //位调整 UTCTL1=0x10; //选32768ACLK为时钟源 ME2|=0x30; //发送接受均允许 //ME2|=UTXE0+URXE0; //发送接受均允许 //P3SEL=0x31; //设置端口。P3.0,P3.4,P3.5 //ME2|=0x20; P3SEL=0xC0; P3DIR=0x40; // P3.0,P3.4为输出 //P3OUT|=BIT0; //设置75176的DE为1,表示使能发送。 UCTL1&=~SWRST; IE2|=URXIE1; //中断使能接收 //IE2|=UTXIE1; //中断使能发送 } #pragma vector=UART1RX_VECTOR __interrupt void UART1RX(void) { // if(!RXERR) //{ if(flag==0) { if(RXBUF1==0xff) { flag=1; i=0; } } else { buff[i]=RXBUF1; if(i>0) { k+=buff[i-1]; } //i++; //k+=buff[i]; if(buff[i]==k) { flag=0; j=1; k=0; } i++; } //} }