请问stc单片机1个定时器怎么控制两个设备?

我用的是STC15W408AS单片机,请问1个定时器怎么才能控制两个设备的灯状态(两个设备都有灯光控制,打开定时器30秒钟后关闭灯),请问1个定时器怎么实现控制两个设备灯... 我用的是STC15W408AS单片机,请问1个定时器怎么才能控制两个设备的灯状态(两个设备都有灯光控制,打开定时器30秒钟后关闭灯),请问1个定时器怎么实现控制两个设备灯光的自由或者同时关闭状态? 展开
 我来答
11kxmx
2018-12-06 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:70%
帮助的人:2417万
展开全部
如果是循环工作就 好办,可以定时50ms,然后各个灯的开启或关闭时间都 是50ms的倍数
每次中断查询设定的时间点,然后同时输出两个灯的状态。
如3S时(中断次数60), A灯亮,B灯灭,5S时,A灯亮,B灯也亮 10秒时AB灯都灭
过一个周期,如60s 回到0秒时的状态
如果灯亮灯灭的规律你自己都 找不出,编程序也就 很难了
如设备A启动后灯延时20秒熄灭 如设备B启动后另一灯灯延时30秒熄灭,可以用两 个变量分别计A B的延时时间,每次中断同时判断两 个变量的值
追问
大神,是这样的,这两个设备类似于速递易的快递格子柜,只不过在门板上有一个玻璃面罩,格子里面都有LED灯,共4个格子一组,我这个STC只有3个定时器,其中一个作为串口波特率使用,另外2个定时器各自控制两个设备的灯光状态,门打开后LED灯倒计时30s后关闭,但是指不定是哪个格子先打开,或许会间隔2S、3S、5S......没有规律,而且要保持门打开后灯光倒计时30s后关闭的状态,请问应该怎么实现呢?谢谢大神!
追答
如果灯不是很多的话,为每个灯分配一个变量,累计它的中断次数
另外为每一个灯分配一个位变量,标记它的启动状态
主程序中收到A指令后:A=1;led1=1;a=0;
定时器中断程序中逐个查询:
if(A==1){a++;if(a==20) {a=0;led1=0;A=0;} }//A灯开启了,单独对A灯计时
if(B==1){b++;if(b==30) {b=0;led2=0;B=0;} }//如果B灯也 开启了,单独对b灯计时
if(C==1){c++;if(c==25) {c=0;led3=0;C=0;} }.......
这些灯共用一个时基,即定时器提供一个节拍,所有灯的开启时长都用它
孤傲何妨CG
2018-12-06 · TA获得超过106个赞
知道小有建树答主
回答量:343
采纳率:79%
帮助的人:36.4万
展开全部
光靠一个定时器怎么行啊,你可以设置定时器0和1的方式1一控制两个设备!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
封望张廖雁露
2019-11-29 · TA获得超过1110个赞
知道小有建树答主
回答量:1197
采纳率:100%
帮助的人:5.3万
展开全部
你程序最大的问题是,串口中断打开了,却没有串口中断服务程序,所以一旦有串口接受数据或发送数据,就会混乱的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式