c51单片机程序,89c51的延时程序算法求解释,。。。。。谢谢啦
voiddelay(unsignedintz){unsignedintx,y;for(x=z;x>0;x--)for(y=125;y>0;y--);}当z=50时候怎么算...
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
当z=50时候怎么算? 展开
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
当z=50时候怎么算? 展开
展开全部
C语言中,楼主使用了整型变量,减一次一,涉及到两个单元的计算。
耗时,不好计算。
采纳答案所说的《一次自减的时间也就是机器周期》,就是在瞎编。
参考一下:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/da0445fc7ad4380208244dcc.html
耗时,不好计算。
采纳答案所说的《一次自减的时间也就是机器周期》,就是在瞎编。
参考一下:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/da0445fc7ad4380208244dcc.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当单片机晶振为12MHz
一个for语句的时钟周期为2us
程序共分两层
第一层循环m:y*2=125*2=150
第二层循环n:z*(m+3)=50*153=7650
循环外:调用+返回+赋值=2+2+1=5
延时时间为7655us
一个for语句的时钟周期为2us
程序共分两层
第一层循环m:y*2=125*2=150
第二层循环n:z*(m+3)=50*153=7650
循环外:调用+返回+赋值=2+2+1=5
延时时间为7655us
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用的晶振是多少的,如果是12的那大约是1*50*125ms,不会太精确,用中断延时精确
追问
晶振是89c51里面的,还是外面的最小系统里面的晶振啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
delay为延时函数名称 无符号变量Z为延时的长短 z越大延时越长 反之越短 第二个for循环为自减125次的固定延时 而第一个for根据z的数值决定循环 几次125自减
当z=50相当于 50*125 = 62500次自减
当z=50相当于 50*125 = 62500次自减
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当Z=50的时候 就是单片机内部运行50*125个周期的时间,如果你用的是12MHz的外部晶振的话就是 50*125us的时间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询