bootgames 发表于 2013-5-4 09:45:05

高手帮忙改下C程序

void Report(void)
{
int i;
for(i=0;i<15;i++)
{
    if(boot.Result==1)                                 
    {
      UART0_PutChar(i+1);
      UART0_PutChar(boot.value/256);
      UART0_PutChar(boot.value%256);
      break;
    }

    if(i == 14)
    {
      UART0_PutChar(0x00);
      UART0_PutChar(0xFE);
      UART0_PutChar(0xFF);
    }
}

}

上述程序的功能是输出第一个boot.Result==1对应的值,其它不输出。如果boot.Result全部为0 则输出 0x00 0xFE 0xFF。

想改为--只要boot.Result==1的就输出出来。 如果boot.Result全部为0 则输出 0x00 0xFE 0xFF。

Louis_Bright 发表于 2013-5-4 09:46:31

我 靠, 这个问题以前不是有人提过,我也回答过么?

难道这是哪个垃圾程序扩散了?

Louis_Bright 发表于 2013-5-4 09:47:51

http://www.amobbs.com/forum.php?mod=viewthread&tid=5518705&page=1#pid6444893

bootgames 发表于 2013-5-4 10:04:10

Louis_Bright 发表于 2013-5-4 09:46 static/image/common/back.gif
我 靠, 这个问题以前不是有人提过,我也回答过么?

难道这是哪个垃圾程序扩散了? ...

你改的确实很简洁, 我看到了,也用上了,不过我这不一样。

我按新要求改了下,功能实现是没问题,但不够简洁啊。


void Report(void)
{   
int i;
for(i=0;i<15;i++)
{
    if(boot.Result==1)                                 
    {
      UART0_PutChar(i+1);
      UART0_PutChar(boot.value/256);
      UART0_PutChar(boot.value%256);
    }

}
    if(boot.Result==0 && boot.Result ==0 && boot.Result==0 && boot.Result==0 &&
       boot.Result ==0 && boot.Result ==0 && boot.Result==0 && boot.Result==0 &&
       boot.Result==0 &&boot.Result==0 && boot.Result==0 && boot.Result==0 &&
       boot.Result==0 && boot.Result==0 && boot.Result==0)
    {
      UART0_PutChar(0x00);
      UART0_PutChar(0xFE);
      UART0_PutChar(0xFF);
    }
}

Louis_Bright 发表于 2013-5-4 11:10:32

void Report(void)
{
    int i;

    for(i = 0; i < 15; i++)
    {
      if(boot.Result == 1)
      {
            break;
      }
    }

    if (i < 15)
    {
      UART0_PutChar(i + 1);
      UART0_PutChar((boot.value >> 8) & 0xFF);
      UART0_PutChar((boot.value >> 0) & 0xFF);
    }
    else
    {
      UART0_PutChar(0x00);
      UART0_PutChar(0xFE);
      UART0_PutChar(0xFF);
    }
}

bootgames 发表于 2013-5-4 11:18:54

Louis_Bright 发表于 2013-5-4 11:10 static/image/common/back.gif
void Report(void)
{
    int i;


哥们 ,谢谢!

我试了一下输出当前第一个 其它的 ==1 不能输出

Louis_Bright 发表于 2013-5-4 11:22:34

bootgames 发表于 2013-5-4 11:18 static/image/common/back.gif
哥们 ,谢谢!

我试了一下输出当前第一个 其它的 ==1 不能输出

你自己看看你的 boot.Result 分别是什么?!

bootgames 发表于 2013-5-4 11:29:49

本帖最后由 bootgames 于 2013-5-4 11:34 编辑

Louis_Bright 发表于 2013-5-4 11:22 static/image/common/back.gif
你自己看看你的 boot.Result 分别是什么?!

boot.result是状态位 , 0 或者 1 , 有的情况是全为0, 有的情况是 1 和 0 都有。如果状态位是1,就输出==1的那些位对应的值 ,如果都是0,就输出另组数据。

biansf2001 发表于 2013-5-4 11:55:25

本帖最后由 biansf2001 于 2013-5-4 11:56 编辑

void Report(void)
{
int i;
int j=0;
for(i=0;i<15;i++)
{
    if(boot.Result==1)                                 
    {
      UART0_PutChar(i+1);
      UART0_PutChar(boot.value/256);
      UART0_PutChar(boot.value%256);
      j++;
    }
}

    if(j == 0)
    {
      UART0_PutChar(0x00);
      UART0_PutChar(0xFE);
      UART0_PutChar(0xFF);
    }
}

bootgames 发表于 2013-5-4 13:06:05

biansf2001 发表于 2013-5-4 11:55 static/image/common/back.gif
void Report(void)
{
int i;


    厉害!
页: [1]
查看完整版本: 高手帮忙改下C程序