请问stc单片机1个定时器怎么控制两个设备?
我用的是STC15W408AS单片机,请问1个定时器怎么才能控制两个设备的灯状态(两个设备都有灯光控制,打开定时器30秒钟后关闭灯),请问1个定时器怎么实现控制两个设备灯...
我用的是STC15W408AS单片机,请问1个定时器怎么才能控制两个设备的灯状态(两个设备都有灯光控制,打开定时器30秒钟后关闭灯),请问1个定时器怎么实现控制两个设备灯光的自由或者同时关闭状态?
展开
3个回答
展开全部
如果是循环工作就 好办,可以定时50ms,然后各个灯的开启或关闭时间都 是50ms的倍数
每次中断查询设定的时间点,然后同时输出两个灯的状态。
如3S时(中断次数60), A灯亮,B灯灭,5S时,A灯亮,B灯也亮 10秒时AB灯都灭
过一个周期,如60s 回到0秒时的状态
如果灯亮灯灭的规律你自己都 找不出,编程序也就 很难了
如设备A启动后灯延时20秒熄灭 如设备B启动后另一灯灯延时30秒熄灭,可以用两 个变量分别计A B的延时时间,每次中断同时判断两 个变量的值
每次中断查询设定的时间点,然后同时输出两个灯的状态。
如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;} }.......
这些灯共用一个时基,即定时器提供一个节拍,所有灯的开启时长都用它
展开全部
光靠一个定时器怎么行啊,你可以设置定时器0和1的方式1一控制两个设备!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你程序最大的问题是,串口中断打开了,却没有串口中断服务程序,所以一旦有串口接受数据或发送数据,就会混乱的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询