C语言delay函数延时计算

voiddaly(){unsignedcharj;for(j=60;j;j--);}AT89C51的单片机,晶振是11.0592MHZ的,算延时,要有计算步骤,谢谢... void daly()
{unsigned char j;
for(j=60;j;j--);
}
AT89C51的单片机,晶振是11.0592MHZ的,算延时,要有计算步骤,谢谢
展开
 我来答
小夏聊生活
高能答主

2019-12-11 · 专注于分享生活知识,热爱生活
小夏聊生活
采纳数:448 获赞数:114613

向TA提问 私信TA
展开全部

C语言delay函数延时计算源代码如下:

#include "stdlib.h"

void delay()

{

time_t start,end;

start=time(null);

unchar i;

while(z--)

{

for(i=0;i<121;i++);

}

end=time(null);

printf("%f",difftime(end,start));

}

扩展资料

1、对于要求精确延时时间更长,这时就要采用循环嵌套的方法来实现,因此,循环嵌套的方法常用于达到ms级的延时。

对于循环语句同样可以采用for,do…while,while结构来完成,每个循环体内的变量仍然采用无符号字符变量。

百度网友68f4bc33b
推荐于2018-03-19
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
你 的程序有问题额。
void daly()
{unsigned char j;
for(j=60;j〈=0;j--)

}

你可去看看单片机的时钟信号产生电路中的有关

节拍:指振荡脉冲周期
状态:振荡脉冲尽过2分频后,就是单片机时钟信号的周期,定义为状态,一个状态等于两个节拍
机器周期:单片机采用定时控制方式,有固定的机器周期,一个机器周期等于6个状态,

机器周期=6个状态=12个节拍

当振荡脉冲频率为12Mhz时,一个机器周期为1微秒,振荡脉冲频率为6Mhz,一个机器周期为2微秒

数据类型中unsigned char为无符号字符型值域是在0~~~255范围里
在上面我设的是60次的循环,且晶振是约在12mhz,那么可以看出我们的算值是用60x1微秒,即可得到我们所要的延时值啊
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
生活营口
2010-04-23 · TA获得超过187个赞
知道小有建树答主
回答量:327
采纳率:0%
帮助的人:266万
展开全部
我一般不用计算,想要多长的延时就用工具软件生成一个。如果是有程序不知道多长就用仿真软件模拟下。不行就看一下生成的汇编代码,根据晶振换算的指令周期算一个。指令数*指令周期就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dbe2393
2010-04-25
知道答主
回答量:7
采纳率:0%
帮助的人:1.2万
展开全部
用keil软件调试一个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
德绣梓7b
2010-04-22
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
这个问题,我最近也是相当的困惑啊,希望会的朋友帮忙解答一下啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式