標(biāo)題: 求解答,根據(jù)ds1302時(shí)間和設(shè)置的時(shí)間,設(shè)置不同的工作狀態(tài) [打印本頁]

作者: dsm1353879473    時(shí)間: 2024-4-28 10:25
標(biāo)題: 求解答,根據(jù)ds1302時(shí)間和設(shè)置的時(shí)間,設(shè)置不同的工作狀態(tài)
我寫的是一個(gè)路燈的工作時(shí)間,分別有開啟時(shí)間,結(jié)束時(shí)間,和節(jié)能模式開啟時(shí)間(有小時(shí)和分鐘),根據(jù)工作在不同的時(shí)間段,路燈有不同的亮度,但是在寫判斷的時(shí)候,已經(jīng)寫懵了,有沒有好的判斷方法,或者有沒有辦法將小時(shí)和分鐘存到一個(gè)數(shù)據(jù)里,我感覺就容易比較了
圖片是我已經(jīng)寫的一點(diǎn)的,感覺問題很大
ds1302 time3和4小時(shí)和分鐘
time 0和1是開始時(shí)間的小時(shí)和分鐘
time  2和3是節(jié)能模式開始時(shí)間的小時(shí)和分鐘
結(jié)束時(shí)間還沒寫到,就已經(jīng)懵了
單片機(jī)源程序如下:

1714270903389.jpg (1.44 MB, 下載次數(shù): 30)

1714270903389.jpg

作者: wufa1986    時(shí)間: 2024-4-29 11:56
重寫吧,你這種判斷時(shí)間和分鐘分開的方法,稍不留神就會(huì)出錯(cuò),讀出時(shí)間后統(tǒng)一轉(zhuǎn)換為分鐘,再寫邏輯判斷
作者: 188610329    時(shí)間: 2024-4-29 12:27
先說關(guān)鍵點(diǎn):多條件并列判斷時(shí),要用 && 比如:
if((Time[2] >12) && (Time[2]<24))
然后,順帶說一下,邏輯上來講,DS1302的話, 24 小時(shí)制 是 0~23  所以,只要 >12  必定是 <24,   同樣 只要<12 也必然是 >=0 的,所以,此處根本就不需要并列判斷。
最后再提一下,DS1302 用的是BCD計(jì)時(shí),正常得到的是 BCD碼,所以通常判斷時(shí) 應(yīng)該是 >0x12  而不是 >12
作者: dsm1353879473    時(shí)間: 2024-4-29 14:05
wufa1986 發(fā)表于 2024-4-29 11:56
重寫吧,你這種判斷時(shí)間和分鐘分開的方法,稍不留神就會(huì)出錯(cuò),讀出時(shí)間后統(tǒng)一轉(zhuǎn)換為分鐘,再寫邏輯判斷

好的,感謝感謝
作者: dsm1353879473    時(shí)間: 2024-4-29 14:07
188610329 發(fā)表于 2024-4-29 12:27
先說關(guān)鍵點(diǎn):多條件并列判斷時(shí),要用 && 比如:
if((Time[2] >12) && (Time[2]12  必定是 0x12  而不是 >12

好的,感謝感謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1