原创 到底怎么了??

2008-10-22 22:05 2326 11 13 分类: MCU/ 嵌入式

       最近一直有个问题困扰着我,一个让我很受伤的问题,最近调了两个程序,最后总是得不到应有的结果,反反复复检查了好几天都没有调出来,最近终于发现了问题所在,两个程序都是for循环出的错,但是这个问题让我想破头也不知道原因,为什么这样会错了呢?


问题一:


源程序见附件https://static.assets-stash.eet-china.com/album/old-resources/2008/10/22/dbd7dae8-4913-4dfa-9a47-c98da8156e11.rar,其中Ds1302.h中有一个函数如下:


void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数)
{
    unsigned char i;
    ACC = d;
   
for (i=8;i>0;i--)
    {
        DS1302_IO = ACC0;   
//   ACC0=ACC^0
        DS1302_CLK = 1;
        DS1302_CLK = 0;
        ACC = ACC >> 1;
    }
}


问题如下:


    如果for 循环是(i=8;i>0;i--)一切正常,仿真也没有问题,但是写成(i=0;i<8;i++)的话就仿真不出来了,如果是(i=1;i<9;i++)的话又能正常了,不知道有什么玄机,想破头也没有想出来,哪位高手指点一下迷津啊????


问题二:


这是一个18B20的初始化程序,函数功能是给18B20写一个字节,


void write_18b20(uchar dat)                                      


{
 uchar i,j;
 bit flag;
 for(i=8;i>0;i--)
 { 
  flag=dat&0x01;
  dat>>=1;
  if(flag)
  {
   TMDAT=0;
   j++;j++;
   TMDAT=1;
   for(j=8;j>0;j--);
  }
  else
  {
   TMDAT=0;
   for(j=8;j>0;j--);
   TMDAT=1;
   j++;j++; 
  }
 
 }
}


    红体的for循环,如果是for(j=8;j>0;j--)或者for(j=0;j<8;j++)时程序都会出现错误的结果,但是如果改为for(j=9;j>1;j--),程序就能正常了


 


我觉得这两个问题都是相同的问题,一定是我某个地方的知识没有掌握,由于身边没有人可以请教,所以恳请高手们帮我指出问题的所在,提携一下我这个后进青年,不胜感激!!

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1370329 2009-2-13 14:09

这种问题多数是 优化级别的问题

用户1140564 2008-10-23 17:16

应该是时序不够吧,你改成i=1;i<10;i++看看
相关推荐阅读
用户147553 2009-06-04 10:31
学之初———WinCE 6.0
最近在EDN的WinCE小组买到了一块开发板,忙里偷闲趁着端午开始了我的WinCE学习之旅。我一直在用Visual Studio 2005编写桌面程序,对Visual Studio2005还算比较熟悉...
用户147553 2009-04-27 16:46
技术人员发展方向及嵌入式学习【转】
    关于技术人员发展方向的问题大家讨论已经很多,现在谈谈我的想法对于技术人员可以选择以下几个方向一、继续做技术、做技术比较稳定,是一个撑不死,饿不着的行业,要想挣到比较多的钱比较困难。二、销售做销...
用户147553 2009-04-27 16:42
一位软件工程师的6年总结【转】
        “又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程...
用户147553 2009-04-06 11:41
阶段总结
        期待已久的清明假期还有半天就要结束了,尽管平时这三天也是没有课,但放假毕竟和周末的感觉不一样,至少没有什么压力,可以名正言顺的睡个懒觉,名正言顺的不来实验室。回到学校快两个月了,虽然这...
用户147553 2009-03-06 22:29
C#写的一个简单计算器程序
        刚开始学C#,现在还处于模仿的水平,这个计算器算是自己的第一个小作品吧。程序比较简单,基本没有用到C#的类和函数,大部分和C语言一样。https://static.assets-sta...
用户147553 2009-03-06 22:27
焊板失败
      前几天帮一女同学在电子园买了一套EDN助学的51开发板,昨天货到了,然后我就义不容辞的承担下帮她焊板子的任务,当然无偿的。因为之前我焊过一块,结果很成功,所以这次我有信心、有决心将美女交给...
EE直播间
更多
我要评论
2
11
关闭 站长推荐上一条 /3 下一条