有关单片机c的加法为什么会比减法运算速度慢的小问题、
刚学了个非常简单的操作:AT89C52 的LED灯的闪烁、
然后,我用了这样的一个代码:
#include<reg52.h>
sbit D1=P1^0;
void main()
{
unsigned int i;
while(1)
{
for(i=0;i<50000;i++)
D1=0;
for(i=50000;i>0;i--)
D1=1;
}
}
结果发现灯亮的时间比灭的时间要长、一开始我以为是C中自增自减的实现问题、
于是我把i++和i--换成i=i+1和i=i-1后,结果还是这样。
想不明白,一般机器的运算不是以加法为基础的么,我以为应该是加法比减法速度快才对的、、、纠结中
求高手赐个解答~~~
[解决办法]
你写成
for(i=50000;i>0;i--)
D1=1;
for(i=0;i<50000;i++)
D1=0;
看看谁时间长,谁时间短啊
[解决办法]
是 i--,i>0处理的时间比i++, i<50000需要的时间短。
前者算i = i - 1的时候同时也就判断了原来i和1的关系,也就是现在i和0的关系
后者还要另外算一个i - 50000来判断i和50000的关系
[解决办法]
这样的话,以后是不是对于for之类的循环
如果可能,都是用i--的方式比较好了~~~~
谢谢
[解决办法]