MSP430普通IO模拟串口的问题,读取数据老不对

2019-03-24 09:20发布

由于串口不够用,所以用MSP430普通IO模拟串口来读取数据,并将数据通过MSP430自带的串口发送到上位机,即下面的语句TXBYTE1(recvBuff) ,可是读到的数据一直是FF。定时器A采用时钟1MHz,模拟串口速率为9600,IO口为F1611的P2.2,哪位能帮忙看下么?搞了两天了,没搞出来

#include<msp430x16x.h>
void InitSys();

unsigned char bitTime=100;//每一位数据时间
unsigned char hBitTime=50;//半位数据的时间
unsigned char recvBuff;//接收数据缓冲区,8位,开始位结束位不接收
unsigned char bitCnt=0;//正在接收的数据位标志


#define RXD       0x04                      // RXD on P2.2
#define TXD       0x08                      // TXD on P2.3


void int_clk()
{
    unsigned char i;
    BCSCTL1&amp;=~XT2OFF;  //打开XT振荡器
    BCSCTL2|=SELM1+SELS+DIVS_3;//MCLK 8M and SMCLK 1M  
    do
        {
        IFG1 &amp;= ~OFIFG;                 //清除振荡错误标志
        for(i = 0; i &lt; 100; i++)
          _NOP();                        //延时等待
        }
    while ((IFG1 &amp; OFIFG) != 0);        //如果标志为1继续循环等待
    IFG1&amp;=~OFIFG;
}


void main()
{
  _DINT();    // 关闭中断
  int_clk();  // 初始化时钟
  InitSys();  
  _EINT();
    while(1);

}


/*************中断服务程序*****************************/
#pragma  vector=TIMERA0_VECTOR
__interrupt void TA0_ISR(void)
{
  TACCR0 += bitTime;
  switch(bitCnt)
  {
  case 0:
         recvBuff = 0;//清空缓冲区
        TACCR0 += hBitTime ;//
        TACCTL0 &amp;= ~CAP;
        bitCnt++;
        break;
  case 8:
        if(P2IN&amp;RXD)
          recvBuff |= BIT7;
        else  
          recvBuff &amp;= ~BIT7;
       TXBYTE1(recvBuff);  将模拟串口读到的数据经串口发送到上位机软件
       bitCnt++;
       break;
  case 9:
       TACCTL0 |= CAP;
       bitCnt = 0;
       break;
  default:
        if(P2IN&amp;RXD)
             recvBuff |= BIT7;
        else  
            recvBuff &amp;= ~BIT7;
        recvBuff&gt;&gt;=1;
        bitCnt++;
        break;
  }
}


/***********子函数***************/
void InitSys()
{
            WDTCTL = WDTPW+WDTHOLD ;//关闭看门狗
            TACTL = TASSEL1 + ID_3 + MC_2; //选择MCLK,8分频得1MHz为定时器始钟
            
            P2SEL = RXD;    // Set P2.2 to TA0,P2.2 是TA0 捕获比较模式的外部输入口  

            CCTL0 = SCS + OUTMOD0 + CM1 + CAP + CCIE + CCIS_1; // Sync, Neg Edge, Cap
            

}

[ 本帖最后由 tansp 于 2012-6-11 20:55 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
wstt
2019-03-24 12:48
 精彩回答 2  元偷偷看……0人看过

一周热门 更多>

相关问题

    相关文章