标题: 求助一个单片机程序 不写延时函数来实现程序的时间消耗 [打印本页]

作者: 我在尽力    时间: 2019-7-14 19:35
标题: 求助一个单片机程序 不写延时函数来实现程序的时间消耗
不写延时函数来实现程序的时间消耗,用51开发板实现,最好用刷新写这部分,谢谢各位大佬了!
只求个思路 想自己完成


作者: 2667358111    时间: 2019-7-14 23:30
#在这里快速回复#时函数来实现程序的时间消耗,用51开发板实现,最好用刷新写这部分,谢谢各位大佬了! 只求个思路 想自己完成
作者: 幻剑心    时间: 2019-7-15 02:38
51和时间有关的大概有4种。一是用延时函数。二是用T0,T1定时/计数器。还有就是利用外部时间芯片。最后一种是用外部中断,用外部方波或者手动改变外部中断信号来实现。
作者: 774559006    时间: 2019-7-15 08:49
弄个定时器,弄个标志位就可以了,任务放在white循环里面,判断标志位
作者: asdasdadadad    时间: 2019-7-15 09:16
如果用32,可以在延迟时进入WFI睡眠模式(任意中断唤醒),然后定时器配置你所需要的时间。我上次的项目就是这样实现低功耗的。
作者: 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(...)
        }
    }
}

作者: hantu    时间: 2019-7-15 20:39
不用delay那就只有用定时器中断了
作者: 无衣    时间: 2019-7-16 11:21
可以直接用定时器了   想关就关   只需要一个  标志位  就可以进行判断   
但是如果用的时候感觉算法什么没问题  但是实际有问题  建议  定时中断 只计时
作者: 孙文丹    时间: 2019-7-18 16:06
可以选择SysTick中断延时,或者是定时器中断延时




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1