应该没区别吧

[复制链接]
469|12
 楼主| jiajs 发表于 2017-2-26 20:52 | 显示全部楼层 |阅读模式
两个程序最终理论结果应该没区别吧
为什实际差别这么大?
程序一:
#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);
}                 //结果是每按一次复位键,完整的发送一次。
zhaoxqi 发表于 2017-2-26 20:53 | 显示全部楼层
上面的I应该是局部变量,下面的应该是全局变量
 楼主| jiajs 发表于 2017-2-26 20:54 | 显示全部楼层
然后呢
jlyuan 发表于 2017-2-26 20:55 | 显示全部楼层
下面的发完后要多I清0啊
lizye 发表于 2017-2-26 20:56 | 显示全部楼层
嗯,所以上下理论相差很大,结果相差很大
jiahy 发表于 2017-2-26 20:57 | 显示全部楼层
理论上就会相差很大,下面的一个i没有复位,所以当i>14,trdata=0x00的状态持续。就不会再发送了
jiaxw 发表于 2017-2-26 20:59 | 显示全部楼层

尽量少用全局变量
zhaoxqi 发表于 2017-2-26 21:01 | 显示全部楼层
jiaxw 发表于 2017-2-26 21:02 | 显示全部楼层
全局和局部有时会有差别
 楼主| jiajs 发表于 2017-2-26 21:04 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家,结贴了哈
Soraka 发表于 2017-3-9 20:47 | 显示全部楼层
变量搞混了?、
fentianyou 发表于 2017-3-11 21:52 | 显示全部楼层
有什么差别?
fentianyou 发表于 2017-3-11 21:54 | 显示全部楼层
你的变量是不是变为0了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

940

主题

11975

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部