找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 560|回复: 6
打印 上一主题 下一主题
收起左侧

51单片机定时器中需要多种时间,一个自增变量可以解决

[复制链接]
跳转到指定楼层
楼主
ID:1146155 发表于 2026-3-24 08:13 来自触屏版 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如我需要去按键抖动时间,还有各种延时
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1133081 发表于 2026-3-24 16:16 | 只看该作者
定时器中断做一个基础时间,比如1ms,可以用一个变量或多个变量来满足多个时间需求。
回复

使用道具 举报

板凳
ID:123917 发表于 2026-3-25 00:49 | 只看该作者
一般是按多少个机器周期,
回复

使用道具 举报

地板
ID:584814 发表于 2026-3-25 08:50 | 只看该作者
楼主真的是奇思妙想呀,一句话就精练地总结了前人的经验
回复

使用道具 举报

5#
ID:123289 发表于 2026-3-25 10:09 | 只看该作者
在定时中断程序中,这样写程序:(假设0.1ms中断一次)
1、每10次中断,将B_1MS置1.
2、每100次中断,将B_10MS置1.
3、每10000次中断,将B_1S置1.
……
如此你就能得到1ms、10ms、1s三个时间,你只要在主程序识别一下,比如当B_1S=1时,就是1秒到了,记得处理后1秒所要做的事件后,将B_1S清0,下次B_1S再=1时,就又过了1S了。
回复

使用道具 举报

6#
ID:1146155 发表于 2026-3-27 17:08 | 只看该作者
yzwzfyz 发表于 2026-3-25 10:09
在定时中断程序中,这样写程序:(假设0.1ms中断一次)
1、每10次中断,将B_1MS置1.
2、每100次中断,将B ...

原来可以这样?我是用笨方法  一个功能对应一个自增变量
回复

使用道具 举报

7#
ID:1146155 发表于 2026-3-27 17:11 | 只看该作者
wjfw 发表于 2026-3-25 00:49
一般是按多少个机器周期,

我是之前整ESP32习惯了,用的systick 用新时间减去旧时间,51我用的笨方法,哪个功能需要延时的,我就单独做一个++变量,这样感觉很笨的方法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表