[经验分享] 在keil_C51设计中几种精确延时的方法

[复制链接]
4348|51
lzmm 发表于 2024-1-8 17:27 | 显示全部楼层
在Keil C51中,可以使用定时器实现延时。通过设置定时器的计数值和启动定时器,可以实现精确的延时。
geraldbetty 发表于 2024-1-9 19:19 | 显示全部楼层
可以使用标准C库中的延时函数              
saservice 发表于 2024-1-9 20:06 | 显示全部楼层
通常需要更多的硬件资源,但是可以提供更高的精度和灵活性。
10299823 发表于 2024-1-9 21:03 | 显示全部楼层
通过设置软件计数器的值和检查计数器的值,可以实现精确的延时。
uptown 发表于 2024-1-9 22:23 | 显示全部楼层
可以设置定时器的溢出时间,然后在定时器溢出时中断,执行你需要的操作。
febgxu 发表于 2024-1-10 10:46 | 显示全部楼层
单片机内部通常有多个定时器,这些定时器可以用于产生精确的延时。
sanfuzi 发表于 2024-1-10 11:58 | 显示全部楼层
使用单片机内部的定时器资源,设置好初值并启动定时器,当定时器溢出时产生中断,在中断服务程序中递减一个全局变量,直到达到预设的延时时间。
zerorobert 发表于 2024-1-10 15:15 | 显示全部楼层
在软件中通过循环来实现延时。              
macpherson 发表于 2024-1-10 15:28 | 显示全部楼层
定时器中断服务程序(ISR)可以在每次定时器溢出时执行,以此来计算延时的总时间。
fengm 发表于 2024-1-10 16:18 | 显示全部楼层
可以通过设置定时器/计数器的初始值和中断方式来实现精确的延时。
timfordlare 发表于 2024-1-10 17:06 | 显示全部楼层
使用8051内置的T0或T1定时器,预先计算好计数初值,并在中断处理函数中做相应的计数递减操作。
mmbs 发表于 2024-1-10 19:35 | 显示全部楼层
void delay_ms(unsigned int ms) {
    unsigned int i;
    for (i = 0; i < ms * (系统晶振频率 / 12 / 每毫秒需要的循环次数); i++) { // 这里的"系统晶振频率 / 12"是对于标准8051而言的一个估算值,实际需根据具体单片机进行调整
        // 空循环或NOP指令,取决于编译器优化后的效果
    }
}
LinkMe 发表于 2024-1-11 10:45 | 显示全部楼层
可以通过计算确定周期数来估计延迟时间。
mollylawrence 发表于 2024-1-11 14:17 | 显示全部楼层
软件延时               
芯路例程 发表于 2024-1-11 14:53 | 显示全部楼层
经由过程双缓冲技能来处置数据传输,可以实现切确的延时节制。
V853 发表于 2024-2-2 01:21 | 显示全部楼层
编写一个轮回布局,经由过程计较轮回次数来实现切确延时。
鹿鼎计 发表于 2024-2-2 02:53 | 显示全部楼层
Delay programs can be written using assembly language
天天向善 发表于 2024-2-2 20:03 | 显示全部楼层
在Keil和C51中,可以用C语言编写延迟函数
digit0 发表于 2024-2-4 00:08 | 显示全部楼层
利用循环计数,但增加采样到当前系统时钟,以提高延迟精度。
Pretext 发表于 2024-2-4 10:54 | 显示全部楼层
可以经由过程软件方法摹拟定时器功效。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部