单片机怎么同时执行两个程序 我想做一个时钟 同时带有流水灯 要求流水灯不影响时钟的精确度 谢谢!

 我来答
lylxy1965
2011-05-01 · TA获得超过2413个赞
知道小有建树答主
回答量:436
采纳率:100%
帮助的人:220万
展开全部
单片机不能同时执行两个程序,只能采用分时的模式完成。
首先通过定时器中断来设定一个时标,比如设定定时器0 每1ms产生一次中断,以这个1ms为基本时标,时钟和流水灯分别定义相应的计数全局变量,每次进入中断计数加1。根据这个基础,比如说时钟应用,当时钟计数值达到1000次时,说明到了1s,然后计数清零,时分秒变量增加1s。流水灯的处理也一样。另外中断服务程序尽量简洁,所以计数器+1及是否清零的判断操作可在中断服务程序中,计数到后置个标志就可以退出,然后在主循环程序中做运算处理,这样做比较规范,可最大程度减少误差。
haolizhong4924
2011-05-01 · TA获得超过5217个赞
知道小有建树答主
回答量:600
采纳率:50%
帮助的人:264万
展开全部
在一个定时器的周期中断里面处理时钟。
程序的其它部分做别的(可以在主进程里面做,也可以在其他中断里面做)。
防止程序运行中时序交叉干扰,编程时需要注意,凡有干扰可能的程序段中,可以关中断。

顺便对上面“寂寞的猪猪”的主意说两句:
“寂寞的猪猪”的主意是:在主程序中用循环延时来做流水灯。这可以。这也就是我上面说的“程序的其它部分做别的”。
不过“寂寞的猪猪”说“延时要小于等于定时器设置的时间”,这没有必要。
只要你的循环延时程序中开着中断,就不需要顾虑。
中断时间到了会打断主程序执行中断服务中的时钟处理,中断返回后,原来被打断的主程序可以正常继续,没有问题的。只要你分配的变量地址不要互相重用,就没问题。
我上面说的“时序交叉干扰”,主要是指万一有某个变量,在时钟程序里和流水灯程序里都要使用,设计时不好安排无法分开,此时才需要考虑。可以在使用这个变量前先关中断,使用后再开中断就行了。如果不存在这种情况,就没有什么问题可担心了。
不过,因为循环延时中被中断程序打断,可能造成循环延时不准确。一般来说,这个“不准确”误差不大,可不考虑。假如您想避免这个误差,也不难:
只要把延迟程序改一下,不做计数循环,改成查询时钟,即可。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
同风而起
2011-05-01 · TA获得超过1863个赞
知道小有建树答主
回答量:783
采纳率:35%
帮助的人:105万
展开全部
时钟用定时器定时,流水灯普通延时,但是流水灯的延时要小于等于定时器设置的一秒时间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式