打印

asm("NOP")的延时时间具体是多长呢

[复制链接]
4830|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jouney316|  楼主 | 2017-5-24 19:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
fjhcpu| | 2017-5-25 16:04 | 只看该作者
1us

使用特权

评论回复
板凳
l科科1987| | 2017-5-25 17:57 | 只看该作者
和晶振有关,和单片机有关,这个不一定的。

使用特权

评论回复
地板
dongbaohui| | 2017-5-25 18:26 | 只看该作者
asm("NOP")是什么意思呢

使用特权

评论回复
5
原味_郭| | 2017-5-26 11:56 | 只看该作者
asm("nop");这条语句,其中asm()的作用是指函数内部的参数翻译为汇编指令,其作用是在C语言环境下直接使用汇编指令执行。

使用特权

评论回复
6
ahhsyf| | 2017-5-26 12:00 | 只看该作者
nop是一个空等待汇编指令,这个指令执行时,单片机是什么也不做的,仅仅起一个时间延时作用。

使用特权

评论回复
7
liutongda| | 2017-5-26 16:21 | 只看该作者
asm("NOP")是把汇编编译成c的指令,本质是一个机器周期的时间。

使用特权

评论回复
8
enginezhong| | 2017-5-26 16:24 | 只看该作者
所有的单片机中,都可以调用asm("NOP")这个函数吗?

使用特权

评论回复
9
gaoxiansheng| | 2017-5-26 20:02 | 只看该作者
不一定的,单片机不同,对这个基础延时函数的宏定义是不同的,不过肯定都有NOP这三个字母的

使用特权

评论回复
10
myidear| | 2017-5-26 20:07 | 只看该作者
C中 _nop_()是空指令,延时一个指令周期;
  如果是51单片机,外部晶振是12M,那么延时时间为1、12M*12=1us;

使用特权

评论回复
11
新人求带| | 2017-5-27 17:13 | 只看该作者
其实这个函数,也不见得有多精准,除非都用汇编,只要有c代码,时间都是有差距的。

使用特权

评论回复
12
lt1231| | 2017-5-27 17:16 | 只看该作者
nop就是一句空指令,意思就是运行这句指令,但是单片机什么都没做,也就是浪费了一个单片机机器周期的时间

使用特权

评论回复
13
在路上的程序猿| | 2017-5-28 07:55 | 只看该作者
比如51中就是这么用的
void Delay_10us()
{
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
}
大概的延时时间,总有几个指令的误差的。

使用特权

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

本版积分规则

16

主题

203

帖子

0

粉丝