一个keil c51延时程序,晶振频率11.0592MHz,延时怎么算的,延时多少?

void tst_nop_ (void) {

unsigned char i=15;
while(i)
{
_nop_();_nop_();_nop_();
--i;
}
}
如果是那样的话,为什么说晶振频率为12MHz时,执行一个_nop_()时间为1微秒呢?

1.一个keil c51延时程序,晶振频率11.0592MHz
delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
延时时间为t=z微秒=0.001*z秒
2.也可以用定时/计数器
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
当tt=20时刚好是1秒
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-09
1/11.0592MHZ再乘以延时程序总的数值即可
第2个回答  2010-08-09
3*系统时间(振荡频率的倒数)*15
第3个回答  2010-08-09
去下一个单片机小软件,不用算,程序直接出来
相似回答