当前位置:首页 > 单片机 > 单片机
[导读]/**********************************************************************//* 名称:串口通讯功能:将接到的数据组后原封不动的发送出去*//*******************************************************************

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

 名称:串口通讯

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

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

#include

unsignedchari,ii,n;
unsignedcharRX[20]={0};

voidUART_init()

{
  P6SEL|=BIT5+BIT6;//P6.5,6=USCI_A0RXD/TXD

  UCA0CTL1|=UCSSEL_1;//CLK=ACLK

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

  UCA0BR1=0x00;//

  UCA0MCTL=0x06;//Modulation

  UCA0CTL1&=~UCSWRST;//**InitializeUSCIstatemachine**

  IE2|=UCA0RXIE;//EnableUSCI_A0RXinterrupt

  IE2&=~UCA0TXIE;

}

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

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

{

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

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

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

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

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

  _EINT();

}

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

voidmain(void)

{

  WDTCTL=WDTPW+WDTHOLD;//StopWDT

  FLL_CTL0|=XCAP14PF;//Configureloadcaps

  Iint_Port1();

  UART_init();

  _BIS_SR(LPM3_bits+GIE);//EnterLPM0,interruptsenabled

}
////////////////////////////////////////////////////////////////////

#pragmavector=USCIAB0RX_VECTOR

__interruptvoidUSCIA0RX_ISR(void)

{
  RX[i]=UCA0RXBUF;

  i++;

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

  {

    n=i;

    i=0;

  }

}

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

#pragmavector=PORT1_VECTOR//外部中断中断入口

__interruptvoidP1_ISR(void)

{

  if(P1IFG&BIT5)

  {

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

    for(ii=0;ii

    {

      UCA0TXBUF=RX[ii];

      while(!(IFG2&UCA0TXIFG));

    }

  }

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭