码迷,mamicode.com
首页 > 其他好文 > 详细

MSP430F4152串口操作

时间:2016-07-10 16:42:26      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

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

  名称:串口通讯 

    功能:将接到的数据组后原封不动的发送出去 

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

#include  <msp430x41x2.h> 

unsigned char i,ii,n; 
unsigned char RX[20]={0}; 

void UART_init() 


  P6SEL |= BIT5+BIT6;                       // P6.5,6 = USCI_A0 RXD/TXD   

  UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK   

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

  UCA0BR1 = 0x00;                           // 

  UCA0MCTL = 0x06;                          // Modulation 

  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**   

  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt   

  IE2 &= ~UCA0TXIE; 

}

 

//////////////////////////////////////////////////////////////////////////////// 

void Iint_Port1(void)//端口P1_4和P1_5中断 

  P1DIR&=~BIT5; //设置为输入方向P1_4 

  P1SEL&=~BIT5; //设置为普通I/O口功能

  P1IES&=~BIT5; //选择上升沿触发 

  P1IE|=BIT5; //打开中断允许 

  P1IFG&=~BIT5; //P2IES的切换可能使P1IFG.4置位,需清除

  _EINT(); 

/////////////////////////////////////////////////////////////////////

void main(void) 

{

  WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT   

  FLL_CTL0 |= XCAP14PF;                     // Configure load caps   

  Iint_Port1();   

  UART_init(); 

  _BIS_SR(LPM3_bits + GIE);                 // Enter LPM0, interrupts enabled 


//////////////////////////////////////////////////////////////////// 

#pragma vector=USCIAB0RX_VECTOR 

__interrupt void USCIA0RX_ISR (void) 

{  
  RX[i] = UCA0RXBUF;

  i++; 

  if(RX[i-1]==0x68)    

  {     

    n=i;

    i=0;    

  } 

}

//////////////////////////////////////////////////////////////////////// 

#pragma vector = PORT1_VECTOR //外部中断中断入口 

__interrupt void P1_ISR(void) 

{

  if(P1IFG&BIT5) 

  { 

    P1IFG&=~BIT5; //多源中断,需靠软件清除P1IFG.5  

    for(ii=0;ii<n;ii++) //发送8个数据

    { 

      UCA0TXBUF=RX[ii];

      while(!(IFG2&UCA0TXIFG)); 

    } 

  } 

}

MSP430F4152串口操作

标签:

原文地址:http://www.cnblogs.com/cloudstep/p/5657873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!