找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 571|回复: 6
收起左侧

灯的状态 上电初始化亮3秒,然后熄灭 单片机程序该怎么写?

[复制链接]
ID:302293 发表于 2022-2-25 16:21 | 显示全部楼层 |阅读模式
  上电初始化亮3秒,然后熄灭,串口收到数据后亮5秒再熄灭。程序该怎么写
回复

使用道具 举报

ID:685744 发表于 2022-2-25 16:55 | 显示全部楼层
设置标志位,接收到数据后将标志位置一,然后通过判断标志位让灯亮,通过判断时间让灯灭
回复

使用道具 举报

ID:161164 发表于 2022-2-25 17:08 | 显示全部楼层
什么数据?
回复

使用道具 举报

ID:966423 发表于 2022-2-25 17:48 | 显示全部楼层
定时器定时,然后串口有接收到信息,来个标志位。
回复

使用道具 举报

ID:290373 发表于 2022-2-25 18:36 | 显示全部楼层
支持楼上,数据到达时设置标志位,用定时器+时间变量计时,在主程序中判断标志位和时间变量来点灯。
回复

使用道具 举报

ID:634016 发表于 2022-2-25 19:52 | 显示全部楼层
用定时器和标志位就可以了
回复

使用道具 举报

ID:123289 发表于 2022-2-26 09:59 | 显示全部楼层
所提的两个问题,实际是一个问题,姑且叫做一个事件发生后需要亮灯N秒吧。
1、写一个显示程序,建议用时间中断去做,如每5ms刷新一下显示。
2、建立一个标记:L1。显示程序(5ms中断时执行),将L1送到LED接口,也即用L1的值(0,1)决定LED的明暗。
3、事件发生时,修改一下L1的值(如、让LED亮)。如此,如何让灯亮就完成了。下面谈灯灭:
4、做个计时器来计时你的3秒或5秒,仅需一个寄存器而矣,设为SJ。同时再设立一个标记:K_SJ,用K_SJ来决定SJ是否计时。
5、同样在5ms中断时,如果K_SJ=1,就将SJ+1,再看看SJ是否到3秒了(数值是多少,你自己算算吧),到了,就将L1置成关灯(不要去动LED端口,L1会在下次5ms中断后,决定灯的熄灭!),并将K_SJ清0,停止计时器工作;如果K_SJ=0,什么事也不做,跳过。如此,定时关灯就完成了!下面说说,如何一开始计时,估计你也想到了:
6、在事件发生始,如同标记亮灯一样,将K_SJ置1,也就起动计时器SJ了,同时将SJ清0,计时从0开始!
记住:写程序关键是构思方案!程序,仅仅是抄几个约定的句子而矣。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表