標題:
MSP430單片機字符解析程序?qū)嵗?
[打印本頁]
作者:
51hei單片
時間:
2016-3-14 20:17
標題:
MSP430單片機字符解析程序?qū)嵗?br />本程序是《MSP430系列單片機系統(tǒng)工程設(shè)計與實踐》書里面的源碼,(包含工程文件 (例3.2.5))完整例程下載:
http://www.torrancerestoration.com/bbs/dpj-46245-1.html
關(guān)于本程序的詳細解說大家可以點擊上圖下載電子書
#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位數(shù)據(jù),無校驗,1位停止位。
ME1 |= UTXE0 + URXE0; // 開啟串口0收發(fā)模塊
U0TCTL |= SSEL0; // 選擇ACLK作為串口波特率時鐘源。
U0BR1 = 0; //
U0BR0 = 13; // 分頻系數(shù)整數(shù)部分=13
U0MCTL = 0x6B; // 分頻系數(shù)小數(shù)部分調(diào)制=5/8。(2400bps)
P2SEL |= BIT4 + BIT5; // P2.4,5 開啟第二功能,作為串口收發(fā)引腳(不同單片機有差別)
IE1 |= URXIE0; // 允許UART0的接收中斷
_EINT(); // 總中斷允許
while(1)
{
LPM3;
}
}
/********************************************************************
* 名 稱:UART_RX()
* 功 能:串口接收中斷,每接收到1字節(jié)會發(fā)生一次中斷
********************************************************************/
#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;
}
}
復制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1