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

標(biāo)題: 求一個(gè)定時(shí)判斷程序的編程思路 [打印本頁]

作者: danq    時(shí)間: 2020-9-4 17:36
標(biāo)題: 求一個(gè)定時(shí)判斷程序的編程思路
求一個(gè)定時(shí)判斷程序:
比如:早上9:20,到下午16:35,即判斷時(shí)也判斷分,定時(shí)期間執(zhí)行其他函數(shù)判斷;
只求一個(gè)判斷思路;求大神
小弟這幾天腦闊疼
求大神引路!!!

作者: ccdmcu    時(shí)間: 2020-9-4 18:00
看不懂你想表達(dá)什么
作者: 心有浮生    時(shí)間: 2020-9-4 18:13
定時(shí)器先判斷時(shí)鐘,如果時(shí)鐘一樣就判斷分鐘
作者: wulin    時(shí)間: 2020-9-4 20:41
可以把小時(shí)*60化為分計(jì)算

        unsigned int min_m;

        min_m=hour*60+min;
       
        if(min_m>=560 && min_m<=995)//9:20到16:35之間
        {
                //任務(wù)
        }
作者: danq    時(shí)間: 2020-9-4 23:57
wulin 發(fā)表于 2020-9-4 20:41
可以把小時(shí)*60化為分計(jì)算

        unsigned int min_m;

謝謝大佬,這個(gè)思路真是太棒了
作者: danq    時(shí)間: 2020-9-5 00:01
心有浮生 發(fā)表于 2020-9-4 18:13
定時(shí)器先判斷時(shí)鐘,如果時(shí)鐘一樣就判斷分鐘

這樣子判斷的話,判斷分鐘時(shí),開始分鐘大于結(jié)束分鐘不太好判斷吧,比如9:35-16:20
作者: Y_G_G    時(shí)間: 2020-9-5 08:17
這到底是有多難呢?
首先,要看你的時(shí)間是怎么走的了
如果是定時(shí)器累加的形式走的的,比如,是從早上8:00開始計(jì)時(shí),到了9:00就走了一個(gè)小時(shí)的話,這種形式的話就按前面說的,把時(shí)間換算成分來進(jìn)行比較不就可以了嗎?
但如果是像DS1302這種時(shí)鐘芯片提供的時(shí)間,那就先比較小時(shí),再比較分,兩者相同就行了,不存在什么大于什么的問題
作者: 心有浮生    時(shí)間: 2020-9-5 08:41
danq 發(fā)表于 2020-9-5 00:01
這樣子判斷的話,判斷分鐘時(shí),開始分鐘大于結(jié)束分鐘不太好判斷吧,比如9:35-16:20

要先判斷時(shí)針,這樣就不會(huì)出現(xiàn)分鐘大小問題,9:35和16:20的時(shí)針不一樣啊
作者: jinsheng7533967    時(shí)間: 2020-9-5 09:23
你將(時(shí)間取值)&&(分鐘取值)調(diào)出來判斷就行了
作者: danq    時(shí)間: 2020-9-5 09:59
心有浮生 發(fā)表于 2020-9-5 08:41
要先判斷時(shí)針,這樣就不會(huì)出現(xiàn)分鐘大小問題,9:35和16:20的時(shí)針不一樣啊

大佬,有沒有個(gè)模板給小弟呀小弟我新手,謝謝大佬
作者: danq    時(shí)間: 2020-9-5 10:00
wulin 發(fā)表于 2020-9-4 20:41
可以把小時(shí)*60化為分計(jì)算

        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被點(diǎn)亮
        {
                LED=1;//任務(wù)
        }
        else
        {
                LED=0;
        }
運(yùn)行的時(shí)候好像有點(diǎn)出錯(cuò)
作者: danq    時(shí)間: 2020-9-5 10:02
Y_G_G 發(fā)表于 2020-9-5 08:17
這到底是有多難呢?
首先,要看你的時(shí)間是怎么走的了
如果是定時(shí)器累加的形式走的的,比如,是從早上8:0 ...

大佬,小弟新手,我用DS1302時(shí)鐘芯片的,有沒有模板呀,小弟參考參考寫個(gè)大概就好了
作者: danq    時(shí)間: 2020-9-5 11:06
jinsheng7533967 發(fā)表于 2020-9-5 09:23
你將(時(shí)間取值)&&(分鐘取值)調(diào)出來判斷就行了

TimeArray[4]、TimeArray[5]//現(xiàn)在時(shí)間的時(shí)和分:
是這樣判斷嗎,但是感覺怪怪的
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被點(diǎn)亮
        {
                if((TimeArray[5]>=TimerAry_work[5])&&(TimeArray[5]<=TimerAry_pause[5]))
                {
                        LED=1;//任務(wù)
                }
                else
                {
                        LED=0;
                }
        }
作者: wulin    時(shí)間: 2020-9-5 11:32
danq 發(fā)表于 2020-9-5 10:00
大佬,按照你的思路這樣可否行:
        uchar NOWtime,Time_work,Time_pause;
        uchar TimerAry_work[ ...

uchar NOWtime,Time_work,Time_pause;變量實(shí)際大小已經(jīng)超出uchar數(shù)據(jù)范圍255,要用unsigned int  定義變量。數(shù)據(jù)溢出肯定要出錯(cuò)。這個(gè)方法肯定沒有問題。另外還有一種算法,變量不會(huì)大于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){/*任務(wù)*/}//9:20到16:35之間       
        else {a=0;b=0;}//復(fù)位
作者: #include51.h    時(shí)間: 2020-9-5 12:41
多試試幾次。別人給有思路你應(yīng)該明白了,就看你的動(dòng)手能力了!加油!
作者: danq    時(shí)間: 2020-9-5 13:36
wulin 發(fā)表于 2020-9-5 11:32
uchar NOWtime,Time_work,Time_pause;變量實(shí)際大小已經(jīng)超出uchar數(shù)據(jù)范圍255,要用unsigned int  定義變 ...

謝謝大佬,我去試試
作者: danq    時(shí)間: 2020-9-5 13:36
#include51.h 發(fā)表于 2020-9-5 12:41
多試試幾次。別人給有思路你應(yīng)該明白了,就看你的動(dòng)手能力了!加油!

謝謝
作者: Y_G_G    時(shí)間: 2020-9-5 13:49
danq 發(fā)表于 2020-9-5 10:02
大佬,小弟新手,我用DS1302時(shí)鐘芯片的,有沒有模板呀,小弟參考參考寫個(gè)大概就好了

用DS1302就沒有必要轉(zhuǎn)換什么了呀
直接比較不就可以了嗎?
讀取小時(shí),然后和設(shè)定好的小時(shí)"9"和"16"進(jìn)行比較,只要有一個(gè)是相等的,就去比較分"20"和"35"
你都用到DS1302了,你不會(huì)連兩個(gè)數(shù)是不是相等的都不會(huì)吧???
作者: danq    時(shí)間: 2020-9-5 15:27
Y_G_G 發(fā)表于 2020-9-5 13:49
用DS1302就沒有必要轉(zhuǎn)換什么了呀
直接比較不就可以了嗎?
讀取小時(shí),然后和設(shè)定好的小時(shí)"9"和"16"進(jìn)行比 ...

哈哈,大佬我是新手,DS1302也不是很熟練
作者: 15603380937    時(shí)間: 2020-9-5 16:06
利用定時(shí)器模擬一個(gè)時(shí)鐘,定兩個(gè)鬧鐘,到時(shí)鐘為9:20開始執(zhí)行,時(shí)鐘為16:35結(jié)束任務(wù)。emmm可能就是計(jì)時(shí)時(shí)間比較久。




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