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 建议楼主用12MHz测试更直观 饭桶 发表于 2020-5-5 17:45
建议楼主用12MHz测试更直观
系统中使用到串口,就用这个频率了,也是STC ISP默认的频率,省得每次调整 楼主可以看一下反汇编,看延时循环用了几条汇编指令,把指令周期加起来就知道了。 小李非刀 发表于 2020-5-11 10:19
楼主可以看一下反汇编,看延时循环用了几条汇编指令,把指令周期加起来就知道了。 ...
不用汇编好多年;看汇编指令然后对比指令表比传统51快了多少倍,去算时间,这事情是做不了了;用变量减做延时基本就是用在不需要多精确延时的地方,这样测测够用了 我现在根本就懒得去算。
也可能是我经常换N多MCU的原因。我现在都是直接写个程序,搞个IO口输出。用示波器直接测量了。几分钟就能找到合适的延时。
页:
[1]