延迟时间求解

[复制链接]
2294|4
 楼主| sonjs 发表于 2012-7-22 14:01 | 显示全部楼层 |阅读模式
我在一个让八只LED依次闪烁的小程序上卡着了。附上代码
  1.                                                                                                                                                                                                                                                                 #include<reg51.h>
  2. void delay()
  3. {
  4.         unsigned char i,j;
  5.                 for(i=0;i<250;i++)
  6.                 for(j=0;j<250;j++);
  7. }
  8. main()
  9. {        while(1)
  10.         { P3=0xfe;
  11.                 delay();
  12.           P3=0xfd;
  13.                 delay();
  14.           P3=0xfb;
  15.                 delay();
  16.           P3=0xf7;
  17.                 delay();
  18.           P3=0xef;
  19.                 delay();
  20.             P3=0xdf;
  21.                 delay();
  22.              P3=0xbf;
  23.                 delay();
  24.       P3=0x7f;
  25.                   delay();
  26.            }
  27. }
这样的程序是完整的,问题是如果把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
hhhhhhgggg 发表于 2013-1-10 19:33 | 显示全部楼层
unsigned char型超过255就溢出。

评论

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

本版积分规则

0

主题

44

帖子

0

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