打印

求助 msp430模拟串口通信

[复制链接]
1762|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cshij2009|  楼主 | 2012-3-1 20:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
设计要求:一个芯片循环发送0到255的数据,另一个芯片当有按键的时候,接收三个数据。
遇到的问题:接收到的数据应该是连续的,现在是有时三个数据连续,有时侯不连续。找不到问题!!!
//按键之后,开始发送数据
interrupt (PORT1_VECTOR) Port1 (void)
{
  Bitcnt =0xA;
  CCR0 =TAR;
  CCR0 +=Bitime;
  data=0;
  Txdata =data;
  Txdata |=0x100;
  Txdata =Txdata <<1;
  data++;
   CCTL0 |=OUTMOD0 + CCIE;
   P1IFG &=~BIT7;

}

//TA0IV发送中断
interrupt (TIMERA0_VECTOR)Timer_A0(void)
{
CCR0 +=Bitime;
if (bitcnt ==0)
  {
    Bitcnt =0xa;
    Txdata =data;
    Txdata |=0x100;
    Txdata =Txdata <<1;
    data++;
  if(data ==0x100)
      data=0x00;
  }
else
   {
       if (Txdata &0x01)
               CCTL0 &=~OUTMOD_TOGGLE;
       else
              CCTL0 |=OUTMOD_TOGGLE;
      Txdata =Txdata >>1;
       Bitcnt --;
   }
}

//接收中断
interrupt (TIMERA0_VECTOR)Timer_A0(void)

{
  CCR0 +=Bitime;
  if(CCTL0&CAP)
   {
       CCTL0& =CAP;
       CCTL0 +=Bitime_5;
   }
else
  {
     RXData =RXData >>1;
     if (CCTL0&SCCI)
             RXData |=0x10;
    Bitcnt --;
   if (Bitcnt ==0)
     {
       Bitcnt =0x08;
       CCTL0 |=CAP;
       Data [num++] =RXData ;
       if (num==3)
          {
             num=0;
              CCTL0 & =~CCIE;

            }
     }

   }
}
设计要求:一个芯片循环发送0到255的数据,另一个芯片当有按键的时候,接收三个数据。
遇到的问题:接收到的数据应该是连续的,现在是有时三个数据连续,有时侯不连续。找不到问题!!!
//按键之后,开始发送数据
interrupt (PORT1_VECTOR) Port1 (void)
{
  Bitcnt =0xA;
  CCR0 =TAR;
  CCR0 +=Bitime;
  data=0;
  Txdata =data;
  Txdata |=0x100;
  Txdata =Txdata <<1;
  data++;
   CCTL0 |=OUTMOD0 + CCIE;
   P1IFG &=~BIT7;

}

//TA0IV发送中断
interrupt (TIMERA0_VECTOR)Timer_A0(void)
{
CCR0 +=Bitime;
if (bitcnt ==0)
  {
    Bitcnt =0xa;
    Txdata =data;
    Txdata |=0x100;
    Txdata =Txdata <<1;
    data++;
  if(data ==0x100)
      data=0x00;
  }
else
   {
       if (Txdata &0x01)
               CCTL0 &=~OUTMOD_TOGGLE;
       else
              CCTL0 |=OUTMOD_TOGGLE;
      Txdata =Txdata >>1;
       Bitcnt --;
   }
}

//接收中断
interrupt (TIMERA0_VECTOR)Timer_A0(void)

{
  CCR0 +=Bitime;
  if(CCTL0&CAP)
   {
       CCTL0& =CAP;
       CCTL0 +=Bitime_5;
   }
else
  {
     RXData =RXData >>1;
     if (CCTL0&SCCI)
             RXData |=0x10;
    Bitcnt --;
   if (Bitcnt ==0)
     {
       Bitcnt =0x08;
       CCTL0 |=CAP;
       Data [num++] =RXData ;
       if (num==3)
          {
             num=0;
              CCTL0 & =~CCIE;

            }
     }

   }
}
设计要求:一个430芯片循环发送0到255的数据,另一个430芯片在有按键按下的时候,接收三个数据。9600波特率

遇到的问题:理论上接收到的数据应该是连续的,现在是接收到的三个数据有时候连续,有时候不连续,连续的次数居多。找不到问题!!!

/*********P1.7按键中断  按键之后开始发送数据*********/

interrupt (PORT1_VECTOR) Port1 (void)
{
  Bitcnt =0xa;//位计数

  CCR0 =TAR;//捕获定时器 的值
  CCR0 +=Bitime;// 中断间隔

  data=0;//数据赋初值

  Txdata =data;
  Txdata |=0x100;// 增加停止位
  Txdata =Txdata <<1;//增加起始位

  data++;

   CCTL0 |=OUTMOD0 + CCIE;//输出模式0  开中断

   P1IFG &=~BIT7;

}

/**********TA0IV发送中断**********/
interrupt (TIMERA0_VECTOR)Timer_A0(void)
{

   CCR0 +=Bitime;//发送一位的时间间隔

if (Bitcnt ==0)
  {
    if(data ==0x100)//发送的数据为255   重新从0赋值
       data =0x00;

    Bitcnt =0xa;//位计数

    Txdata =data;

    Txdata |=0x100;
    Txdata =Txdata <<1;

    data++;
  }
else
   {
       if (Txdata &0x01)
               CCTL0 &=~OUTMOD_TOGGLE;//输出1
       else
              CCTL0 |=OUTMOD_TOGGLE;//输出0
      Txdata =Txdata >>1;// 次低位变成最低位
       Bitcnt --;//位计数减1
   }
}



/**********接收中断***********/
interrupt (TIMERA0_VECTOR)Timer_A0(void)

{
   CCR0 +=Bitime;//接收一位时间间隔

  if(CCTL0&CAP)//捕获到起始位
   {
       CCTL0 & =~CAP;  //由 捕获模式改为比较模式   接收数据
       CCTL0 +=Bitime_5;
   }
else
  {
     RXData =RXData >>1;//接收到的数据   右移一位

     if (CCTL0&SCCI)// 接收为1
             RXData |=0x10;

    Bitcnt --;//位计数减1

   if (Bitcnt ==0)//一个字节接收完成
     {
       Bitcnt =0x08;//位计数重新赋值

       CCTL0 |=CAP;//改为捕获模式

       Data [num++] =RXData ;//保存接收到的数据

       if (num==3)//接收到三个字节数据
          {
             num=0;
              CCTL0 & =~CCIE;

            }
     }

   }
}

相关帖子

沙发
NE5532| | 2012-3-1 20:58 | 只看该作者
我觉得你发流程图是不是更容易得到人家帮助,反正我不会为了你单独学一次430单片机。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

73

帖子

0

粉丝