找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2060|回复: 8
收起左侧

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

[复制链接]
ID:583138 发表于 2019-7-14 19:35 | 显示全部楼层 |阅读模式
不写延时函数来实现程序的时间消耗,用51开发板实现,最好用刷新写这部分,谢谢各位大佬了!
只求个思路 想自己完成

回复

使用道具 举报

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

使用道具 举报

ID:511890 发表于 2019-7-15 02:38 | 显示全部楼层
51和时间有关的大概有4种。一是用延时函数。二是用T0,T1定时/计数器。还有就是利用外部时间芯片。最后一种是用外部中断,用外部方波或者手动改变外部中断信号来实现。
回复

使用道具 举报

ID:285194 发表于 2019-7-15 08:49 | 显示全部楼层
弄个定时器,弄个标志位就可以了,任务放在white循环里面,判断标志位
回复

使用道具 举报

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

使用道具 举报

ID:565305 发表于 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(...)
        }
    }
}
回复

使用道具 举报

ID:462827 发表于 2019-7-15 20:39 | 显示全部楼层
不用delay那就只有用定时器中断了
回复

使用道具 举报

ID:508386 发表于 2019-7-16 11:21 | 显示全部楼层
可以直接用定时器了   想关就关   只需要一个  标志位  就可以进行判断   
但是如果用的时候感觉算法什么没问题  但是实际有问题  建议  定时中断 只计时
回复

使用道具 举报

ID:217539 发表于 2019-7-18 16:06 | 显示全部楼层
可以选择SysTick中断延时,或者是定时器中断延时
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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