C语言单片机中延时函数的问题

voiddelay(ucharz){ucharx,y;for(x=1000;x>1;x--)for(y=z;y>1;y--);}这是我在视屏教程中看见的延时函数,不懂原理... void delay(uchar z)
{
uchar x,y;
for(x=1000;x>1;x--)
for(y=z;y>1;y--);
}
这是我在视屏教程中看见的延时函数,不懂原理,怎么知道延时多久 比如说delay(10),
delay(5)是延时多久,现在学到一些要用时序的程序,不知道怎么能写出精确地延时函数,求高人解答
展开
 我来答
敬一珈蓝u
2010-11-10 · TA获得超过436个赞
知道答主
回答量:51
采纳率:0%
帮助的人:68.4万
展开全部
如果采用12Mhz的晶振,一条语句运行一次约为1us,你这个函数延时应该是Z ms,delay(10)就是10 ms,不是很精确。
如果要写精确的延时函数,就要采用单片机中的定时器,很多单片机的书中都有讲到,可以去查相关资料。
cuittao
2010-11-10
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
您好!延时时间的长短跟不同的CPU,及不同的CPU工作、时钟频率是直接相关的。这里说的CPU,主要是对于单片机或ARM等微型处理器来说的,对于商业电脑CPU,那计算方式就会完全不一样了。
就delay(10)和delay(5)来说,前者延时时间不一定就是后者的2倍,可能是2倍多一点或少一点。。这个跟CPU是直接相关的。
要写出精确的延时函数,需要在非常清楚硬件的情况,用汇编语言编写。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式