打印

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

[复制链接]
9854|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
litao748113231|  楼主 | 2011-3-6 12:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
原野之狼| | 2011-3-6 12:38 | 只看该作者
这代码不咋滴,别借鉴了。

使用特权

评论回复
板凳
singleywy| | 2011-3-6 12:58 | 只看该作者
本帖最后由 singleywy 于 2011-3-6 19:01 编辑

我觉得话不能说的太绝对,在51单片机中,空转几个周期,是可以的,如果非要利用这几个时间,仅在这简短的时间内,什么也做不了,除非是延时很长时间,否则,是无可厚非的
回LZ的话,这代码的意思是用{_nop_();_nop_();_nop_();_nop_();}; 代替delayNOP(); 即让CPU空转4个周期,_nop_();在KEIL头文件intrins.h中,相当于汇编中的NOP指令
忽忽,我理解错误了,语文没学好呀

使用特权

评论回复
地板
liang7143| | 2011-3-6 13:48 | 只看该作者
加花括号,可以避免这样的语句 出现语法错误
if(……)
  delayNOP();
else
  ……

使用特权

评论回复
5
hgjinwei| | 2011-3-6 18:55 | 只看该作者
这种代码还是少看为好,要看也要批判地看。
好点的应该这样:
#define delayNOP()  do{_nop_();_nop_();_nop_();_nop_();}while(0)

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
原野之狼 + 2 我很赞同
6
icecut| | 2011-3-6 19:41 | 只看该作者
四个nop,复读机啊你

使用特权

评论回复
7
sioca| | 2011-3-6 19:59 | 只看该作者
注意编译出来的ROM用量

使用特权

评论回复
8
gongmaomao| | 2011-3-16 00:36 | 只看该作者
说白了,就是一个延时。还是一个程序不怎么样的延时,我被它害的惨···

使用特权

评论回复
9
cooljoker| | 2011-3-16 11:14 | 只看该作者
编成函数不好么

使用特权

评论回复
10
老鱼探戈| | 2011-3-16 13:04 | 只看该作者
四个nop,复读机啊你
icecut 发表于 2011-3-6 19:41


让我想到一个关于公交车上的笑话  :lol

使用特权

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

本版积分规则

0

主题

10

帖子

1

粉丝