#include <msp430x14x.h>
#define uint unsigned int
#define uchar unsigned char
uchar RX1Flag=0;//接收完成标志
uchar TX1Flag=0;//发送中断标志
uchar RX1_BUF[];
uchar TX1_BUF[];
uint RX1_Len;
uint TX1_Len;
void Init_UART1(void)
{
U1CTL|=SWRST;//复位串口
U1CTL|=CHAR; //8位数据
U1TCTL|=SSEL1;//select SMCLK AS CLK
U1BR0=0Xa0;
U1BR1=0X01;
UMCTL1=0Xc0;//19200
ME2|=UTXE1+URXE1;//使能接收和发送
U1CTL&=~SWRST;//清除串口复位信号
IE2|=URXIE1;//使能接收中断
P3SEL|=BIT6;
P3SEL|=BIT7;//选择I/O口使用扩展功能和方向
P3DIR|=BIT6;
}
sent_byte(uchar data)
{
while((IFG2&UTXIFG1)==0);//判断发送缓冲区是否结束
U1TXBUF=data;
}
#pragma vector=UART1RX_VECTOR
__interrupt void UART1_RX_ISR(void)
{
uchar data=0;
data=U1RXBUF; //读取接受到的数据并且发送到PC机
sent_byte(data);
sent_byte(0x00);
}
main()
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD ;
BCSCTL1 &= ~XT2OFF; //打开XT2振荡器
do
{
IFG1&=~OFIFG; //清除振荡错误标志
for(i=0xFF;i>0;i--);
}
while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待
BCSCTL2 |= SELM1+SELS; //MCLK为8MHz,SMCLK为8MHz, SELM1=SELM_2
P1DIR=0X03;
P1SEL|=(BIT3+BIT2); // 选择P1^3和P1^2作为外部计数脉冲的输入端
P2DIR=0XFF;
P2OUT=0X80;
P3DIR|=(BIT0+BIT1+BIT2+BIT3+BIT4);
P4DIR=0X1F;//P4^1、P4^2、P4^3、P4^4作为PWM的输出端
P4SEL|=(BIT4+BIT3+BIT2+BIT1);
P4OUT=0X00;
P5DIR=0X00;
P6DIR=0X20;
_EINT();
while(1)
{
_NOP();
}
}