找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机长延时函数

[复制链接]
跳转到指定楼层
楼主
ID:56665 发表于 2019-8-28 08:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
长延时用Delay会影响系统正常工作,不用Delay只用定时器分别延时10秒,15分钟、1小时封装成函数,需要使用延时时就调用这个函数,怎样做才能达到这个要求。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:604918 发表于 2019-8-28 21:19 | 只看该作者
你可以考虑while(1)再使用中断跳出来
回复

使用道具 举报

板凳
ID:213173 发表于 2019-8-28 22:09 | 只看该作者
只要学会使用定时器和标志位,就可以获得大于1us的任意时长的延时时间。没有人会去考虑封装成函数。
回复

使用道具 举报

地板
ID:123289 发表于 2019-8-29 15:07 | 只看该作者
“定时器”这三个字的意思是什么呢?就只能一个DELAY吗?
回复

使用道具 举报

5#
ID:351097 发表于 2019-8-30 10:15 | 只看该作者
可以考虑搞一个系统时间计时变量long类型的 system_time,在写一个1ms的定时器中断程序,在定时器中断处理函数里面让system_time++,这样每1ms,system_time就会累加1。假设要延时10秒,可以用old_time = system_time获取旧时间,然后用new_time  = system_time获取新时间,再判断if(new_time - old_time >=10000),如果满足,就说明10秒到了。延时15分钟,还是延时1小时,也是可以这样处理。
回复

使用道具 举报

6#
ID:494577 发表于 2019-8-30 16:01 | 只看该作者
使用定时器和标志位,设置好所需的初始值就行  不需要封装成函数了,定时器是不能封装成函数的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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