共2条
1/1 1 跳转至页
44b0 高手进来看下,关于44b0的延时程序
问
实在不理解下面这段代码是如何运作的,那位高手给指点一下撒
小弟先谢了
void Delay(int time)
// time=0: adjust the Delay function by WatchDog timer.//
// time>0: the number of loop time//
// 100us resolution.//
{
int i,adjust=0;
if(time==0)
{
time=200;
adjust=1;
delayLoopCount=400;
rWTCON=((MCLK/1000000-1)<<8)|(2<<3); // 1M/64,Watch-dog,nRESET,interrupt disable//
rWTDAT=0xffff;
rWTCNT=0xffff;
rWTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5); // 1M/64,Watch-dog enable,nRESET,interrupt disable //
}
for(;time>0;time--)
for(i=0;i<delayLoopCount;i++);
if(adjust==1)
{
rWTCON=((MCLK/1000000-1)<<8)|(2<<3);
i=0xffff-rWTCNT; // 1count/16us?????????//
delayLoopCount=8000000/(i*64); //400*100/(i*64/200) //
}
} 答 1: 对着注释讲得很清楚啦延时100us,如Delay(1)为延时100us,Delay(10)为延时1000us...
Delay(0)进行校准,使在各种工作时钟下都能满足延时100us的基准 答 2: 十分感谢阿南我已明白,十分感谢拉
小弟先谢了
void Delay(int time)
// time=0: adjust the Delay function by WatchDog timer.//
// time>0: the number of loop time//
// 100us resolution.//
{
int i,adjust=0;
if(time==0)
{
time=200;
adjust=1;
delayLoopCount=400;
rWTCON=((MCLK/1000000-1)<<8)|(2<<3); // 1M/64,Watch-dog,nRESET,interrupt disable//
rWTDAT=0xffff;
rWTCNT=0xffff;
rWTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5); // 1M/64,Watch-dog enable,nRESET,interrupt disable //
}
for(;time>0;time--)
for(i=0;i<delayLoopCount;i++);
if(adjust==1)
{
rWTCON=((MCLK/1000000-1)<<8)|(2<<3);
i=0xffff-rWTCNT; // 1count/16us?????????//
delayLoopCount=8000000/(i*64); //400*100/(i*64/200) //
}
} 答 1: 对着注释讲得很清楚啦延时100us,如Delay(1)为延时100us,Delay(10)为延时1000us...
Delay(0)进行校准,使在各种工作时钟下都能满足延时100us的基准 答 2: 十分感谢阿南我已明白,十分感谢拉
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |