幸福来陪伴
发表于 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的时候为了方便调试写的。