单片机C语言中,怎么通过循环次数计算延迟函数的延迟时间?

来源:百度知道 编辑:UC知道 时间:2024/05/13 15:01:53

首先你要知道一个指令周期是几秒 算法是1/(晶振频率除以12)
然后你要知道循环究竟执行了几个指令周期 你可以用keil里在线反汇编命令看看你的循环编译成机器语言后到底是几个指令周期 这样就知道了延迟时间 当然你取近似值也可以的
比如
for(i=0,i<255,i++){x=2}
这里x=2是一个指令周期 而执行了255次 假如你的晶振是12MHZ的 则你执行一个指令周期是1us 255次是0.255ms

以下程序在12MHZ、m=1时延时为1ms:

#include <intrins.h>
void delay(uint m) // 12MHz Xtal, close to 1/2ms value
{
uint j;
uint i;

for(i=0; i<m; i++)
for(j=0; j<10; j++)
_nop_();
}