MSP430单片机串口通信实例(已验证)
/*main.c 功能:串口通信 日期:2013.9.11 姓名:MRT notice:无论接收发送只要标志位(TIRI)置位立马进入中断一般情况即使中断 不允许的情况下buffer中任然接收到数据并存储 * ** / #include“msp430 xl4x.hH #include“whole.h“ #include“main.h“ struct power guss; unsigned char buffer_value; void main() ( WDTCTL = WDTPW + WDTHOLD; init_usart(); init_clk(); _eint(); while(l) } } #pragma vector = USARTORX_VECTOR _interrupt void usartO_rx(void) ( buffer_value++; guss.buffer[O] = RXBUFO; if(buffer_value==l) ( guss.buffer[l] = RXBUFO; guss.value = guss.buffer[l]; guss.value«=4; } if(buffer_value==2) ( guss.buffer[2] = RXBUFO; buffer_value = 0; } /**basic.c 功能:串口通信基础函数配置 日期:2013.9.11 姓名:MRT notice:无论接收发送只要标志位(TIRI)置位 立马进入中断一般情况即使中断 不允许的情况下buffer中任然接收到数据并存储 #include“msp430 xl4x.hH #include“whole.h“ #include“main.h“ void init_usart() ( UTCTLO |=SSEL1;//串口时钟源选择的是SMCLK UBR00 = 0Xa0; UBR10 = 0X01; UMCTLO = OXcO;// 波特率 19200 UCTLO UCTLO = CHAR; MEI |=UTXEO + URXEO;//串口接收中断打开 IE1 |=URXIEO;〃使能接收中断 } void init_clk() ( unsigned int iqO; BCSCTL1〃打开 XT2 振荡器 IFG1 //清除振荡器失效标志 BCSCTL2 =SELM_2+SELS; 〃选择 MCLK、SMCLK 为 XT, for (iqO = OxFF; iqO > 0; iqO-);// 延时,等待 XT2 起振 //判断XT2是否起振 while ((IFG1 P4SEL |=BIT1;// P4.1 接内部模块 TBCCRO = 400; TBCCTL1 = OUTMOD_7;// CCR1 reset/set TBCCR1 = 50;//CCR1 PWM duty cycle TBCTL = TBSSEL_2 + MC_1;// ******************************Qnrl****************************************