找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4403|回复: 0
收起左侧

MSP430单片机字符解析程序实例

[复制链接]
ID:108615 发表于 2016-3-14 20:17 | 显示全部楼层 |阅读模式
本程序是《MSP430系列单片机系统工程设计与实践》书里面的源码,(包含工程文件 (例3.2.5))完整例程下载:http://www.51hei.com/bbs/dpj-46245-1.html


关于本程序的详细解说大家可以点击上图下载电子书

  1. #include <msp430x42x.h>
  2. unsigned char RedState=0;
  3. unsigned char GreenState=0;
  4. unsigned char BlackState=0;
  5. #define RED_ON  P1OUT |= BIT3
  6. #define GREEN_ON  P1OUT |= BIT1
  7. #define LED_OFF  P1OUT =0

  8. void main( void )
  9. {                               

  10.   WDTCTL = WDTPW + WDTHOLD;           // 停止看门狗
  11.   FLL_CTL0 |= XCAP18PF;                // 配置晶振负载电容
  12.   P1OUT=0;
  13.   P1DIR|=(BIT1+BIT3);
  14.   U0CTL = CHAR;                        // 异步通讯模式,8位数据,无校验,1位停止位。
  15.   ME1 |= UTXE0 + URXE0;                // 开启串口0收发模块
  16.   U0TCTL |= SSEL0;                // 选择ACLK作为串口波特率时钟源。
  17.   U0BR1 = 0;                        //
  18.   U0BR0 = 13;                        // 分频系数整数部分=13
  19.   U0MCTL = 0x6B;                // 分频系数小数部分调制=5/8。(2400bps)
  20.   P2SEL |= BIT4 + BIT5;  // P2.4,5 开启第二功能,作为串口收发引脚(不同单片机有差别)
  21.   IE1 |= URXIE0;                 // 允许UART0的接收中断
  22.   _EINT();                        // 总中断允许

  23.   while(1)
  24.   {
  25.     LPM3;
  26.   }
  27. }


  28. /********************************************************************
  29. * 名    称:UART_RX()
  30. * 功    能:串口接收中断,每接收到1字节会发生一次中断
  31. ********************************************************************/
  32. #pragma vector=UART0RX_VECTOR
  33. __interrupt void UART0_RX (void)
  34. {
  35.    switch(RedState)
  36.    {
  37.       case 0 : if (U0RXBUF=='r')RedState=1;
  38.                else             RedState=0;
  39.                break;
  40.       case 1 : if (U0RXBUF=='e')RedState=2;
  41.                else             RedState=0;
  42.                break;
  43.       case 2 : if (U0RXBUF=='d'){RedState=0; RED_ON;}
  44.                else             RedState=0;
  45.                break;               
  46.    }
  47.    
  48.    switch(GreenState)
  49.    {
  50.       case 0 : if (U0RXBUF=='g')GreenState=1;
  51.                else             GreenState=0;
  52.                break;
  53.       case 1 : if (U0RXBUF=='r')GreenState=2;
  54.                else             GreenState=0;
  55.                break;
  56.       case 2 : if (U0RXBUF=='e')GreenState=3;
  57.                else             GreenState=0;
  58.                break;
  59.       case 3 : if (U0RXBUF=='e')GreenState=4;
  60.                else             GreenState=0;
  61.                break;
  62.       case 4 : if (U0RXBUF=='n'){GreenState=0;GREEN_ON;}
  63.                else              GreenState=0;
  64.                break;                  
  65.    }

  66.    switch(BlackState)
  67.    {
  68.       case 0 : if (U0RXBUF=='b')BlackState=1;
  69.                else             BlackState=0;
  70.                break;
  71.       case 1 : if (U0RXBUF=='l')BlackState=2;
  72.                else             BlackState=0;
  73.                break;
  74.       case 2 : if (U0RXBUF=='a')BlackState=3;
  75.                else             BlackState=0;
  76.                break;
  77.       case 3 : if (U0RXBUF=='c')BlackState=4;
  78.                else             BlackState=0;
  79.                break;
  80.       case 4 : if (U0RXBUF=='k'){BlackState=0;LED_OFF;}
  81.                else              BlackState=0;
  82.                break;                  
  83.    }     
  84. }
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表