发布网友 发布时间:2022-12-16 20:20
共4个回答
热心网友 时间:2023-12-05 00:03
可以用_nop_( )函数来实现微秒级的延时。
_nop_(); // 直接当成一条语句使用,产生一条NOP指令NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。
注:使用该函数时,需要将头文件#include<intrins.h>包含进源文件中。
热心网友 时间:2023-12-05 00:03
大致的原理 就是根据CPU的指标 得到CPU执行一条指令的时间t追答编译成汇编 然后计算会执行多少条指令 乘上每条时间就可以了
由于编译的时候和编译器以及优化有关 所以单独从C上是看不出来的
另外,如果要求精确 最好用汇编命令写延时 因为编译的话 有可能不同时候得到的代码就变了
_nop();
一般用这个函数 执行一次等于一个语句时间
热心网友 时间:2023-12-05 00:04
单片机执行一步运算需要一定的时间,这根单片机的晶振有关!热心网友 时间:2023-12-05 00:04
这些属于软件延时,会有一定的误差,但一般的测试没有问题,你可以用KEIL软件仿真,在你写的代码前后各设置一个断点,从第一个断点开始,单步运行到下个断点,KEIL左侧会显示执行这段代码所用的时间。 本质上就是,单片机执行完这段代码的时间,就是你所要的时间。