单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助一个单片机程序 不写延时函数来实现程序的时间消耗

[复制链接]
跳转到指定楼层
楼主
我在尽力 发表于 2019-7-14 19:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不写延时函数来实现程序的时间消耗,用51开发板实现,最好用刷新写这部分,谢谢各位大佬了!
只求个思路 想自己完成

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
2667358111 发表于 2019-7-14 23:30 | 只看该作者
#在这里快速回复#时函数来实现程序的时间消耗,用51开发板实现,最好用刷新写这部分,谢谢各位大佬了! 只求个思路 想自己完成
回复

使用道具 举报

板凳
幻剑心 发表于 2019-7-15 02:38 | 只看该作者
51和时间有关的大概有4种。一是用延时函数。二是用T0,T1定时/计数器。还有就是利用外部时间芯片。最后一种是用外部中断,用外部方波或者手动改变外部中断信号来实现。
回复

使用道具 举报

地板
774559006 发表于 2019-7-15 08:49 | 只看该作者
弄个定时器,弄个标志位就可以了,任务放在white循环里面,判断标志位
回复

使用道具 举报

5#
asdasdadadad 发表于 2019-7-15 09:16 | 只看该作者
如果用32,可以在延迟时进入WFI睡眠模式(任意中断唤醒),然后定时器配置你所需要的时间。我上次的项目就是这样实现低功耗的。
回复

使用道具 举报

6#
egypt 发表于 2019-7-15 15:01 | 只看该作者
提供个思路:

做个定时器,16bit 的计数器,比方说 count1 ,如果大于零,就每 10ms 自减一次直到 0(需自行处理中断设置,如10ms改成你想要的精度之类的)

主循环(main 的循环)想加延迟,就在触发条件满足时,把 count1 设定一下,比方说 1.5秒 就是 150, 设定后,不停地判断 count1 是否等于 0 ,如果等于 0 就
【1】先把该值变成 -1(注意中断上是大于零才自减)
【2】处理你原本想在定时后完成的代码

main()
{
    ...
    while(1)
    {   if(k1==0 && count1==-1) count1=150; // 按键后触发设定值
        if(count1==0)
        {   count1--;   
            your_code(...)
        }
    }
}
回复

使用道具 举报

7#
hantu 发表于 2019-7-15 20:39 | 只看该作者
不用delay那就只有用定时器中断了
回复

使用道具 举报

8#
无衣 发表于 2019-7-16 11:21 | 只看该作者
可以直接用定时器了   想关就关   只需要一个  标志位  就可以进行判断   
但是如果用的时候感觉算法什么没问题  但是实际有问题  建议  定时中断 只计时
回复

使用道具 举报

9#
孙文丹 发表于 2019-7-18 16:06 | 只看该作者
可以选择SysTick中断延时,或者是定时器中断延时
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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