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时候怎么算?
展开
 我来答
leebilly007
2011-05-04 · TA获得超过728个赞
知道小有建树答主
回答量:275
采纳率:0%
帮助的人:143万
展开全部
当z=50相当于 50*125 = 62500次自减
单片机晶振决定一次自减的时间也就是机器周期
12M的话一个机器周期是1us,那你这个程序就是延时62.5ms
6M的话一个机器周期是2us,那你这个程序就是延时125ms
做而论道
高能答主

2015-04-18 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
C语言中,楼主使用了整型变量,减一次一,涉及到两个单元的计算。
耗时,不好计算。

采纳答案所说的《一次自减的时间也就是机器周期》,就是在瞎编。

参考一下:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/da0445fc7ad4380208244dcc.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
赵明想2000
2013-03-26
知道答主
回答量:10
采纳率:0%
帮助的人:10.3万
展开全部
当单片机晶振为12MHz
一个for语句的时钟周期为2us
程序共分两层
第一层循环m:y*2=125*2=150
第二层循环n:z*(m+3)=50*153=7650
循环外:调用+返回+赋值=2+2+1=5
延时时间为7655us
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liwuditianxia
2011-04-24
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
你用的晶振是多少的,如果是12的那大约是1*50*125ms,不会太精确,用中断延时精确
追问
晶振是89c51里面的,还是外面的最小系统里面的晶振啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dinosaurbd
2011-04-25 · 超过26用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:0
展开全部
delay为延时函数名称 无符号变量Z为延时的长短 z越大延时越长 反之越短 第二个for循环为自减125次的固定延时 而第一个for根据z的数值决定循环 几次125自减
当z=50相当于 50*125 = 62500次自减
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cashy_
2011-04-25 · 超过25用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:51.6万
展开全部
当Z=50的时候 就是单片机内部运行50*125个周期的时间,如果你用的是12MHz的外部晶振的话就是 50*125us的时间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式