找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1051|回復: 4
打印 上一主題 下一主題
收起左側

求解答,根據ds1302時間和設置的時間,設置不同的工作狀態(tài)

[復制鏈接]
跳轉到指定樓層
樓主
ID:976573 發(fā)表于 2024-4-28 10:25 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我寫的是一個路燈的工作時間,分別有開啟時間,結束時間,和節(jié)能模式開啟時間(有小時和分鐘),根據工作在不同的時間段,路燈有不同的亮度,但是在寫判斷的時候,已經寫懵了,有沒有好的判斷方法,或者有沒有辦法將小時和分鐘存到一個數據里,我感覺就容易比較了
圖片是我已經寫的一點的,感覺問題很大
ds1302 time3和4小時和分鐘
time 0和1是開始時間的小時和分鐘
time  2和3是節(jié)能模式開始時間的小時和分鐘
結束時間還沒寫到,就已經懵了
單片機源程序如下:

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

1714270903389.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:879348 發(fā)表于 2024-4-29 11:56 | 只看該作者
重寫吧,你這種判斷時間和分鐘分開的方法,稍不留神就會出錯,讀出時間后統一轉換為分鐘,再寫邏輯判斷
回復

使用道具 舉報

板凳
ID:624769 發(fā)表于 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 發(fā)表于 2024-4-29 14:05 來自手機 | 只看該作者
wufa1986 發(fā)表于 2024-4-29 11:56
重寫吧,你這種判斷時間和分鐘分開的方法,稍不留神就會出錯,讀出時間后統一轉換為分鐘,再寫邏輯判斷

好的,感謝感謝
回復

使用道具 舉報

5#
ID:976573 發(fā)表于 2024-4-29 14:07 來自手機 | 只看該作者
188610329 發(fā)表于 2024-4-29 12:27
先說關鍵點:多條件并列判斷時,要用 && 比如:
if((Time[2] >12) && (Time[2]12  必定是 0x12  而不是 >12

好的,感謝感謝
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表