搜索
bottom↓
回复: 9

高手帮忙改下C程序

[复制链接]

出0入0汤圆

发表于 2013-5-4 09:45:05 | 显示全部楼层 |阅读模式
void Report(void)
{  
  int i;
  for(i=0;i<15;i++)
  {
    if(boot[i].Result==1)                                   
    {  
      UART0_PutChar(i+1);
      UART0_PutChar(boot[i].value/256);
      UART0_PutChar(boot[i].value%256);
      break;
    }

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

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

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-5-4 09:46:31 | 显示全部楼层
我 靠, 这个问题以前不是有人提过,我也回答过么?

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

出0入0汤圆

发表于 2013-5-4 09:47:51 | 显示全部楼层
http://www.amobbs.com/forum.php? ... p;page=1#pid6444893

出0入0汤圆

 楼主| 发表于 2013-5-4 10:04:10 | 显示全部楼层
Louis_Bright 发表于 2013-5-4 09:46
我 靠, 这个问题以前不是有人提过,我也回答过么?

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

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

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


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[0].Result==0 && boot[1].Result ==0 && boot[2].Result==0 && boot[3].Result==0 &&
       boot[4].Result ==0 && boot[5].Result ==0 && boot[6].Result==0 && boot[7].Result==0 &&
       boot[8].Result==0 &&boot[9].Result==0 && boot[10].Result==0 && boot[11].Result==0 &&
       boot[12].Result==0 && boot[13].Result==0 && boot[14].Result==0)
    {
      UART0_PutChar(0x00);
      UART0_PutChar(0xFE);
      UART0_PutChar(0xFF);
    }
}

出0入0汤圆

发表于 2013-5-4 11:10:32 | 显示全部楼层
void Report(void)
{
    int i;

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

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

出0入0汤圆

 楼主| 发表于 2013-5-4 11:18:54 | 显示全部楼层
Louis_Bright 发表于 2013-5-4 11:10
void Report(void)
{
    int i;

哥们 ,谢谢!

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

出0入0汤圆

发表于 2013-5-4 11:22:34 | 显示全部楼层
bootgames 发表于 2013-5-4 11:18
哥们 ,谢谢!

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

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

出0入0汤圆

 楼主| 发表于 2013-5-4 11:29:49 | 显示全部楼层
本帖最后由 bootgames 于 2013-5-4 11:34 编辑
Louis_Bright 发表于 2013-5-4 11:22
你自己看看你的 boot.Result 分别是什么?!


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

出0入0汤圆

发表于 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);
    }
}

出0入0汤圆

 楼主| 发表于 2013-5-4 13:06:05 | 显示全部楼层
biansf2001 发表于 2013-5-4 11:55
void Report(void)
{  
  int i;

    厉害!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 00:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表