该延时函数在51单片机中,while语句循环1次和循环10次 ,各需要几个机器周期?在线等 5
voiddelayus(ucharus)//温度传感器处理函数的延时{uchari;i=us;while(i>0)i--;我指的是delyus(1)和delyus(10)...
void delayus(uchar us)//温度传感器处理函数的延时
{
uchar i;
i=us;
while(i>0)i--;
我指的是delyus(1)和delyus(10)各自所需多少个机器周期执行 展开
{
uchar i;
i=us;
while(i>0)i--;
我指的是delyus(1)和delyus(10)各自所需多少个机器周期执行 展开
3个回答
展开全部
你看看你的单片机的晶振是多少,我的是11.0592MHZ,你要是做1us延时的话,可以看下我的,
/*************************************************
Function: // 15us延时函数
Description: // 实现15us的整数倍延时
Input: // unsigned int i
*************************************************/
void Delay_15us (unsigned int i) //15*i+15us延时
{
for(i;i>0;i--)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
_nop_();
_nop_();
}
如果你要是做到1us的话可以直接写_nop_();这是个空指令,系统什么也不干,延时大概就是1us,如果你要是这么写的话,就要包含头文件#include<intrins.h>
/*************************************************
Function: // 15us延时函数
Description: // 实现15us的整数倍延时
Input: // unsigned int i
*************************************************/
void Delay_15us (unsigned int i) //15*i+15us延时
{
for(i;i>0;i--)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
_nop_();
_nop_();
}
如果你要是做到1us的话可以直接写_nop_();这是个空指令,系统什么也不干,延时大概就是1us,如果你要是这么写的话,就要包含头文件#include<intrins.h>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询