打印

for循环问题

[复制链接]
1310|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jacymin|  楼主 | 2012-5-31 15:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面这段代码
MAX = 50;
for(i=0; i<MAX; i++)
{
while(F_100ms==0); // F_100ms在定时中断100ms中置一
F_100ms = 0;
Clear(i-1); // 一个清除上一次设置的函数
Set(i); // 本次设置
}


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

于是我这么改:

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

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

粉丝