[技术问答] 延时函数该如何写?

[复制链接]
701|3
 楼主| zhuotuzi 发表于 2020-3-15 15:46 | 显示全部楼层 |阅读模式
刚才看帖,发现有个大神说另外一个大神的延时是搞笑的。弱弱的问一下,延时如何做是科学的?
https://bbs.21ic.com/icview-2932278-1-1.html
733705e6ddd1faa4d0.png
贴主的延时是这么写的,我也没看太懂。
840465e6ddd39821f0.png
这位大神说是搞笑的,按他意思应该这么写是不对的,或者不科学。弱弱的问一下各位大神,延时函数该如何写科学。。
 楼主| zhuotuzi 发表于 2020-3-15 15:50 | 显示全部楼层
我认为该修改一行。
  1. void delay(void)
  2. {
  3.         int i=320;
  4.         TR0=1;
  5.         while(i--)
  6.         {
  7.                 TL0 = (65536 - 50000)%256;    //时钟为Fsys,则溢出时间=50000*(1/Fsys);
  8.                 TH0 = (65536 - 50000)/256;
  9.                 while(TF0==0);
  10.                 TF0=0;
  11.         }
  12.                 TR0=0;
  13. }

因为没有必要在循环里每次都TR0
 楼主| zhuotuzi 发表于 2020-3-15 15:50 | 显示全部楼层
TR0=1,TR0=0.其实执行一次就实现了,所以贴主没有考虑到这个细节。不知道回帖的那个大神是不是这么理解的。
奇立电源 发表于 2020-4-8 12:45 来自手机 | 显示全部楼层
while中有while,精准没毛病啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

214

主题

3375

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部