求助:单片机C语言中延时程序怎样计算?

例如;voiddelay(){unsignedinti,j;for(i=0;i<255;i++)for(j=0;j<255;j++);}一般的延时程序怎么计算?比如想延时... 例如;void delay()
{
unsigned int i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
一般的延时程序怎么计算?比如想延时1S、500ms等
展开
 我来答
Cindere鞡
推荐于2018-02-27 · TA获得超过7251个赞
知道大有可为答主
回答量:1148
采纳率:84%
帮助的人:501万
展开全部
你好:
如果你想直接知道答案,那么我告诉你,12MHz晶振:
void delayms(unsigned int t)
{
unsigned int i,j;

for(i=t;i>0;i--)

for(j=123;j>0;j--);

}
能精确到1ms。
如果是11.0592MHz晶振,只需把上面的“j=123”改为“j=114”,都是调试过的,没问题。
然后你要想知道是怎么调试的,很简单,打开uv2编程软件,在最上边的工具栏里边有个“Debug”,点击后出现下拉菜单,选择第一个“start/stop Debug Session”,然后在最右边有一个Watch栏,有两个项目,一个是“Register”,一个是“value”,然后在“Register”栏下边的“Sys”里边有个“sec”,你只要单击“Step over”运行程序并观察“sec”的值就能调试出你程序的执行时间了。
注意,一定要先选择晶振频率,不然会默认24MHz。
希望我的回答能帮助到你。
yajuntiantian
2013-07-25 · TA获得超过483个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:151万
展开全部
一般来说!这个程序的延时多少要看你的时钟芯片的大小!
一般的如果你用的是12M的晶振的话!
void Delay_ms(unsigned int nms) //ms延时精确的到ms
{
unsigned int i,j;
for(i=nms;i>0;i--)
for(j=122;j>0;j--);
}
这个是我调试过的!能精确到1ms的!
如果是11.0592M的话!
void Delay_ms(unsigned int nms) //ms延时精确的到ms
{
unsigned int i,j;
for(i=nms;i>0;i--)
for(j=110;j>0;j--);
}
如果是其他的,你就需要自己利用keil自己的仿真进行测试了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2013-07-25 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
软件的延时时间,取决于晶振频率。

C 语言的执行时间,并没有计算公式。
只能实验,观察结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友29034cd
2013-07-26
知道答主
回答量:13
采纳率:0%
帮助的人:4.1万
展开全部
软件调试出来的时间 也就是延时函数调用到调用结束所用的时间 通过看汇编指令计算得出 汇编指令又和机器周期挂钩 机器周期是通过晶振频率计算出的 晶振频率是人为选择的 看你自己
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喝青哦k
2017-09-25 · TA获得超过344个赞
知道答主
回答量:671
采纳率:0%
帮助的人:67.3万
展开全部
什么时候需要 .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式