#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(); } }
|