打印

延迟时间求解

[复制链接]
1686|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sonjs|  楼主 | 2012-7-22 14:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在一个让八只LED依次闪烁的小程序上卡着了。附上代码
                                                                                                                                                                                                                                                                #include<reg51.h> 
void delay()
{
        unsigned char i,j;
                for(i=0;i<250;i++)
                for(j=0;j<250;j++);
}
main()
{        while(1)
        { P3=0xfe;
                delay();
          P3=0xfd;
                delay();
          P3=0xfb;
                delay();
          P3=0xf7;
                delay();
          P3=0xef;
                delay();
            P3=0xdf;
                delay();
             P3=0xbf;
                delay();
      P3=0x7f;
                  delay();
           }
}
这样的程序是完整的,问题是如果把i与j的值改为350,得到的结果是只有一个LED亮。我怀疑是不是这样一来把延迟时间调高了?但如果按照延迟时间计算方法:350*350/1200 0000=10.2ms按说也可以观察的到闪烁呀,求解~

相关帖子

沙发
lstcspring| | 2012-7-22 14:36 | 只看该作者
char型,改到350,就溢出了

使用特权

评论回复
板凳
figo20042005| | 2012-7-22 16:22 | 只看该作者
unsigned char 能到350/?改成unsigned int

使用特权

评论回复
地板
sonjs|  楼主 | 2012-7-22 16:37 | 只看该作者
谢谢楼上各位,问题解决了:lol

使用特权

评论回复
5
hhhhhhgggg| | 2013-1-10 19:33 | 只看该作者
unsigned char型超过255就溢出。

使用特权

评论回复
评论
ccmc 2013-1-11 11:32 回复TA
350是常量,怎么会溢出呢? i,j是char 只能到255,达不到350,永远循环。 3楼正解。 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

44

帖子

0

粉丝