找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 557|回复: 4
打印 上一主题 下一主题
收起左侧

求解答,根据ds1302时间和设置的时间,设置不同的工作状态

[复制链接]
跳转到指定楼层
楼主
ID:976573 发表于 2024-4-28 10:25 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我写的是一个路灯的工作时间,分别有开启时间,结束时间,和节能模式开启时间(有小时和分钟),根据工作在不同的时间段,路灯有不同的亮度,但是在写判断的时候,已经写懵了,有没有好的判断方法,或者有没有办法将小时和分钟存到一个数据里,我感觉就容易比较了
图片是我已经写的一点的,感觉问题很大
ds1302 time3和4小时和分钟
time 0和1是开始时间的小时和分钟
time  2和3是节能模式开始时间的小时和分钟
结束时间还没写到,就已经懵了
单片机源程序如下:

1714270903389.jpg (1.44 MB, 下载次数: 29)

1714270903389.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:879348 发表于 2024-4-29 11:56 | 只看该作者
重写吧,你这种判断时间和分钟分开的方法,稍不留神就会出错,读出时间后统一转换为分钟,再写逻辑判断
回复

使用道具 举报

板凳
ID:624769 发表于 2024-4-29 12:27 | 只看该作者
先说关键点:多条件并列判断时,要用 && 比如:
if((Time[2] >12) && (Time[2]<24))
然后,顺带说一下,逻辑上来讲,DS1302的话, 24 小时制 是 0~23  所以,只要 >12  必定是 <24,   同样 只要<12 也必然是 >=0 的,所以,此处根本就不需要并列判断。
最后再提一下,DS1302 用的是BCD计时,正常得到的是 BCD码,所以通常判断时 应该是 >0x12  而不是 >12
回复

使用道具 举报

地板
ID:976573 发表于 2024-4-29 14:05 来自手机 | 只看该作者
wufa1986 发表于 2024-4-29 11:56
重写吧,你这种判断时间和分钟分开的方法,稍不留神就会出错,读出时间后统一转换为分钟,再写逻辑判断

好的,感谢感谢
回复

使用道具 举报

5#
ID:976573 发表于 2024-4-29 14:07 来自手机 | 只看该作者
188610329 发表于 2024-4-29 12:27
先说关键点:多条件并列判断时,要用 && 比如:
if((Time[2] >12) && (Time[2]12  必定是 0x12  而不是 >12

好的,感谢感谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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