liuyang21168 发表于 2023-11-23 22:59:34

延时1微秒,需要写几条_nop_()语句?| 已解决

STC15W4K48S4单片机,12MHZ主频,延时1微妙,需要写几条 _nop_(); 语句

小白 发表于 2023-11-24 08:07:28

STC-IPS软件有延时计算,输入主频时间,软件自动生成代码

AI芯 发表于 2023-11-24 09:24:21



void Delay1us(void)        //@12.000MHz
{
        _nop_();
        _nop_();
        _nop_();
        _nop_();
}



liuyang21168 发表于 2023-11-24 20:14:14

不想用函数,只想用 _nop_()语句来实现, 假如一条 _nop_()语句执行时间0.1微秒,那么10条_nop_()语句就可以延时1微秒。

梁工 发表于 2023-11-24 20:25:58

12M主频,要12个NOP才是1us。
同理,24M主频,1us就要24个NOP。

liuyang21168 发表于 2023-11-24 20:33:29

谢谢 梁工,终于得到想要的答案了。

slicesss 发表于 2024-2-29 17:43:25

我想补充说明一下:
    12M的时钟,1us有12个时钟周期。
    一条汇编指令(单周期指令)NOP执行,分为三个步骤,分别是取指令、解码、执行。
    4个时钟周期等于一个机器周期,一条NOP需要3个步骤*4个时钟周期 = 12个时钟周期。
    所以一个NOP用时1us,一个NOP等于一个指令周期。C:\Users\a\Desktop\64b88767f23440518b86ada3567c60be.png

soma 发表于 2024-3-12 11:43:51

看时间周期几T的,12兆12T的就是1个nop

2300606886 发表于 2024-7-25 09:44:45

void Delay1us(void)      //@12.000MHz
{
      _nop_();
      _nop_();
      _nop_();
      _nop_();
}

Yim_Hom 发表于 2024-7-25 11:52:24





图1是12M主频下一个nop的时间,
图2就是12M主频下实现1us的计算。
知其然,知其所以然,希望有用。
页: [1] 2
查看完整版本: 延时1微秒,需要写几条_nop_()语句?| 已解决