单片机不同晶振怎么计算延迟时间?
单片机C语言中,怎么通过循环次数计算延迟函数的延迟时间?
首先你要知道一个指令周期是几秒 算法是1/(晶振频率除以12) 然后你要知道循环究竟执行了几个指令周期
你可以用keil里在线反汇编命令看看你的循环编译成机器语言后到底是几个指令周期 这样就知道了延迟时间 当然你取近似值也可以的 比如 for(i=0,i<255,i++){x=2} 这里x=2是一个指令周期 而执行了255次 假如你的晶振是12MHZ的 则你执行一个指令周期是1us 255次是0.255ms
22.1184 一个指令 0.5us 1/(23/12)
需要51单片机核心板的朋友,淘宝扫码购买
干嘛管12m是多少,就算出23M一个周期是多少,再用总时间除出来次数呗,就for循环那么多次
9:31:16 【吐槽】小波Linux 2015/12/11 9:31:16
12个机器周期
【吐槽】小波Linux 2015/12/11 9:31:30
一个周期 0.5us
【吐槽】小波Linux 2015/12/11 9:31:50
1 / ( 23/12)=0.5us
【吐槽】小波Linux 2015/12/11 9:32:15
6us / 0.5us = 次数? 9:34:00 【潜水】青 2015/12/11 9:34:00
是的 【潜水】青 2015/12/11 9:34:17
还要除二 【潜水】青 2015/12/11 9:34:34
for循环里面每次执行两天指令
【吐槽】小波Linux 2015/12/11 9:35:40
一个for语句 for(i=0;i<12;i++); 6us
【吐槽】小波Linux 2015/12/11 9:35:46
23mhz
9:48:21 【潜水】青 2015/12/11 9:48:21
for(i=0;i<6;i++); 【潜水】青 2015/12/11 9:49:00
我长时间没算忘了 9:49:11 【潜水】青 2015/12/11 9:49:11
给你查呢一下 【潜水】青 2015/12/11 9:51:01
for(i=0;i<6;i++); 这个执行下来应该就是6.24us 【潜水】青 2015/12/11 9:51:10
![]()
12个机器周期
【吐槽】小波Linux 2015/12/11 9:31:30
一个周期 0.5us
【吐槽】小波Linux 2015/12/11 9:31:50
1 / ( 23/12)=0.5us
【吐槽】小波Linux 2015/12/11 9:32:15
6us / 0.5us = 次数? 9:34:00 【潜水】青 2015/12/11 9:34:00
是的 【潜水】青 2015/12/11 9:34:17
还要除二 【潜水】青 2015/12/11 9:34:34
for循环里面每次执行两天指令
【吐槽】小波Linux 2015/12/11 9:35:40
一个for语句 for(i=0;i<12;i++); 6us
【吐槽】小波Linux 2015/12/11 9:35:46
23mhz
9:48:21 【潜水】青 2015/12/11 9:48:21
for(i=0;i<6;i++); 【潜水】青 2015/12/11 9:49:00
我长时间没算忘了 9:49:11 【潜水】青 2015/12/11 9:49:11
给你查呢一下 【潜水】青 2015/12/11 9:51:01
for(i=0;i<6;i++); 这个执行下来应该就是6.24us 【潜水】青 2015/12/11 9:51:10

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探