幸福来陪伴 发表于 2023-12-18 11:25:08

LAOXU 发表于 2023-12-15 06:00


ISP是可以给出,但是是固定的,我先做一个通用的带参数的,10uS左右能够精确的函数

幸福来陪伴 发表于 2023-12-18 11:26:11

嵌入式之路 发表于 2023-12-14 20:56
您好,建议自己使用Keil进行debug 计算一个__nop__的时间, 然后自行调整for循环的层数, 这样才是最准确的....

这个我试过了,对于小于10us的使用for函数,误差很大

xxkj2010 发表于 2023-12-18 11:40:29

本帖最后由 xxkj2010 于 2023-12-18 11:46 编辑

幸福来陪伴 发表于 2023-12-18 11:22
是的,我用带参数的用10uS这种误差太大了,DS18B20时序一直有问题,所以想在论坛请教一下大神 ...
如果是为了驱动,建议用固定延时,不带函数的,这样更准确些,特别是短延时的。

//STC12C5A60S2

//函数名称:void delay_50US(unsigned int t)
//功能: 延时50*t(us)
void delay_50us(uint t)
{
      unsigned char i;
      for(;t>0;t--)         
      {
      _nop_();
      i = 135;
      while (--i);
      }
}

//8微秒延时基准程序
void delay_8us(uint t)
{      unsigned char i;
      do{
                i = 19;
                while (--i);
      }
      while(--t);
}

//3微秒延时程序
void delay_3us()
{
      unsigned char i;
      _nop_();
      i = 5;
      while (--i);
}

嵌入式之路 发表于 2023-12-18 13:38:06

幸福来陪伴 发表于 2023-12-18 11:25
ISP是可以给出,但是是固定的,我先做一个通用的带参数的,10uS左右能够精确的函数 ...

那你只能使用keil去debug找精确的延时了. 或者示波器io翻转自己测量一个

zhudean11 发表于 2023-12-18 15:44:15

幸福来陪伴 发表于 2023-12-18 11:24
ISP是可以给出,但是是固定的,我先做一个通用的带参数的,10uS左右能够精确的函数 ...

那就得自己修改一下了。做个变量。

xueyeteng 发表于 2023-12-27 08:48:32

我在坛子里发过一个,你可以找找

xueyeteng 发表于 2023-12-27 08:51:16

xueyeteng 发表于 2023-12-27 08:48
我在坛子里发过一个,你可以找找

KeilC写了一个STC8系列的软件延时程序,有需要的可以参考一下。
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2772
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)

泰勒soc 发表于 2023-12-30 16:11:14

这还到处要,自己写

weixin 发表于 2024-1-18 08:37:51

xueyeteng 发表于 2023-12-27 08:51
KeilC写了一个STC8系列的软件延时程序,有需要的可以参考一下。
https://www.stcaimcu.com/forum.php?mod ...

感谢,找了很久终于找到了

xueyeteng 发表于 2024-1-18 08:48:32

weixin 发表于 2024-1-18 08:37
感谢,找了很久终于找到了

我也是在调试DS18B20的时候为了方便调试写的。
页: 1 [2] 3
查看完整版本: us延时函数