单片机怎么同时执行两个程序 我想做一个时钟 同时带有流水灯 要求流水灯不影响时钟的精确度 谢谢!
答案:3 悬赏:0 手机版
解决时间 2021-03-21 15:45
- 提问者网友:浪荡绅士
- 2021-03-21 00:12
单片机怎么同时执行两个程序 我想做一个时钟 同时带有流水灯 要求流水灯不影响时钟的精确度 谢谢!
最佳答案
- 五星知识达人网友:鸽屿
- 2021-03-21 00:22
在一个定时器的周期中断里面处理时钟。
程序的其它部分做别的(可以在主进程里面做,也可以在其他中断里面做)。
防止程序运行中时序交叉干扰,编程时需要注意,凡有干扰可能的程序段中,可以关中断。
顺便对上面“寂寞的猪猪”的主意说两句:
“寂寞的猪猪”的主意是:在主程序中用循环延时来做流水灯。这可以。这也就是我上面说的“程序的其它部分做别的”。
不过“寂寞的猪猪”说“延时要小于等于定时器设置的时间”,这没有必要。
只要你的循环延时程序中开着中断,就不需要顾虑。
中断时间到了会打断主程序执行中断服务中的时钟处理,中断返回后,原来被打断的主程序可以正常继续,没有问题的。只要你分配的变量地址不要互相重用,就没问题。
我上面说的“时序交叉干扰”,主要是指万一有某个变量,在时钟程序里和流水灯程序里都要使用,设计时不好安排无法分开,此时才需要考虑。可以在使用这个变量前先关中断,使用后再开中断就行了。如果不存在这种情况,就没有什么问题可担心了。
不过,因为循环延时中被中断程序打断,可能造成循环延时不准确。一般来说,这个“不准确”误差不大,可不考虑。假如您想避免这个误差,也不难:
只要把延迟程序改一下,不做计数循环,改成查询时钟,即可。
程序的其它部分做别的(可以在主进程里面做,也可以在其他中断里面做)。
防止程序运行中时序交叉干扰,编程时需要注意,凡有干扰可能的程序段中,可以关中断。
顺便对上面“寂寞的猪猪”的主意说两句:
“寂寞的猪猪”的主意是:在主程序中用循环延时来做流水灯。这可以。这也就是我上面说的“程序的其它部分做别的”。
不过“寂寞的猪猪”说“延时要小于等于定时器设置的时间”,这没有必要。
只要你的循环延时程序中开着中断,就不需要顾虑。
中断时间到了会打断主程序执行中断服务中的时钟处理,中断返回后,原来被打断的主程序可以正常继续,没有问题的。只要你分配的变量地址不要互相重用,就没问题。
我上面说的“时序交叉干扰”,主要是指万一有某个变量,在时钟程序里和流水灯程序里都要使用,设计时不好安排无法分开,此时才需要考虑。可以在使用这个变量前先关中断,使用后再开中断就行了。如果不存在这种情况,就没有什么问题可担心了。
不过,因为循环延时中被中断程序打断,可能造成循环延时不准确。一般来说,这个“不准确”误差不大,可不考虑。假如您想避免这个误差,也不难:
只要把延迟程序改一下,不做计数循环,改成查询时钟,即可。
全部回答
- 1楼网友:纵马山川剑自提
- 2021-03-21 02:31
时钟用定时器定时,流水灯普通延时,但是流水灯的延时要小于等于定时器设置的一秒时间
- 2楼网友:長槍戰八方
- 2021-03-21 01:53
单片机不能同时执行两个程序,只能采用分时的模式完成。
首先通过定时器中断来设定一个时标,比如设定定时器0 每1ms产生一次中断,以这个1ms为基本时标,时钟和流水灯分别定义相应的计数全局变量,每次进入中断计数加1。根据这个基础,比如说时钟应用,当时钟计数值达到1000次时,说明到了1s,然后计数清零,时分秒变量增加1s
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯