单片机不同晶振怎么计算延迟时间?

简介: 单片机C语言中,怎么通过循环次数计算延迟函数的延迟时间?   首先你要知道一个指令周期是几秒 算法是1/(晶振频率除以12) 然后你要知道循环究竟执行了几个指令周期 你可以用keil里在线反汇编命令看看你的循环编译成机器语言后到底是几个指令周期 这样就知道了延迟时间 当然你取近似值也可以的 比如...

单片机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)

 

 

 

干嘛管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
目录
相关文章
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【单片机】延迟程序&延迟子程序的设计(入门)
【单片机】延迟程序&延迟子程序的设计(入门)
用51单片机+11.0592的晶振,如何产生115200的波特率
原文地址http://homezzy.blog.hexun.com/29601793_d.html 以前自己也遇到过这种情况,模块115200波特率而且不能更改,如何用51产生115200波特率,最近朋友也可能遇到这个问题,,特转载一下原文博客大神的文章 今天解决了一个小问题(查书后才得到确切结论。
1108 0
|
3天前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
21 1
|
3天前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
22 1
|
3天前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
62 0
|
3天前
|
物联网
STC51单片机-控制LED闪亮的仿真-物联网应用系统设计
STC51单片机-控制LED闪亮的仿真-物联网应用系统设计
47 0
|
3天前
|
芯片
AT89S52单片机的最小应用系统
AT89S52单片机的最小应用系统
6 0