打印
[通用8051核FLASH系列]

为啥一个Nop周期是1us啊?

[复制链接]
753|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Undshing|  楼主 | 2024-4-28 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
No, US
这个时间可以设置吗?

使用特权

评论回复
沙发
kmzuaz| | 2024-5-3 16:44 | 只看该作者
在单片机编程中,_nop_()函数通常用于生成一个或多个无操作(No Operation)指令,这些指令在程序执行期间不执行任何操作,但它们仍然占用处理器的时间。_nop_()函数的周期时长取决于单片机的晶振频率。

使用特权

评论回复
板凳
iyoum| | 2024-5-3 17:39 | 只看该作者
一个NOP周期是1us,是因为在某些单片机系统中,特别是使用12MHz晶振的8051系列单片机,一个机器周期的时间被定义为1us。

使用特权

评论回复
地板
caigang13| | 2024-5-4 08:34 | 只看该作者
这个不是固定的,和芯片的时钟周期有关系。

使用特权

评论回复
5
10299823| | 2024-5-4 11:37 | 只看该作者
Nop(No Operation)指令是一个空操作指令,它在执行时并不执行任何有意义的操作,而只是简单地消耗一个指令周期的时间。Nop周期的时间长度取决于所使用的硬件和时钟频率。

使用特权

评论回复
6
ingramward| | 2024-5-4 12:26 | 只看该作者
以51单片机为例,如果它使用的是12MHz的晶振,那么它的机器周期就是1微秒(1us)。这是因为在51单片机中,一个机器周期等于12个晶振周期。由于12MHz晶振的周期是1/12微秒,所以12个这样的周期加起来就是一个机器周期,即1微秒。

使用特权

评论回复
7
jackcat| | 2024-5-4 13:56 | 只看该作者
在不同的晶振频率下,NOP指令的执行周期会有所不同。例如,如果晶振频率是11.0592MHz,那么一个机器周期将是1.085微秒,因为这时一个机器周期等于12个晶振周期,而每个晶振周期是1/11.0592微秒。

使用特权

评论回复
8
uptown| | 2024-5-4 15:09 | 只看该作者
一个NOP(No Operation)周期通常是指处理器执行一个NOP指令所需的时间

使用特权

评论回复
9
usysm| | 2024-5-4 16:09 | 只看该作者
在数字电路和微控制器设计中,“Nop”(No Operation,无操作)指令通常用于填充空白周期,以便保持时钟信号的连续性。

使用特权

评论回复
10
lihuami| | 2024-5-4 16:54 | 只看该作者
调用_nop_()函数时,实际上是在程序中插入了一个或多个NOP指令。由于NOP指令属于单周期指令,因此在12MHz晶振的条件下,执行一个NOP指令所需的时间正好是1微秒。这就是为什么在12MHz晶振频率下,一个NOP周期是1微秒的原因。

使用特权

评论回复
11
hearstnorman323| | 2024-5-4 20:07 | 只看该作者
微控制器的时钟频率是决定其操作速度的关键因素。如果微控制器的时钟频率是1MHz(即每秒100万次时钟周期),那么一个时钟周期就是1微秒

使用特权

评论回复
12
eefas| | 2024-5-5 07:32 | 只看该作者
晶振的频率决定了CPU的机器周期。例如,当使用12MHz的晶振时,其频率表示每秒钟有12,000,000次振荡。因此,一个振荡周期(即晶振周期)为1/12,000,000秒,也就是约0.083微秒(us)。由于8051单片机的一个机器周期通常由12个晶振周期组成,所以一个机器周期的时间就是12乘以晶振周期时间,即1us。

使用特权

评论回复
13
chenjun89| | 2024-5-5 14:52 | 只看该作者
NOP是一个机器指令,如果主频周期是1us,那才是1us的。

使用特权

评论回复
14
uiint| | 2024-5-6 08:32 | 只看该作者
这并不意味着所有处理器的NOP周期都是1微秒。实际上,NOP周期的长度取决于处理器的设计和实现。

使用特权

评论回复
15
usysm| | 2024-5-6 11:37 | 只看该作者
不同的单片机可能有不同的内部结构和时钟设计,因此在使用不同型号的单片机时,NOP指令耗时可能会有所不同。例如,如果单片机主频是8MHz,那么一个机器周期将是1/8微秒,即0.125微秒;如果是72MHz,则一个机器周期将是大约1/72微秒,即约14纳秒(ns)。

使用特权

评论回复
16
vivilyly| | 2024-5-6 15:38 | 只看该作者
在某些情况下,Nop周期可能被设计为1us(微秒),但这并不是Nop指令本身的固有属性,而是由特定的硬件设计和时钟频率决定的。例如,如果一个系统的时钟频率是1MHz(即每秒1百万次时钟周期),那么一个时钟周期就是1us。如果这个系统的Nop指令被设计为消耗一个时钟周期,那么Nop周期就是1us。

使用特权

评论回复
17
linfelix| | 2024-5-6 18:45 | 只看该作者
在一些情况下,nop周期被定义为1us(微秒),这通常与处理器的时钟速度有关

使用特权

评论回复
18
iyoum| | 2024-5-6 21:51 | 只看该作者
_nop_()函数的周期时长是由单片机的晶振频率决定的

使用特权

评论回复
19
febgxu| | 2024-5-7 08:26 | 只看该作者
Nop指令在实际编程中常常被用作延时或等待操作,因为它可以简单地消耗一定的时间。

使用特权

评论回复
20
sdlls| | 2024-5-7 11:33 | 只看该作者
NOP指令作为一个单周期指令,其执行周期等同于单片机的机器周期。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

83

主题

1709

帖子

1

粉丝