标题: 求解答,根据ds1302时间和设置的时间,设置不同的工作状态 [打印本页]

作者: dsm1353879473    时间: 2024-4-28 10:25
标题: 求解答,根据ds1302时间和设置的时间,设置不同的工作状态
我写的是一个路灯的工作时间,分别有开启时间,结束时间,和节能模式开启时间(有小时和分钟),根据工作在不同的时间段,路灯有不同的亮度,但是在写判断的时候,已经写懵了,有没有好的判断方法,或者有没有办法将小时和分钟存到一个数据里,我感觉就容易比较了
图片是我已经写的一点的,感觉问题很大
ds1302 time3和4小时和分钟
time 0和1是开始时间的小时和分钟
time  2和3是节能模式开始时间的小时和分钟
结束时间还没写到,就已经懵了
单片机源程序如下:

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

1714270903389.jpg

作者: wufa1986    时间: 2024-4-29 11:56
重写吧,你这种判断时间和分钟分开的方法,稍不留神就会出错,读出时间后统一转换为分钟,再写逻辑判断
作者: 188610329    时间: 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
作者: dsm1353879473    时间: 2024-4-29 14:05
wufa1986 发表于 2024-4-29 11:56
重写吧,你这种判断时间和分钟分开的方法,稍不留神就会出错,读出时间后统一转换为分钟,再写逻辑判断

好的,感谢感谢
作者: dsm1353879473    时间: 2024-4-29 14:07
188610329 发表于 2024-4-29 12:27
先说关键点:多条件并列判断时,要用 && 比如:
if((Time[2] >12) && (Time[2]12  必定是 0x12  而不是 >12

好的,感谢感谢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1