欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求一個定時判斷程序的編程思路

[復制鏈接]
跳轉到指定樓層
樓主
ID:740383 發表于 2020-9-4 17:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求一個定時判斷程序:
比如:早上9:20,到下午16:35,即判斷時也判斷分,定時期間執行其他函數判斷;
只求一個判斷思路;求大神
小弟這幾天腦闊疼
求大神引路。!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:529540 發表于 2020-9-4 18:00 | 只看該作者
看不懂你想表達什么
回復

使用道具 舉報

板凳
ID:654028 發表于 2020-9-4 18:13 | 只看該作者
定時器先判斷時鐘,如果時鐘一樣就判斷分鐘
回復

使用道具 舉報

地板
ID:213173 發表于 2020-9-4 20:41 | 只看該作者
可以把小時*60化為分計算

        unsigned int min_m;

        min_m=hour*60+min;
       
        if(min_m>=560 && min_m<=995)//9:20到16:35之間
        {
                //任務
        }
回復

使用道具 舉報

5#
ID:740383 發表于 2020-9-4 23:57 來自觸屏版 | 只看該作者
wulin 發表于 2020-9-4 20:41
可以把小時*60化為分計算

        unsigned int min_m;

謝謝大佬,這個思路真是太棒了
回復

使用道具 舉報

6#
ID:740383 發表于 2020-9-5 00:01 來自觸屏版 | 只看該作者
心有浮生 發表于 2020-9-4 18:13
定時器先判斷時鐘,如果時鐘一樣就判斷分鐘

這樣子判斷的話,判斷分鐘時,開始分鐘大于結束分鐘不太好判斷吧,比如9:35-16:20
回復

使用道具 舉報

7#
ID:401564 發表于 2020-9-5 08:17 | 只看該作者
這到底是有多難呢?
首先,要看你的時間是怎么走的了
如果是定時器累加的形式走的的,比如,是從早上8:00開始計時,到了9:00就走了一個小時的話,這種形式的話就按前面說的,把時間換算成分來進行比較不就可以了嗎?
但如果是像DS1302這種時鐘芯片提供的時間,那就先比較小時,再比較分,兩者相同就行了,不存在什么大于什么的問題
回復

使用道具 舉報

8#
ID:654028 發表于 2020-9-5 08:41 | 只看該作者
danq 發表于 2020-9-5 00:01
這樣子判斷的話,判斷分鐘時,開始分鐘大于結束分鐘不太好判斷吧,比如9:35-16:20

要先判斷時針,這樣就不會出現分鐘大小問題,9:35和16:20的時針不一樣啊
回復

使用道具 舉報

9#
ID:21069 發表于 2020-9-5 09:23 | 只看該作者
你將(時間取值)&&(分鐘取值)調出來判斷就行了
回復

使用道具 舉報

10#
ID:740383 發表于 2020-9-5 09:59 | 只看該作者
心有浮生 發表于 2020-9-5 08:41
要先判斷時針,這樣就不會出現分鐘大小問題,9:35和16:20的時針不一樣啊

大佬,有沒有個模板給小弟呀小弟我新手,謝謝大佬
回復

使用道具 舉報

11#
ID:740383 發表于 2020-9-5 10:00 | 只看該作者
wulin 發表于 2020-9-4 20:41
可以把小時*60化為分計算

        unsigned int min_m;

大佬,按照你的思路這樣可否行:
        uchar NOWtime,Time_work,Time_pause;
        uchar TimerAry_work[8]={20,20,5,21,9,20,52,2};
        uchar TimerAry_pause[8]={20,20,5,21,16,35,52,2};
        Time_work=TimerAry_work[4]*60+TimerAry_work[5];
        Time_pause=TimerAry_pause[4]*60+TimerAry_pause[5];
        NOWtime=TimeArray[4]*60+TimeArray[5];
        if((NOWtime>=Time_work) && (NOWtime<=Time_pause))   //9:20到16:35之間LED被點亮
        {
                LED=1;//任務
        }
        else
        {
                LED=0;
        }
運行的時候好像有點出錯
回復

使用道具 舉報

12#
ID:740383 發表于 2020-9-5 10:02 | 只看該作者
Y_G_G 發表于 2020-9-5 08:17
這到底是有多難呢?
首先,要看你的時間是怎么走的了
如果是定時器累加的形式走的的,比如,是從早上8:0 ...

大佬,小弟新手,我用DS1302時鐘芯片的,有沒有模板呀,小弟參考參考寫個大概就好了
回復

使用道具 舉報

13#
ID:740383 發表于 2020-9-5 11:06 | 只看該作者
jinsheng7533967 發表于 2020-9-5 09:23
你將(時間取值)&&(分鐘取值)調出來判斷就行了

TimeArray[4]、TimeArray[5]//現在時間的時和分:
是這樣判斷嗎,但是感覺怪怪的
uchar TimerAry_work[8]={20,20,5,21,9,35,52,2};
  uchar TimerAry_pause[8]={20,20,5,21,16,20,52,2};
        if((TimeArray[4]>=TimerAry_work[4])&&(TimeArray[4]<=TimerAry_pause[4]))   //9:35到16:20之間LED被點亮
        {
                if((TimeArray[5]>=TimerAry_work[5])&&(TimeArray[5]<=TimerAry_pause[5]))
                {
                        LED=1;//任務
                }
                else
                {
                        LED=0;
                }
        }
回復

使用道具 舉報

14#
ID:213173 發表于 2020-9-5 11:32 | 只看該作者
danq 發表于 2020-9-5 10:00
大佬,按照你的思路這樣可否行:
        uchar NOWtime,Time_work,Time_pause;
        uchar TimerAry_work[ ...

uchar NOWtime,Time_work,Time_pause;變量實際大小已經超出uchar數據范圍255,要用unsigned int  定義變量。數據溢出肯定要出錯。這個方法肯定沒有問題。另外還有一種算法,變量不會大于255:
        static bit a,b,c;
        if(hour==9 && min==20)//9:20
                a=1;
        if(hour==16 && min==35)//16:35
                b=1;
        c=a^b;
        if(c){/*任務*/}//9:20到16:35之間       
        else {a=0;b=0;}//復位
回復

使用道具 舉報

15#
ID:471066 發表于 2020-9-5 12:41 | 只看該作者
多試試幾次。別人給有思路你應該明白了,就看你的動手能力了!加油!
回復

使用道具 舉報

16#
ID:740383 發表于 2020-9-5 13:36 | 只看該作者
wulin 發表于 2020-9-5 11:32
uchar NOWtime,Time_work,Time_pause;變量實際大小已經超出uchar數據范圍255,要用unsigned int  定義變 ...

謝謝大佬,我去試試
回復

使用道具 舉報

17#
ID:740383 發表于 2020-9-5 13:36 | 只看該作者
#include51.h 發表于 2020-9-5 12:41
多試試幾次。別人給有思路你應該明白了,就看你的動手能力了!加油!

謝謝
回復

使用道具 舉報

18#
ID:401564 發表于 2020-9-5 13:49 | 只看該作者
danq 發表于 2020-9-5 10:02
大佬,小弟新手,我用DS1302時鐘芯片的,有沒有模板呀,小弟參考參考寫個大概就好了

用DS1302就沒有必要轉換什么了呀
直接比較不就可以了嗎?
讀取小時,然后和設定好的小時"9"和"16"進行比較,只要有一個是相等的,就去比較分"20"和"35"
你都用到DS1302了,你不會連兩個數是不是相等的都不會吧???
回復

使用道具 舉報

19#
ID:740383 發表于 2020-9-5 15:27 | 只看該作者
Y_G_G 發表于 2020-9-5 13:49
用DS1302就沒有必要轉換什么了呀
直接比較不就可以了嗎?
讀取小時,然后和設定好的小時"9"和"16"進行比 ...

哈哈,大佬我是新手,DS1302也不是很熟練
回復

使用道具 舉報

20#
ID:798185 發表于 2020-9-5 16:06 | 只看該作者
利用定時器模擬一個時鐘,定兩個鬧鐘,到時鐘為9:20開始執行,時鐘為16:35結束任務。emmm可能就是計時時間比較久。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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