单片机
返回首页

MSP430f5529LP通过串口数据控制LED亮灭

2022-11-04 来源:csdn

根据TI官网的串口回环例程改编,判断串口接收的数据。如果接收到“1”就点亮LED1,熄灭LED2;接收到“2”点亮LED2,熄灭LED1;接收到“3”同时点亮两个LED;接收到“4”同时熄灭两个LED。


演示

串口调试助手设置如下

在这里插入图片描述

接线图如下

在这里插入图片描述

程序

#include


void sendstring(unsigned char *p)

{

    while(*p!='')

    {

        while(!(UCA0IFG&UCTXIFG));

        UCA0TXBUF=*p++;

    }

}


int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT


  P1DIR |= BIT0;                            //P1.0方向

  P1OUT &= ~ BIT0;                          //P1.0输出低电平

  P4DIR |= BIT7;                            //P4.7方向

  P4OUT &= ~ BIT7;                          //P4.7输出低电平


  P3SEL |= BIT3+BIT4;                       // P3.3,4 = USCI_A0 TXD/RXD

  UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**

  UCA0CTL1 |= UCSSEL_2;                     // SMCLK

  UCA0BR0 = 9;                              // 1MHz 115200 (see User's Guide)

  UCA0BR1 = 0;                              // 1MHz 115200

  UCA0MCTL |= UCBRS_1 + UCBRF_0;            // Modulation UCBRSx=1, UCBRFx=0

  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**

  UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt


  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled

  __no_operation();                         // For debugger

}


// Echo back RXed character, confirm TX buffer is ready first

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)


#pragma vector=USCI_A0_VECTOR

__interrupt void USCI_A0_ISR(void)


#elif defined(__GNUC__)

void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)

#else

#error Compiler not supported!

#endif

{


    while (!(UCA0IFG&UCTXIFG));  // USCI_A0 TX buffer ready?

    //UCA0TXBUF = UCA0RXBUF;       // TX -> RXed character

    switch(UCA0RXBUF)            //判断接收的数据

    {

      case'1':P1OUT |= BIT0;     //打开LED1

              P4OUT &= ~ BIT7;   //关闭LED2

              sendstring('LED1 onrn');

              sendstring('LED2 offrn');

      break;


      case'2':

              P4OUT |= BIT7;     //打开LED2

              P1OUT &= ~ BIT0;   //关闭LED1

              sendstring('LED1 offrn');

              sendstring('LED2 onrn');

      break;


      case'3':P1OUT |= BIT0;     //打开LED1

              P4OUT |= BIT7;     //打开LED2

              sendstring('LED1 onrn');

              sendstring('LED2 onrn');

      break;

      case'4':


              P1OUT &= ~ BIT0;   //关闭LED1

              P4OUT &= ~ BIT7;   //关闭LED2

              sendstring('LED1 offrn');

              sendstring('LED2 offrn');

      break;

      default: P1OUT &= ~ BIT0;

               P4OUT &= ~ BIT7;

      break;


  }

}

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 带有短路保护系统的5V直流稳压电源电路图

    相关电子头条文章