MSP430串口接收控制LED
2019-04-11 来源:eefocus
/**********************************************
*程序描述:单片机的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
}
上一篇:实验二:MSP430简单程序设计
下一篇:STM8 UART中断发,中断收