×
嵌入式 > 技术百科 > 详情

MSP430串口接收控制LED

发布时间:2020-06-15 发布时间:
|

/**********************************************    

*程序描述:单片机的P3.4、P3.5作为串口接收字符,将接受到的字符再发送出去

*并且根据接受到的字符‘1’‘2’‘3’‘4’分别点亮LED1、LED2、LED3、LED4

P2.0->LED1 ,P2.1->LED2, P2.2->LED3 ,P2.3->LED4

***********************************************/  

#include 

void usartInit(void);                           //串口初始化  

void main(void)  

{  

  WDTCTL = WDTPW + WDTHOLD;                     // Stop WDT  

  P2DIR |= BIT0+BIT1+BIT2+BIT3;

  P2OUT |= BIT0+BIT1+BIT2+BIT3;

  usartInit();                                  //初始化串口

  while(1){  

  _BIS_SR(LPM3_bits + GIE);                     // Enter LPM3 w/ interrupt  

  while((UTCTL0&TXEPT)==0);                     //等待数据发送完毕     

   TXBUF0 = RXBUF0;                             // RXBUF0 to TXBUF0  

   switch(RXBUF0){

     case'1':P2OUT&=~BIT0;break;                //打开LED1

     case'2':P2OUT&=~BIT1;break;                //打开LED2

     case'3':P2OUT&=~BIT2;break;                //打开LED3

     case'4':P2OUT&=~BIT3;break;                //打开LED4

     default:P2OUT|=BIT0+BIT1+BIT2+BIT3;break;  //熄灭所有的LED

  }  

  }

}  

  

#pragma vector=UART0RX_VECTOR  

__interrupt void usart0_rx (void)  

{  

   LPM3_EXIT;  

}  

/****************************************************************************    

*函数名: uartInit()                                                          /    

*作用  :USART0的初始化配置,使用P3.4和P3.5,使用接收中断                    /    

*返回值:无                                                                  /    

*参数  :无                                                                  /    

*作者  :Zhenhua Liu                                                         /     

*时间  :2017.11.02                                                          /     

*****************************************************************************/    

void usartInit(){  

  P3SEL |= 0x30;                            // P3.4,5 = USART0 TXD/RXD  

  ME1 |= UTXE0 + URXE0;                     // Enable USART0 TXD/RXD  

  UCTL0 |= CHAR;                            // 8-bit character  

  UTCTL0 |= SSEL0;                          // UCLK = ACLK  

  UBR00 = 0x03;                             // 32k/9600 - 3.41  

  UBR10 = 0x00;                             //  

  UMCTL0 = 0x4A;                            // Modulation  

  UCTL0 &= ~SWRST;                          // Initialize USART state machine  

  IE1 |= URXIE0;                            // Enable USART0 RX interrupt  

  

}  





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
物联传感与Atmel强强联手 达成智能家居战略合作协议