在51单片机中_nop_()延时多长时间
这个_nop_()等效与汇编里面的,NOP指令,也就是空一个机器周期,如果是传统51单片机的话,等于空12个时钟周期【即一个机器周期】,操作方法如下:
1、首先,可以利用keil来进行模拟实验,观察软件所显示的数值,然后再进行相关的运算,即可得出结果。
2、在使用keil进行模拟之前,要“模拟”给单片机各个口上电,点击这里。
3、然后再点击这里,会出来一个对话框,全部勾选即可。
4、除了使用keil外,还可可以借助其他的软件,来进行测试运算。
5、最后要知道指令周期,指执行一条指令所需的时间。机器周期,由6个状态周期组成。状态周期,是时钟周期的两倍,如下图所示就完成了。
51的工作频率是晶振频率除以分频倍率,其倒数就是机器周期。最经典的51是12T,那么当使用12M晶振时,51工作在1M频率下,一个机器周期是1微妙。
一个nop是一个机器周期,共4个
但是for(y = 0 ; y<250 ; y++)这行在编译成机器码时,根据优化策略的不同,会生成不同的代码,所以在计算精确延时时,这些因素也是不能忽略的。一般来说,一个减250的减法,一次自加一,减法溢出判断还有一个跳转指令。
这样算的话,大概是2+1+1+1+4=9个机器周期
9*250=2250个机器周期
例如6Mhz的晶振,f = 6000000,带入上式,结果单位为s。
12M晶体为1us
一个机周
、时钟周期=振荡周期,名称不同而已,都是等于单片机晶振频率的倒数,如常见的外接12M晶振,那它的时钟周期=1/12M。
2、机器周期,8051系列单片机的机器周期=12*时钟周期,之所以这样分是因为单个时钟周期根本干不了一件完整的事情(如取指令、写寄存器、读寄存器等),而12个时钟周期就能基本完成一项基本操作了。
3、指令周期。一个机器周期能完成一项基本操作,但一条指令常常是需要多项基本操作结合才能完成,完成一条指令所需的时间就是指令周期,当然不同的指令,其指令周期就不一样的了。
_nop_()要用1个指令周期
一个机器周期。看你单片机的晶振多大,算出机器周期。
51单片机c语言 _nop_()是一个空指令?短时间延时的?空几个机器周期?
这个_nop_()等效与汇编里面的,NOP指令,也就是空一个机器周期,如果是传统51单片机的话,等于空12个时钟周期【即一个机器周期】,操作方法如下:1、首先,可以利用keil来进行模拟实验,观察软件所显示的数值,然后再进行相关的运算,即可得出结果。2、在使用keil进行模拟之前,要“模拟”给单片机各个口...
在51单片机中_nop_()延时多长时间?
_nop_()要延时1个指令周期。1、时钟周期=振荡周期,名称不同而已,都是等于单片机晶振频率的倒数,如常见的外接12M晶振,那它的时钟周期=1\/12M。2、机器周期,8051系列单片机的机器周期=12*时钟周期,之所以这样分是因为单个时钟周期根本干不了一件完整的事情(如取指令、写寄存器、读寄存器等),而12...
单片机C51中c语言函数(-nop-())求助
extern void _nop_ (void); \/\/空操作,相当于8051的NOP指令 extern bit _testbit_ (bit); \/\/测试并清零位,相当于8051的JBC指令 extern unsigned char _cror_ (unsigned char, unsigned char); \/\/字符循环右移 extern unsigned int _iror_ (unsigned int, unsigned char...
单片机程序中 _nop_()干什么用的?
空指令,延时一个指令周期,如果是51单片机,外部晶振是12M,那么延时时间为1、12M*12=1us
nop函数可以用来延时,单片机是51,CPU频率是20MHZ,请问1个NOP延时多...
51的指令周期是对晶振12分频 如果晶振是12M 那么执行一条一个周期的的指令就是1US 即1S\/(12M\/12分频) =1US NOP是一个周期 所以 20M下 1S\/(20M\/12)=0.6US
单片机中的 _nop_() 延时以及其相关的基础扩展
在单片机编程中,尤其是在51系列单片机开发中,通过头文件包含,我们能够使用 nop() 函数。此函数通过将一个 nop() 函数调用插入程序中实现延时效果。通常情况下,一个 nop() 表示一个机器周期的时间。机器周期与主频(晶振频率)相关,具体而言,机器周期包含12个晶振周期。以12M晶振为例,晶振周期为1...
C中 nop()函数如何实现1us延时?
C语言中的_nop_()指令,堪称编程中的“静默使者”,看似简单,实则在关键时刻发挥着微妙作用。在51单片机的世界里,当晶振频率设定为12兆赫兹时,_nop_()指令的延时效果相当于一个周期,即1微秒。这看似微不足道,但在追求效率和精准控制的编程世界里,每一分每一秒都至关重要。C语言,作为一门广...
单片机能做500纳秒延的时程序,帮写一个呗。
你如果用stc系列的单片机 晶振用2M 500nS的延时程序就是 nop();
51单片机c语言里 _nop_ 函数怎么用?
该函数的作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的...
单片机C语言延时需要注意的问题
标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。在keil C51中,直接调用库函数:include \/\/ 声明了void _nop_(void);_nop_(); \/\/ 产生一条NOP指令 作用:对于延时很短的,要求在us级的,采用“_nop_...