找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1221|回复: 6
打印 上一主题 下一主题
收起左侧

求单片机延时计算具体过程

[复制链接]
跳转到指定楼层
楼主
void delay(uchar t )
{
uchar i, j;
for(i = 0;i < t;i++)
for(j = 0;j < 100;j++);
}
这个延时具体怎么计算呀。求计算过程。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2020-4-29 22:11 | 只看该作者
第一步:下载一个STC官方下载器
第二步:在下载器右边有代码例程
第三步:找到软件延时,自己输入时间,选好单片机,长成代码就可以了
这个没有绝对标准的计算过程的,如果是一定要知道,那就在KEIL运行仿真,然后看生成的汇编代码,自己计算,整个过程相当脱那什么放屁一样,完全没有必要
回复

使用道具 举报

板凳
ID:548551 发表于 2020-4-29 23:17 | 只看该作者
如果是你刚接触单片机 .对于delay延时函数. 了解了解就可以. 但是如果你以后想从事这一行.公司项目不允许使用延时函数, 项目不允许在哪里死等延时. 你想要定时可以开中断来定时, 这样定时准确.并且也有时间来运行其他的程序
回复

使用道具 举报

地板
ID:383215 发表于 2020-4-29 23:55 | 只看该作者
直截了当告诉你,根本算不出来,相同的C语言程序代码,在不同单片机的不同优化等级情况下,运行的时间都不相同,你连优化等级原理都搞不清楚的情况下,怎么可能算得准?就算可以算出来,结果与实际值相差很大,那还不如不算,你得到这段程序的汇编语言倒是可以算准,那算准了有什么意思?再说了,靠计算得知程序运行时间是效率最低的编程方式,我从来就不计算,而是靠测量,我编程序靠仿真器运行,示波器测量,我想知道某段程序的运行时间,只需要在这段程序前后置1和置0某个IO口,仿真器一运行,示波器一测量立马就知道,就是编一些精确的延时程序,也是修改变量用示波器测量来的最快,比如18B20的读写程序也是靠示波器测量编出来的,更精确的定时程序还有其它方法,没有仿真器和示波器,我宁愿不编程序,因为编程效率太太太太太太太太低下了,示波器也不用多高档,两、三百元20M以内的虚拟示波器编点一般的程序足够用了。经常看见这个论坛发帖就是一大段程序,自己搞不定请别人分析,自己有仿真器和示波器,几下子就能搞定。

我现在画电路已经养成习惯,必须留一个IO口做一个测试桩,顺便驱动一个LED,这个LED可以用来观察我程序的运行状态,测试桩可以接示波器看波形,这才是效率最高的编程方式。

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:703227 发表于 2020-4-30 07:53 | 只看该作者
不是直接用STC下载器,输入想要多少延时,就可以得到程序吗
回复

使用道具 举报

6#
ID:597048 发表于 2020-4-30 08:40 | 只看该作者
这种延时计算不出准确时间  只能计算一个大概  一个t的时间单片机延时100次  根据单片机的运行速度  就可以估算出一个t耗时多少  一般计算出来的都比较小  这种延时就是用在不需要精确延时的地方  只要误差10倍以内都可以接受
回复

使用道具 举报

7#
ID:236035 发表于 2020-4-30 11:11 | 只看该作者
延时还是用定时器吧,效率高,时间准。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表