单片机C语言编程问题,高手进!拜谢!

写一个控制步进电机的控制程序,其中延时程序是这样的代码:voiddelay(void)//误差-0.000000000227us{unsignedchara,b,c;fo... 写一个控制步进电机的控制程序,其中延时程序是这样的代码:
void delay(void) //误差 -0.000000000227us
{
unsigned char a,b,c;
for(c=13;c>0;c--)
for(b=247;b>0;b--)
for(a=142;a>0;a--);
_nop_; //if Keil,require use intrins.h
}

但是编译了以后出现了这样的警告,如图所示:

即:
STEPPING MOTOR C.C(15): warning C275: expression with possibly no effect
这个怎么就可能无效了呢?
求高手指点迷津!拜谢!
展开
 我来答
娴先变减再度打m
2014-05-29 · 超过10用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:27.9万
展开全部
首先你的编程习惯很不好,for嵌套,每一层都要用{}括起来,如果我没看错的话,你把每一层都加上{}就没问题了。
其次,一个延时函数怎么能写的这么低效呢?
更多追问追答
追问
我是通过一个软件自动生成的延时函数,不是自己写的。
刚刚试了试for嵌套加上括号,我都加了的,还是出现同样的警告。
另外,它低效的原因估计是为了控制误差,就像那个注释里写的一样,误差很小(到底怎么样我也不知道,这个延时函数我整个就是复制粘贴过来的)。
大神还有其他改法吗?
追答
for(a=142;a>0;a--);          /*这里的分号去掉了吗?*/
_nop_; //if Keil,require use intrins.h
guang308
2014-05-29 · 超过33用户采纳过TA的回答
知道答主
回答量:178
采纳率:0%
帮助的人:87.9万
展开全部
你把_nop_只写在一个for 下面 只执行 了 一个for循环 延迟
更多追问追答
追问
具体要怎么改呢?求指教!
追答
for(c=13;c>0;c--){
for(b=247;b>0;b--){
for(a=142;a>0;a--){
_nop_;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gdx2013
2014-05-29 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:129
采纳率:0%
帮助的人:130万
展开全部
unsigned char a,b,c;为什么不定义int型,而是char型呢?
追问
这个。。我也不太清楚,我是用的一款软件自动生成延时函数的。
具体的刚刚用Keil调试了一下,发现本来是延时1s的,改成int了以后,延时变成了3s多。我估计是int和char在转换成的汇编语言时会变得不一样吧,总之改了就乱了。用char刚刚好。
话说,这char和出现的警告有关系吗?
追答
没关系,能看到的程序,只有 for(a=142;a>0;a--);中多个分号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式