打印
[资料下载]

SC92F84H3毫秒级软件延时函数

[复制链接]
4712|57
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lmn2005|  楼主 | 2023-8-16 12:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
下面是SC92F84H3毫秒级软件延时函数,估计不太准确,所以仅供参考,时钟频率设置见后面图。

void delay_ms(unsigned long ms)   //
{
    unsigned char a,b;
    while(ms--)
    for(b=50;b>0;b--)
        for(a=45;a>0;a--);
}

使用特权

评论回复
沙发
tpgf| | 2023-9-2 10:36 | 只看该作者
哪些情况会导致延时函数的延时时间不准确呢

使用特权

评论回复
板凳
nawu| | 2023-9-2 10:54 | 只看该作者
这个收到主频的限值 而且为什么不用定时器呢

使用特权

评论回复
地板
zljiu| | 2023-9-2 11:35 | 只看该作者
这个延时函数会收到其他线程的干扰吗

使用特权

评论回复
5
tfqi| | 2023-9-2 11:52 | 只看该作者
毫秒级延时函数完全可以通过定时器进行精确操作啊

使用特权

评论回复
6
caigang13| | 2023-9-2 18:16 | 只看该作者
这种延时是阻塞方式

使用特权

评论回复
7
gwsan| | 2023-9-2 20:11 | 只看该作者
延时函数的优先级别是高还是低呢

使用特权

评论回复
8
aoyi| | 2023-9-2 21:00 | 只看该作者
有没有实际测试过它的累积误差呢

使用特权

评论回复
评论
lmn2005 2023-9-3 15:04 回复TA
没有,没有绝对准确的 
9
alvpeg| | 2023-9-7 13:29 | 只看该作者
定时器来实现延时。              

使用特权

评论回复
10
beacherblack| | 2023-9-7 13:48 | 只看该作者
可以这样实现3毫秒的延时:

c
void delay_ms(void)
{
    int i;
    for(i = 0; i < 15000; i++)
    {
        // 这里循环一次假设需要N个指令周期
        // 具体的指令取决于你的循环体内容
    }
}

使用特权

评论回复
11
uiint| | 2023-9-7 14:03 | 只看该作者
可以在程序中设置一个计数器,然后在需要延时的时候,通过累加计数器的值来计算延时时间。

使用特权

评论回复
12
yeates333| | 2023-9-7 14:12 | 只看该作者
延时函数的实现需要考虑到具体的硬件平台和实际需求

使用特权

评论回复
13
linfelix| | 2023-9-7 15:15 | 只看该作者
可以达到毫秒级的延时效果?              

使用特权

评论回复
14
claretttt| | 2023-9-7 15:48 | 只看该作者
外层循环控制延时的总时间,内层循环通过空操作指令来实现延时。在内层循环中,使用了一个110的循环次数,这个值可以根据具体的应用场景进行调整,以获得更精确的延时效果。

使用特权

评论回复
15
wangdezhi| | 2023-9-7 15:57 | 只看该作者
单片机的延时函数受到时钟频率、编译器优化以及其他代码的影响,

使用特权

评论回复
16
hearstnorman323| | 2023-9-7 16:03 | 只看该作者
可以在程序中设置一个计数器,当计数器的值达到1000时,执行延时函数,否则正常执行程序。

使用特权

评论回复
17
ccook11| | 2023-9-7 16:54 | 只看该作者
void delay_ms(unsigned int ms)
{
    unsigned int i, j;
    for (i = 0; i < ms; i++)
    {
        for (j = 0; j < 1141; j++)   // 假设时钟频率为11.0592MHz,循环次数可根据实际情况调整
        {
            asm("nop");   // 空操作,用于延时
        }
    }
}

使用特权

评论回复
18
gygp| | 2023-9-19 10:07 | 只看该作者
如果你需要更精确的延时,或者需要在CPU繁忙的时候实现延时,你可能需要使用硬件定时器或者其他的硬件设备来实现。

使用特权

评论回复
19
abotomson| | 2023-9-19 10:23 | 只看该作者
最高时钟频率为1MHz。对于毫秒级软件延时函数,可以通过使用延时寄存器来实现。

使用特权

评论回复
20
1988020566| | 2023-9-19 10:32 | 只看该作者
如果你想要实现毫秒级的延时,可以计算出需要多少个指令周期。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

524

帖子

1

粉丝