在设置单片机精准的延时函数的时候,给大家一个方法,STC-ISP有一个延时函数计算器,可以计算出想要的延时。
我的例程也是基于这个软件生成的,我生成一个1ms和1us出来,剩下的我再封装成一个函数接口,需要用到的时候直接调用。
例程参考,以11.0592M晶振为例,需要其它晶振要自己生成
注意:需要添加<intrins.h>头文件
void Delay1us(void) //@11.0592MHz
{
unsigned char i;
_nop_();
_nop_();
i = 1;
while (--i);
}
void Delay_us(unsigned int timer)
{
unsigned int i;
for(i=0; i<timer; i++)
{
Delay1us();
}
}
void Delay1ms(void) //@11.0592MHz
{
unsigned char i, j;
i = 15;
j = 90;
do
{
while (--j);
} while (--i);
}
void delay_ms(unsigned int time)
{
unsigned int i;
for(i=0; i<time; i++)
{
Delay1ms();
}
}