51单片机运行指令时间

for(x=3;x>0;x--).......1for(y=8000;y>0;y--);..........2for(y=8000;y>0;y--)..........3... for(x=3;x>0;x--).......1
for(y=8000;y>0;y--);..........2

for(y=8000;y>0;y--)..........3
for(x=3;x>0;x--);...........4

以上两个for语句虽然在计算次数上都是24000次,但似乎是第二个for语句在"3"和"4"间跳动次数比第一个for语句多很多次,导致单片机运行这两个程序的时间不一样,从而延时不同,不知道我分析的对吗???有这种可能吗???
展开
 我来答
long765long
2012-10-14 · 超过19用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:53.3万
展开全部
感觉第二个会时间长一些,因为要延时要重新进第二个循环8000次,第一段程序只需进循环3次。其实你可以将8000这春茄个数值设圆森陵橘戚置的小一点然后看一下反汇编的语句。
祝好~
追问
还有这个

void delay(unsigned char z)
{
unsigned char x;
unsigned int y;
for(x=0;x<z;x++)
for(y=0;y<8000;y++);
}
void delay(unsigned char z)
{
unsigned char x;
unsigned long y;
for(x=0;x<z;x++)
for(y=0;y<8000;y++);
}
这两个延时为什么不一样?怎么不一样了?详细解释下,没分了,谢谢
追答
呵呵,这个比较简单了,一个int型,一个是long型,处理是不一样的,肯定第二段程序时间长,而且长不少。。
几个简单例子,同样在一个长度一样的小胡同里跑,你认为是自行车快呢还是大卡车快呢?
960310983
2012-10-14 · TA获得超过352个赞
知道小有建树答主
回答量:867
采纳率:0%
帮助的人:209万
展开全部
是的 下面的的确要多很多延时
追问
还有这个

void delay(unsigned char z)
{
unsigned char x;
unsigned int y;
for(x=0;x<z;x++)
for(y=0;y<8000;y++);
}
void delay(unsigned char z)
{
unsigned char x;
unsigned long y;
for(x=0;x<z;x++)
for(y=0;y<8000;y++);
}
这两个延时为什么不一样?怎么不一样了?详细解释下,没分了,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式