找回密码
 立即注册

QQ登录

只需一步,快速开始

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

52单片机,12MH晶振,延时函数1ms为什么要用j<120,这里的120是怎么算出来的

[复制链接]
跳转到指定楼层
楼主
求详解

JX(H[DHLL1V8(XAVENI1@4F.png (13.72 KB, 下载次数: 24)

延时函数

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

使用道具 举报

沙发
ID:275826 发表于 2019-10-18 15:42 | 只看该作者
大约为1ms,要精确的话用定时器
回复

使用道具 举报

板凳
ID:370779 发表于 2019-10-18 16:38 | 只看该作者
这是不精确的延时函数 120是一个经验值 可以通过仿真看到时间大约在1ms
回复

使用道具 举报

地板
ID:606986 发表于 2019-10-18 16:46 | 只看该作者
12M,对应1/12us。在这用个12的整倍数  好计算。你也可以用别的
回复

使用道具 举报

5#
ID:246215 发表于 2019-10-18 17:23 | 只看该作者
因为单片机的时钟是晶振分频来的,你可以理解为每个时钟周期循环了一次,大致就是延时了一个时钟周期,所以自己去查查单片机时钟频率
回复

使用道具 举报

6#
ID:235200 发表于 2019-10-18 19:44 | 只看该作者
这不是算出来的,是通过仿真调试出来的,把延时程序模拟单片机运行环境去运行,发现123或124最接近1ms时间
回复

使用道具 举报

7#
ID:401564 发表于 2019-10-19 08:23 | 只看该作者
单片机是不能识别C语言的
C语言要经过编译器编译(也可以是说转换)成汇编,然后烧录到单片机的,大概就是这么一个过程吧
不同的编译器,编译的效率是不同的,所以,你这C代码也不确定延时的时间是多少
这个取值最初是由前辈们从C代码编译成的汇编代码中计算出来的,如果你会汇编,你也可以从编译的汇编代码中慢慢的计算
当然,这个已经是很成熟的东西了,在STC的烧录界面有直接的延时代码,每种单片机的延时的值都是不一样的
回复

使用道具 举报

8#
ID:626591 发表于 2019-10-19 12:55 | 只看该作者
这时实验得到的数值,对延时要求不高的情况下可以这么用,要精准可以使用T0或者T1进行延时
回复

使用道具 举报

9#
ID:626655 发表于 2019-10-19 18:09 | 只看该作者
不确定延时
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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