zoukankan      html  css  js  c++  java
  • MSP430F4152串口操作

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

      名称:串口通讯 

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

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

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

        } 

      } 

    }

  • 相关阅读:
    .net基础学java系列(一)视野
    技术栈
    Apollo(阿波罗)携程开源配置管理中心
    .NET 动态调用WCF
    RPC 工作原理
    ServiceStack 简单使用
    PRC 框架选择
    栈vs堆,最详细的对比
    使用SuperSocket打造逾10万长连接的Socket服务
    开源项目练习EF+jQueryUI前后端分离设计
  • 原文地址:https://www.cnblogs.com/cloudstep/p/5657873.html
Copyright © 2011-2022 走看看