打印

MSP430串口通信问题求救

[复制链接]
2168|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1906460250|  楼主 | 2012-7-17 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚开始学430,遇到问题了。下面两个程序最终理论结果应该没区别吧!为什实际差别这么大?
程序一:
#include "msp430x14x.h"
#include "delay.h"
#define uchar unsigned char
#define uint  unsigned int
uchar const trdata[]={'A','B','C','D','E','F','G','H','I','J','K','L',0x0d,0x0a};
uchar i;
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P3SEL|=0X30;
  ME1|=UTXE0+URXE0;
  UCTL0|=CHAR;
  UTCTL0|=SSEL0;
  UBR10=0X00;
  UBR00=0X03;
  UMCTL0=0X4a;//设置波特率为9600
  UCTL0&=~SWRST;
  IE1|=UTXIE0;
  while(1)
  {
   
    for(i=0;i<14;i++)
    {
      TXBUF0=trdata[i];
      while(!(IFG1&UTXIFG0));
      
    }
   
   //_BIS_SR(LPM3_bits+GIE);
  }
}
#pragma vector=UART0TX_VECTOR
__interrupt void usart0_rx(void)
{
  _BIC_SR_IRQ(LPM3_bits);
}      //结果是自动循环发送。


程序二:
#include "msp430x14x.h"
#include "delay.h"
#define uchar unsigned char
#define uint  unsigned int
uchar const trdata[]={'Z','h','a','n','g','H','U','a','q','i','n','g',0x0d,0x0a,0x00};
uchar i;
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P3SEL|=0X30;
  ME1|=UTXE0+URXE0;
  UCTL0|=CHAR;
  UTCTL0|=SSEL0;
  UBR10=0X00;
  UBR00=0X03;
  UMCTL0=0X4a;//设置波特率为9600
  UCTL0&=~SWRST;
  IE1|=UTXIE0;
  while(1)
  {
   
    while(trdata[i]!=0x00)
    {
      TXBUF0=trdata[i];
      while(!(IFG1&UTXIFG0));
      //IFG1&=~UTXIFG0;
      i++;   
    }
   
   // _BIS_SR(LPM3_bits+GIE);
  }
}
#pragma vector=UART0TX_VECTOR
__interrupt void usart0_rx(void)
{
  _BIC_SR_IRQ(LPM3_bits);
}                 //结果是每按一次复位键,完整的发送一次。

求高手解释啊!!!!!

相关帖子

沙发
figo20042005| | 2012-7-17 17:12 | 只看该作者
上面的I应该是局部变量,下面的应该是全局变量,下面的发完后要多I清0.

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
tianm + 2
板凳
figo20042005| | 2012-7-17 17:14 | 只看该作者
所以上下理论相差很大,结果相差很大

使用特权

评论回复
地板
1906460250|  楼主 | 2012-7-17 20:25 | 只看该作者
2# figo20042005
谢谢!在你的帮助下解决了。

使用特权

评论回复
5
捡漏王子| | 2012-7-17 21:48 | 只看该作者
本帖最后由 捡漏王子 于 2012-7-17 21:49 编辑
上面的I应该是局部变量,下面的应该是全局变量,下面的发完后要多I清0.
figo20042005 发表于 2012-7-17 17:12
正解,理论上就会相差很大,下面的一个i没有复位,所以当i>14,trdata=0x00的状态持续。就不会再发送了

使用特权

评论回复
6
tianm| | 2012-7-18 09:36 | 只看该作者
尽量少用全局变量

使用特权

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

本版积分规则

0

主题

3

帖子

0

粉丝