单片机: _nop_和delay(1)延时时间是多久?和晶振频率的关系是什么?
发布网友
发布时间:2022-05-17 21:50
我来回答
共2个回答
热心网友
时间:2023-11-10 02:08
_nop_的延时时间是一个机器周期,与晶振的关系是:osc/12/1000000微秒
比如12M晶振,=12*1000000/12/1000000=1us
delay(1)则不知道是多少延时时间了,这与你的子程序本身有关。比如:
delay(unsigned char a)
{
unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
那么delay(1)则是在12M晶振的情况下延时约为1毫秒。追问void delay(int i)
{
while(i--);
}
这样定义,解释一下一个i=i-1用了多长时间,谢谢。
追答你可以用KEIL反汇编一下,delay(1)大概在8us
热心网友
时间:2023-11-10 02:08
_nop_只是一条语句,就是空操作,占用一条指令周期,晶振周期的12倍就是这个时间了,delay(1)的话这就没法说了,得看你的delay函数怎么定义了,因为函数里边定义的延时不一样