for循环问题

[复制链接]
1941|3
 楼主| jacymin 发表于 2012-5-31 15:02 | 显示全部楼层 |阅读模式
下面这段代码
MAX = 50;
  1. for(i=0; i<MAX; i++)
  2. {
  3. while(F_100ms==0); // F_100ms在定时中断100ms中置一
  4. F_100ms = 0;
  5. Clear(i-1); // 一个清除上一次设置的函数
  6. Set(i); // 本次设置
  7. }


这样做没有问题,但是最后又一次设置没有清除,

于是我这么改:

  1. for(i=0; i<MAX; i++)
  2. {
  3. Clear(i-1); // 一个清除上一次设置的函数
  4. Set(i); // 本次设置
  5. while(F_100ms==0); // F_100ms在定时中断100ms中置一
  6. F_100ms = 0;
  7. }
  8. Clear(MAX-1);

问题出来了,不知道为什么 当循环到 i==1时,就卡在 while(F_100ms==0);过不去了,我跟踪一下,定时器会响应 F_100ms已经为1了。
我在这么改:
  1. for(i=0; i<MAX; i++)
  2. {
  3. while(F_100ms==0); // F_100ms在定时中断100ms中置一
  4. F_100ms = 0;
  5. Clear(i-1); // 一个清除上一次设置的函数
  6. Set(i); // 本次设置
  7. }
  8. while(F_100ms==0); // F_100ms在定时中断100ms中置一
  9. F_100ms = 0;
  10. Clear(MAX-1);

还是有问题,程序停在了退出for循环后的 while(F_100ms==0); 同样的  定时器会响应 F_100ms已经为1了。
请问这是什么问题?
 楼主| jacymin 发表于 2012-5-31 18:29 | 显示全部楼层
晕,自己顶起,请高手指教
airwill 发表于 2012-6-1 19:18 | 显示全部楼层
F_100ms 有没有定义成 volatile 类型,恐怕会被编译器优化掉。
fq1110 发表于 2012-6-2 00:04 | 显示全部楼层
同意楼上
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

5

帖子

1

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