爱晴海玩偶 发表于 2023-11-13 16:04:01

关于STC8G-STC8H官方库的延时函数

这个库文件里面有个函数。如下。



void delay_ms(unsigned char ms)
{
        unsigned int i;
        do{
                i = MAIN_Fosc / 10000;
                while(--i);
        }while(--ms);
}


有疑问的是为啥除10000而不是1000呢。
这样算出来while(--i)只会执行100次。

乘风飞扬 发表于 2023-11-13 16:47:25

1次循环的指令周期差不多10T,所以除10000

Heanqiyang 发表于 2023-11-17 23:13:44

点赞

yefeng 发表于 2023-11-19 18:46:54

stc8g是1t单片机的话那么就是一个时钟执行一个机器周期的指令

libin1009 发表于 2023-11-21 10:03:34

学习了!

sujingliang 发表于 2023-11-24 22:22:49

延时函授不应该是从stc-isp中生成的吗?{:lol:}
void Delay1ms()                //@11.0592MHz
{
        unsigned char data i, j;

        _nop_();
        _nop_();
        _nop_();
        i = 11;
        j = 190;
        do
        {
                while (--j);
        } while (--i);
}

爱晴海玩偶 发表于 2023-11-27 18:46:51

sujingliang 发表于 2023-11-24 22:22
延时函授不应该是从stc-isp中生成的吗?
void Delay1ms()                //@11.0592MHz
{


这个不方便。每一个延时都要算一下

爱晴海玩偶 发表于 2024-2-29 18:21:47

爱晴海玩偶 发表于 2023-11-27 18:46
这个不方便。每一个延时都要算一下

没有通用性

21cnsound 发表于 2024-2-29 19:01:53

用STC-ISP自动生成1ms的函数,最外出套一层while就可以实现任意ms带参数的延时函数了

垂柳工作室 发表于 2024-2-29 19:43:53

学习了{:4_174:}
页: [1]
查看完整版本: 关于STC8G-STC8H官方库的延时函数