关于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次。
1次循环的指令周期差不多10T,所以除10000 点赞 stc8g是1t单片机的话那么就是一个时钟执行一个机器周期的指令 学习了! 延时函授不应该是从stc-isp中生成的吗?{:lol:}
void Delay1ms() //@11.0592MHz
{
unsigned char data i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
sujingliang 发表于 2023-11-24 22:22
延时函授不应该是从stc-isp中生成的吗?
void Delay1ms() //@11.0592MHz
{
这个不方便。每一个延时都要算一下 爱晴海玩偶 发表于 2023-11-27 18:46
这个不方便。每一个延时都要算一下
没有通用性 用STC-ISP自动生成1ms的函数,最外出套一层while就可以实现任意ms带参数的延时函数了 学习了{:4_174:}
页:
[1]