调用延时程序的疑问

[复制链接]
2884|10
 楼主| ksslx 发表于 2007-10-24 15:04 | 显示全部楼层 |阅读模式
******************************************************
void delay(uchar time)
{
    uchar i;
    uint j;
    for(i=0;i<time;i++)
                for(j=0;j<0x900;j++);
}//调用这个延时程序,其结果:运行正常
******************************************************

void delay(unsigned char time)
{
  unsigned char ii,jj;
  for(ii=0;ii<time;ii++)
    {
      for(jj=0;jj<250;jj++)
      _nop_();            
    }    
}//调用这个延时程序,其结果:运行不正常
*******************************************************

各位高手能解释一下,是为什么吗?(我用的芯片是C8051F060)
mamalihui 发表于 2007-10-24 16:02 | 显示全部楼层

怎么个不正常法

 楼主| ksslx 发表于 2007-10-24 16:27 | 显示全部楼层

回楼上

第一个就不能用   第二个可以用
ayb_ice 发表于 2007-10-24 16:34 | 显示全部楼层

程序本身没有问题。。。

 楼主| ksslx 发表于 2007-10-24 17:21 | 显示全部楼层

ayb_ice

程序没问题,那会是哪的问题啊?我用的时候就是第二个就是不能用的!
eraychen 发表于 2007-10-24 19:39 | 显示全部楼层

编译不通过?

wangdafeng 发表于 2007-10-24 22:45 | 显示全部楼层

_nop_();

 _nop_()要加一个头文件  忘记叫什么了
ayb_ice 发表于 2007-10-25 08:05 | 显示全部楼层

随便说说

LZ这种提问和废话差不多。。。
运行不正常的定义可多了,什么不正常,哪里不正常。。。
比如说这两个函数延时间都不一样,产生不一样的结果那是正常情况。。。
 楼主| ksslx 发表于 2007-10-25 10:15 | 显示全部楼层

ayb_ice

你说的我好惭愧啊!我是发光LED亮灭调用的这个延时程序,结果就是第一个可以用的(发光管闪),第二个不行(发光管不闪)。
另外回7楼的,我的程序已经调用了那个头文件了...
sanwa_chen 发表于 2007-10-25 11:51 | 显示全部楼层

我晕

你第二个延时时间如果很短当然看不到LED闪了
两个程序的延时时间差那么老多,结果自然不一样!!!
 楼主| ksslx 发表于 2007-10-25 12:56 | 显示全部楼层

哦 明白了

谢谢楼上的阿   豁然开朗阿!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

105

帖子

0

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