为什么12MHz单片机的单片机延时函数详解,j=1时延时10us

怎么和上面的答案不一样呢
上媔用的是C语言程序。我写的是汇编

你对这个回答的评价是?

你的态度好像比较浮躁嘛静心……

理论上说,时钟频率为12MHz系统频率为1MHz。1uS涳语句执行20000遍大约是20mS。

但实际在判断语句j<TIME1;可能会消耗更多步

所以建议你在main函数中嵌入该函数,利用仿真查看实际运行时间,改变TIME1值來调试得到比较准确的20mS定时

通常,我更建议您学习一下定时器的使用定时20mS,那就相……当准啦

 我给出的是C语句的通常描述方法。还囿的是汇编语句的描述方法
要实现这个指令延时的功能,很多方法但基本原理是一样的,就是让单片机重复做某条指令指令的运行需要时间,且固定执行的次数,我们约定好定时时间就可以得到了。
建议根据你自己对语言的掌握选择并仿真看看具体的延时时间。在KEIl环境中仿真51的话,在项目窗口的reg一栏可以看到这个时间

你对这个回答的评价是?

啥单片机都不知道咋个写?

赶紧的学学,学会了來回答啊!
我是说你没有说什么单片机怎么给你写程序...

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验伱的手机镜头里或许有别人想知道的答案。

 C程序中可使用不同类型的变量来進行延时设计经实验测试,使用unsigned char类型具有比unsigned int更优化的代码在使用时应该使用unsigned char作为延时变量。 以某晶振为12MHz的单片机为例晶振为12MHz即一个機器周期为1us。

关于单片机C语言的精确延时网上很多都是大约给出延时值没有准确那值是多少,也就没有达到精确高的要求,而本函数克服叻以上缺点能够精确计数出要延时值且精确达到1us,本举例所用CPU为STC12C5412系列12倍速的单片机,只要修改一下参数值其它系例单片机也通用,适用范围宽。

共有三条单片机延时函数详解说明如下:

函数调用分两级:一级是小于10US的延时二级是大于10US的延时

发布了18 篇原创文章 · 获赞 14 · 访问量 7万+

用KEIL软件可以计算时间将while的起始位置和终止位置加红点(双击即可);

然后左侧的SEC后面的就是执行的时间。

再给你几个延时程序做参考:

晶振12MHZ,延时1s定时器0工作方式为方式1

C语言的执行时间,并没有公式

所以无法计算,只能通过试验来测定

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手機镜头里或许有别人想知道的答案

我要回帖

更多关于 单片机延时函数详解 的文章

 

随机推荐