MYQQ2018 发表于 2020-5-5 17:31:36

STC15W4K48S4延时函数测试

闲着无聊,测试了一下STC15W4K48S4延时函数,大家批评指正
void delay(datatype tt)
{
        while(tt--);
}
        while(1)      
        {       
               
                Test=~Test;
                delay(tt);

}
1、STC15W4K48S4,时钟11.0592MHz,配合示波器测试方波周期,从而去判断延时函数长短
2、不加任何延时,循环判断和IO翻转本身消耗的时间约为0.54uS,记为T1,以下所提时间均已减掉T1
3、使用_nop_();做延时,非常准确,每个_nop_();约0.09uS,应该就是1/11.0592MHz的时间
4、void delay(datatype tt)函数中datatype为unsigned int类型时,进出delay函数本身需要时间约2.63uS,tt每增加1增加延时约1.34uS
5、void delay(datatype tt)函数中datatype为unsigned char类型时,进出delay函数本身需要时间约1.68uS,tt每增加1增加延时约0.9uS

饭桶 发表于 2020-5-5 17:45:46

建议楼主用12MHz测试更直观

MYQQ2018 发表于 2020-5-5 18:53:03

饭桶 发表于 2020-5-5 17:45
建议楼主用12MHz测试更直观

系统中使用到串口,就用这个频率了,也是STC ISP默认的频率,省得每次调整

小李非刀 发表于 2020-5-11 10:19:47

楼主可以看一下反汇编,看延时循环用了几条汇编指令,把指令周期加起来就知道了。

MYQQ2018 发表于 2020-5-12 09:25:09

小李非刀 发表于 2020-5-11 10:19
楼主可以看一下反汇编,看延时循环用了几条汇编指令,把指令周期加起来就知道了。 ...

不用汇编好多年;看汇编指令然后对比指令表比传统51快了多少倍,去算时间,这事情是做不了了;用变量减做延时基本就是用在不需要多精确延时的地方,这样测测够用了

tongdayusu 发表于 2020-8-23 14:45:25

我现在根本就懒得去算。
也可能是我经常换N多MCU的原因。我现在都是直接写个程序,搞个IO口输出。用示波器直接测量了。几分钟就能找到合适的延时。
页: [1]
查看完整版本: STC15W4K48S4延时函数测试