本程序是《MSP430系列单片机系统工程设计与实践》书里面的源码,(包含工程文件 (例3.2.5))完整例程下载:http://www.51hei.com/bbs/dpj-46245-1.html
关于本程序的详细解说大家可以点击上图下载电子书
- #include <msp430x42x.h>
- unsigned char RedState=0;
- unsigned char GreenState=0;
- unsigned char BlackState=0;
- #define RED_ON P1OUT |= BIT3
- #define GREEN_ON P1OUT |= BIT1
- #define LED_OFF P1OUT =0
- void main( void )
- {
- WDTCTL = WDTPW + WDTHOLD; // 停止看门狗
- FLL_CTL0 |= XCAP18PF; // 配置晶振负载电容
- P1OUT=0;
- P1DIR|=(BIT1+BIT3);
- U0CTL = CHAR; // 异步通讯模式,8位数据,无校验,1位停止位。
- ME1 |= UTXE0 + URXE0; // 开启串口0收发模块
- U0TCTL |= SSEL0; // 选择ACLK作为串口波特率时钟源。
- U0BR1 = 0; //
- U0BR0 = 13; // 分频系数整数部分=13
- U0MCTL = 0x6B; // 分频系数小数部分调制=5/8。(2400bps)
- P2SEL |= BIT4 + BIT5; // P2.4,5 开启第二功能,作为串口收发引脚(不同单片机有差别)
- IE1 |= URXIE0; // 允许UART0的接收中断
- _EINT(); // 总中断允许
- while(1)
- {
- LPM3;
- }
- }
- /********************************************************************
- * 名 称:UART_RX()
- * 功 能:串口接收中断,每接收到1字节会发生一次中断
- ********************************************************************/
- #pragma vector=UART0RX_VECTOR
- __interrupt void UART0_RX (void)
- {
- switch(RedState)
- {
- case 0 : if (U0RXBUF=='r')RedState=1;
- else RedState=0;
- break;
- case 1 : if (U0RXBUF=='e')RedState=2;
- else RedState=0;
- break;
- case 2 : if (U0RXBUF=='d'){RedState=0; RED_ON;}
- else RedState=0;
- break;
- }
-
- switch(GreenState)
- {
- case 0 : if (U0RXBUF=='g')GreenState=1;
- else GreenState=0;
- break;
- case 1 : if (U0RXBUF=='r')GreenState=2;
- else GreenState=0;
- break;
- case 2 : if (U0RXBUF=='e')GreenState=3;
- else GreenState=0;
- break;
- case 3 : if (U0RXBUF=='e')GreenState=4;
- else GreenState=0;
- break;
- case 4 : if (U0RXBUF=='n'){GreenState=0;GREEN_ON;}
- else GreenState=0;
- break;
- }
- switch(BlackState)
- {
- case 0 : if (U0RXBUF=='b')BlackState=1;
- else BlackState=0;
- break;
- case 1 : if (U0RXBUF=='l')BlackState=2;
- else BlackState=0;
- break;
- case 2 : if (U0RXBUF=='a')BlackState=3;
- else BlackState=0;
- break;
- case 3 : if (U0RXBUF=='c')BlackState=4;
- else BlackState=0;
- break;
- case 4 : if (U0RXBUF=='k'){BlackState=0;LED_OFF;}
- else BlackState=0;
- break;
- }
- }
复制代码
|