【单片机延时简单说明及程序案例】
基本说明
单片机中的delay()的单位时间不是系统提供的,而是用户自己编制的;
晶振为12MHz的单片机,机器周期等于晶振周期*分频=(1/12)*12=1ms;
晶振12MHz和16位的单片机一次最大的延时时间为2^16=65536us=65ms;
标准的C语言没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生延迟的效果,所以总会看起来复杂无序。验证程序延时是否正确可将程序编译成汇编程序在进行计算,至于为什么,目前也没找到合适的资料。
常用的延时程序
nop()(um级)
#include<instrins.h>
_nop_();
下面4us延时声明(直接定义法无需编译执行,故无空指令参与延时):
#define Delay4us(){_nop_();_nop_();_nop_();_nop_();}
循环函数(延时一般大于10us)
500ms延时:
void delay500ms(void)
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}
200ms延时:
void del