51C中_nop_(); 指令的说明和作用
2017-07-19 16:26
204 查看
C语言中没有_nop_()函数。
在51C中一般包含在#include "intrins.h" 头文件中。
该函数是在51单片机中用的延时函数,表示执行一条没有什么意义的指令,延时一个指令周期,有的指令周期是两个或两个以上的机械周期,但是_nop_();指令需要的只是一个机械周期也就是12个时钟周期(震荡周期)。
51单片机中,1个机械周期 = 12个时钟周期 = 12 * ( 1 / f)。(f 为晶振频率)。
如果只用的是12MHZ的晶振,那么 一个机械周期就是1us;也就是说:
_nop_(); 指令的延迟时间为 1us。可以较为精确得控制延迟时间。
nop指令的作用:
1)就是通过nop指令的填充(nop指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数。(一般用来内存地址偶数对齐,比如有一条指令,占3字节,这时候使用nop指令,cpu 就可以从第四个字节处读取指令了。)
2)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟。
3)i/o传输时,也会用一下 nop,等待缓冲区清空,总线恢复;
4)清除由上一个算术逻辑指令设置的flag位;
在51C中一般包含在#include "intrins.h" 头文件中。
该函数是在51单片机中用的延时函数,表示执行一条没有什么意义的指令,延时一个指令周期,有的指令周期是两个或两个以上的机械周期,但是_nop_();指令需要的只是一个机械周期也就是12个时钟周期(震荡周期)。
51单片机中,1个机械周期 = 12个时钟周期 = 12 * ( 1 / f)。(f 为晶振频率)。
如果只用的是12MHZ的晶振,那么 一个机械周期就是1us;也就是说:
_nop_(); 指令的延迟时间为 1us。可以较为精确得控制延迟时间。
nop指令的作用:
1)就是通过nop指令的填充(nop指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数。(一般用来内存地址偶数对齐,比如有一条指令,占3字节,这时候使用nop指令,cpu 就可以从第四个字节处读取指令了。)
2)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟。
3)i/o传输时,也会用一下 nop,等待缓冲区清空,总线恢复;
4)清除由上一个算术逻辑指令设置的flag位;
相关文章推荐
- nop指令的作用
- nop指令的作用
- nop指令的作用
- NOP 指令作用
- PHP配置指令作用域说明(PHP_INI_PERDIR、PHP_INI_SYSTEM、PHP_INI_USER、PHP_INI_ALL)
- PHP配置指令作用域说明
- PHP配置指令作用域说明(PHP_INI_PERDIR、PHP_INI_SYSTEM、PHP_INI_USER、PHP_INI_ALL)
- PHP配置指令作用域说明
- NOP指令概述及作用
- NOP 指令作用
- PHP配置指令作用域说明(PHP_INI_PERDIR、PHP_INI_SYSTEM、PHP_INI_USER、PHP_INI_ALL)
- 举例说明EIP,EBP,ESP的作用
- java类中serialversionuid 作用 是什么?举个例子说明
- 为什么要指令重排序和屏障的作用
- CMD文件的编写说明,比较详细的 1·什么是CMD文件,它有什么作用。
- 基类与派生类,类派生列表说明符,public,protected,private的作用
- linux 目录结构作用说明
- Nginx Location配置语法介绍、优先级说明、nginx的root和alias指令的区别
- .NET小笔记之using() 语法的作用和说明示例
- ASP.net 中 OutputCache 指令各个参数的作用。