打印
[技术问答]

N76E003可以延时250ns吗??

[复制链接]
1740|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小S咯|  楼主 | 2017-9-14 16:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小S咯 于 2017-9-15 09:19 编辑

N76E003内部晶振16MHZ,我用for循环,循环里是;(分号空指令),但是用示波器观察只能延时微秒了,有大神知道怎么延时纳秒吗??

图上的时序代码
void main(void)
{
       
  u8 key_flag=0,i;
  u8 dat = 0x55;
  GPIO_Init();
  while(1)
  {
    for(i=0;i<8;i++)
    {
      if(dat & 0x80)
      {
        //1码
        P04=0;   
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
        P04=1;
        _nop_();

      }
      else
      {
        //0码
         P04=0;   
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
         P04=1;
        _nop_();_nop_();

      }
      dat<<=1;
    }
  }       
}


0和1我在示波器看,时间大致满足图的时间,但是尝试发送一个字节的时候码就乱了,怎么回事呢?

微信截图_20170915091608.png (393 KB )

微信截图_20170915091608.png
沙发
l4157| | 2017-9-14 17:40 | 只看该作者
在16M 下,250ns 只有4 条指令,for循环肯定是不行的。这种情况直接用4个NOP比较靠谱,一个NOP 就是62.5ns

使用特权

评论回复
板凳
小S咯|  楼主 | 2017-9-14 17:44 | 只看该作者
l4157 发表于 2017-9-14 17:40
在16M 下,250ns 只有4 条指令,for循环肯定是不行的。这种情况直接用4个NOP比较靠谱,一个NOP 就是62.5ns ...

NOP keil报错,要什么头文件吗?

使用特权

评论回复
地板
小S咯|  楼主 | 2017-9-14 17:45 | 只看该作者
l4157 发表于 2017-9-14 17:40
在16M 下,250ns 只有4 条指令,for循环肯定是不行的。这种情况直接用4个NOP比较靠谱,一个NOP 就是62.5ns ...

intrins.h??

使用特权

评论回复
5
小S咯|  楼主 | 2017-9-14 17:45 | 只看该作者
l4157 发表于 2017-9-14 17:40
在16M 下,250ns 只有4 条指令,for循环肯定是不行的。这种情况直接用4个NOP比较靠谱,一个NOP 就是62.5ns ...

intrins.h??这个是吧??

使用特权

评论回复
6
huahuagg| | 2017-9-14 19:45 | 只看该作者
for不行,你直接跑空指令吧。

使用特权

评论回复
7
l4157| | 2017-9-14 19:53 | 只看该作者
小S咯 发表于 2017-9-14 17:45
intrins.h??这个是吧??

貌似是,好久没有 用了,不太记得了

使用特权

评论回复
8
小S咯|  楼主 | 2017-9-15 08:17 | 只看该作者
huahuagg 发表于 2017-9-14 19:45
for不行,你直接跑空指令吧。

空指令被优化!

使用特权

评论回复
9
huahuagg| | 2017-9-18 22:30 | 只看该作者
小S咯 发表于 2017-9-15 08:17
空指令被优化!

那就随便搞个赋值语句。

使用特权

评论回复
10
wanduzi| | 2017-9-19 09:29 | 只看该作者
把优化等级降低。

使用特权

评论回复
11
xinpian101| | 2017-9-19 10:06 | 只看该作者
如果被优化了,可以关闭 优化啊。

使用特权

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

本版积分规则

19

主题

178

帖子

4

粉丝