永发信息网

单片机C语言中怎么实现微秒级延时?

答案:4  悬赏:80  手机版
解决时间 2021-11-22 20:25
单片机C语言中怎么实现微秒级延时?
最佳答案
可以用_nop_( )函数来实现微秒级的延时。
_nop_();            // 直接当成一条语句使用,产生一条NOP指令NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。


注:使用该函数时,需要将头文件#include包含进源文件中。
全部回答
单片机执行一步运算需要一定的时间,这根单片机的晶振有关!
while(i--)执行了6次,6步的时间!
大致的原理 就是根据CPU的指标 得到CPU执行一条指令的时间t
然后通过循环一定次数 即执行一定条数的指令N
t*N就是时间了
仅适用于单线程的单片机
对于有线程或者是有中断的情况下会不准确追问比如STC89C52单片机时钟频率11.0592MHz,它执行一条语句的时间是1,0851us,但是怎么能看出i=6;while(i--);就是延时了68微妙;或者i=103;while(i>0);i--;又是延时了多少微秒呢,谢谢!!追答编译成汇编 然后计算会执行多少条指令 乘上每条时间就可以了
由于编译的时候和编译器以及优化有关 所以单独从C上是看不出来的

另外,如果要求精确 最好用汇编命令写延时 因为编译的话 有可能不同时候得到的代码就变了

_nop();
一般用这个函数 执行一次等于一个语句时间
这些属于软件延时,会有一定的误差,但一般的测试没有问题,你可以用KEIL软件仿真,在你写的代码前后各设置一个断点,从第一个断点开始,单步运行到下个断点,KEIL左侧会显示执行这段代码所用的时间。 本质上就是,单片机执行完这段代码的时间,就是你所要的时间。
这款单片机不能硬件调试,如果是其它类型能调试 的MCU,你可以用示波器测出来。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
5拍用一个音符怎么表示?
广东虚拟现实科技有限公司怎么样?
李锦记酱油生抽好还是味级鲜?
C10h15no和hl混合后通过高压锅烹制能达到脱氧
北程旅馆地址有知道的么?有点事想过去!
英文名AASIA的意思和发音是什么?
84年茅84年的茅台酒值多少钱?
谁有长春市第十九中学高中毕业证编号给我发一
爱在重阳,下一句写什么
C照升级B照一般需要多久
哀 衷 衰 怎么区别编顺口溜
在围棋比赛中常听到的"常昊九段"的九段是什么
写景状物有哪些写作方法
淘宝双11买东西真的便宜吗 双11购物需要注意
萌新,求助外观购买的问题
推荐资讯
流量明星是什么意思,褒义还是贬义
关于新县变化的作文450字4年级
怎样用oa 发送文件发送统计表。
求一套二十分钟的锻炼方法?
转租合同签订了,但不想转租了我没有收他任何
一般纳税人给客户开8.5个点的发票 怎么交税
我短发好看还是长发好看啊?
大自然地板地址在哪,我要去那里办事,
请教一下 Photo Shop 艺术类修图 要怎么做?
赵新民的烈士英名
为什么我50米跑6秒整,100米才12秒?
诺五笔怎么打字
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?