void delay(unsigned int time) // time代表需要延时的毫秒数
{
unsigned int j=0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
解析:
假设单片机的工作频率为125kHz,那么每个循环的时间为1/125000秒,即0.000008秒。因此,为了实现1ms的延时效果,需要执行125次循环,即125 * 0.000008秒。将0.001秒转换为毫秒,得到1ms,因此125 * 0.000008秒=0.001秒,即每个循环需要执行0.000008秒,需要执行125次循环才能实现1ms的延时效果。
下面讲解如何使用isp自动生成延时程序
软件 STC 官网 >> 点击跳转

打开后选择菜单上面的软件延时计算器

可以生成C语言的,还可以生成汇编的
可以优化成延时函数的:
#include <intrins.h>
void Delayms(unsigned int ms) //@11.0592MHz
{
unsigned char i, j;
while (ms--)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
这样可以调用了
挺方便的
文章介绍了如何在单片机中实现延时函数,通过计算循环次数达到指定毫秒的延时效果。并提到可以使用STC官网的软件延时计算器,自动生成C语言或汇编的延时程序,提供了一段示例代码展示如何编写优化后的延时函数。


&spm=1001.2101.3001.5002&articleId=130542963&d=1&t=3&u=94e2ba0e43384185b1d95f717a4c1487)
357

被折叠的 条评论
为什么被折叠?



