打印
[经验分享]

单片机延时原理

[复制链接]
楼主: Xiashiqi
手机看帖
扫描二维码
随时随地手机跟帖
21
mattlincoln| | 2025-5-16 11:48 | 只看该作者 回帖奖励 |倒序浏览
让单片机执行一系列无实际业务功能的指令,利用执行这些指令所花费的时间来达到延时目的。

使用特权

评论回复
22
linfelix| | 2025-5-16 12:43 | 只看该作者
软件延时简单易用,但精度较低;定时器/计数器延时精度较高,但需要更多的编程和配置工作;硬件延时则适用于特定的高精度或长时间延时需求。

使用特权

评论回复
23
mollylawrence| | 2025-5-16 13:10 | 只看该作者
指令的执行时间与单片机的时钟频率紧密相关,时钟频率决定了每个时钟周期的时长,不同指令所需的时钟周期数是固定的,所以通过合理安排指令的数量和类型,就能控制延时的时间。

使用特权

评论回复
24
pixhw| | 2025-5-16 13:47 | 只看该作者
用嵌套循环来调整延时时间。不过这种方法可能受时钟频率影响,需要计算循环次数。

使用特权

评论回复
25
robincotton| | 2025-5-16 15:16 | 只看该作者
低电压可能导致时钟漂移,影响延时精度。

使用特权

评论回复
26
updownq| | 2025-5-16 15:47 | 只看该作者
单片机的延时精度与系统时钟频率密切相关。每个指令的执行时间取决于时钟周期。

使用特权

评论回复
27
fengm| | 2025-5-16 16:19 | 只看该作者
单片机延时是通过控制程序的执行节奏,在一定时间内暂停运行以实现时间间隔的功能。其实现原理主要分为软件延时和硬件定时器延时两种

使用特权

评论回复
28
jimmhu| | 2025-5-16 16:40 | 只看该作者
循环延时:这是最常见的软件延时方法。

使用特权

评论回复
29
cemaj| | 2025-5-16 17:09 | 只看该作者
循环延时需要计算循环次数,考虑每个指令的机器周期。

使用特权

评论回复
30
gygp| | 2025-5-16 18:03 | 只看该作者
软件延时主要依靠执行一段特定的程序代码来消耗时间,以此实现延时效果。

使用特权

评论回复
31
pmp| | 2025-5-16 18:29 | 只看该作者
硬件定时器延时              

使用特权

评论回复
32
claretttt| | 2025-5-16 18:50 | 只看该作者
软件延时通过循环消耗时间,受时钟频率和编译器影响,精度较低;定时器延时更精确,基于硬件计数,适合高精度需求。

使用特权

评论回复
33
kmzuaz| | 2025-5-16 19:13 | 只看该作者
延时精度影响因素​              

使用特权

评论回复
34
cemaj| | 2025-5-16 19:36 | 只看该作者
通过空操作或循环次数控制,每个指令的执行时间是固定的

使用特权

评论回复
35
tifmill| | 2025-5-16 19:57 | 只看该作者
定时器延时              

使用特权

评论回复
36
deliahouse887| | 2025-5-16 20:18 | 只看该作者
计算循环次数时要考虑时钟频率和编译器优化。还提到使用__NOP()指令和volatile关键字防止优化。

使用特权

评论回复
37
mollylawrence| | 2025-5-16 20:36 | 只看该作者
单片机通常内置定时器/计数器,可以用来实现更精确的延时。定时器/计数器可以在设定的时间间隔后产生中断,或者通过查询定时器的值来判断是否到达指定的时间。

使用特权

评论回复
38
jackcat| | 2025-5-16 20:55 | 只看该作者
void delay(unsigned int ms) {
    unsigned int i, j;
    for(i = 0; i < ms; i++) {
        for(j = 0; j < 120; j++); // 空循环
    }
}

使用特权

评论回复
39
mmbs| | 2025-5-16 21:15 | 只看该作者
利用单片机的定时器模块,通过计数器溢出触发中断或标志位。

使用特权

评论回复
40
qiufengsd| | 2025-5-16 21:34 | 只看该作者
当定时器溢出时,会触发中断服务函数。在中断服务函数中,可以进行相应的处理,如清除中断标志位、进行延时计数等。

使用特权

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

本版积分规则