耀子 发表于 2024-10-10 07:15:12

老师们,有没有软件延时1us,10us,1ms,10ms的延时库函数

老师们,有没有软件延时1us,10us,1ms,10ms的延时库函数,能够自主适应时钟的。

神农鼎 发表于 2024-10-10 13:55:03













liuzonggong 发表于 2024-10-10 07:46:12

有啊,自己写很好的。

耀子 发表于 2024-10-10 07:50:35

liuzonggong 发表于 2024-10-10 07:46
有啊,自己写很好的。

应该怎么写?不太会算{:sweat:}

CyberHamster 发表于 2024-10-10 08:04:22

1μs时间太短,软件延时误差很大或需要特殊的时钟频率或无法实现,其他频率可以直接使用ISP软件生成

DebugLab 发表于 2024-10-10 08:07:44

CyberHamster 发表于 2024-10-10 08:04
1μs时间太短,软件延时误差很大或需要特殊的时钟频率或无法实现,其他频率可以直接使用ISP软件生成 ...

1us还要自适应主时钟?应该主时钟适应它才对{:titter:}

113018467 发表于 2024-10-10 14:01:09

要是学习,就自己写一次,如果后续开发用,烧录软件里面有工具的,很方便的啦!如果你是用官方配的硬设库,就省事,它里面有个“STC8G_H_Delay”的文件,在里面有ms软件延时,可以通过头文件修改晶振频率,函数里面自动调整,这样不用每次修改晶振的时候,都要用工具算

soma 发表于 2024-10-10 14:03:18

1us估计不行,10ms以上可以。

angalp 发表于 2024-10-20 11:41:43

STCISP生成的延时程序不带参数,要是能随意填写延时时长就好了,例如 Delay_ms(20); 代表延时20毫秒

xxkj2010 发表于 2024-10-20 13:01:46

本帖最后由 xxkj2010 于 2024-10-20 13:07 编辑

us时间太短

ms的,基本可以用,但不可能完全准确,这是以前收存的:
STC单片机自适应毫秒级延时函数:
//#define MAIN_Fosc 48000000L      //定义主时钟
//#define MAIN_Fosc 44236800L      //定义主时钟
//#define MAIN_Fosc 40000000L      //定义主时钟
//#define MAIN_Fosc 36864000L      //定义主时钟
//#define MAIN_Fosc 35000000L      //定义主时钟
//#define MAIN_Fosc 33177600L      //定义主时钟
//#define MAIN_Fosc 30000000L      //定义主时钟
//#define MAIN_Fosc 27000000L      //定义主时钟
//#define MAIN_Fosc 24000000L      //定义主时钟
//#define MAIN_Fosc 22118400L      //定义主时钟
//#define MAIN_Fosc 20000000L      //定义主时钟
//#define MAIN_Fosc 18432000L      //定义主时钟
#define MAIN_Fosc 12000000L      //定义主时钟
//#define MAIN_Fosc 11059200L      //定义主时钟
//#define MAIN_Fosc 6000000L      //定义主时钟
//#define MAIN_Fosc 5529600L      //定义主时钟

void delay_ms(unsigned int ms)                //注:ms_max=65536
{
    unsigned int i;
    do
    {
//          i=MAIN_Fosc/96000L;                //STC89/90_12T
//          i=MAIN_Fosc/48000L;                //STC89/90_6T
//          i=MAIN_Fosc/14000;                //STC11、STC12
//          i=MAIN_Fosc/13000;                //STC15
            i=MAIN_Fosc/10000;                //STC8
//          i=MAIN_Fosc/6030;               //STC32
            while(--i)      ;
            }
    while(--ms);
}

页: [1]
查看完整版本: 老师们,有没有软件延时1us,10us,1ms,10ms的延时库函数