关于延时函数延时多少秒的计算问题请教
单片机吧
全部回复
仅看楼主
level 1
帅毕了 楼主
函数名称:void Delay_ms(uint n)
函数作用:ms延时函数
参数说明:
********************************************************/
void Delay_ms(uint n)
{
unsigned char j;
while(n--)
{
for(j=0;j<125;j++);
}
}
/********************************************************
函数名称:void Delay_us(uchar n)
函数作用:us延时函数
参数说明:
********************************************************/
void Delay_us(uchar n)
{
n=n/2;
while(--n);
}
2019年03月07日 00点03分 1
level 5
这个需要自己去卡出来时间
2019年03月07日 00点03分 2
level 5
没必要自己算,而且单片机晶振也不是都一样的,这种延时就拿来当粗略延时就好了,要精确,实时还得定时器。
2019年03月07日 04点03分 3
level 11
12MHz晶振时一个机器周期是1us,以下的函数可以延时10us:
delay10()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
函数调用2个周期、返回指令2个周期,再加上6个空操作,一共是10个指令周期刚好10us。
2019年03月07日 08点03分 4
level 11
然后其他的延时1ms、10ms等等因为有循环等开销,所以具体是循环多少次已经由前人经过精确计算甚至用示波器调过,你就照抄例程就行了。
2019年03月07日 08点03分 5
1