找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1588|回復: 8
收起左側

怎么共用一個定時器調用方法?

[復制鏈接]
ID:686536 發(fā)表于 2022-8-7 14:23 | 顯示全部樓層 |閱讀模式
用一個定時器,一個IO輸出定時,5分鐘輸出高電平,隔1分鐘輸出低電平,再輸出6分鐘高電平,請各大俠指教下!
回復

使用道具 舉報

ID:155507 發(fā)表于 2022-8-7 14:56 | 顯示全部樓層
用一個定時器即可,將定時器設置成標準節(jié)拍,如1MS。需要多少定時時間,在定時器中斷服務程序中計數(shù)就可以了。


http://www.torrancerestoration.com/bbs/forum.p ... 494&pid=1099428
回復

使用道具 舉報

ID:624769 發(fā)表于 2022-8-7 14:57 來自手機 | 顯示全部樓層
這描述也是無敵了,5分鐘輸出高電平,隔一分鐘輸出低電平,那么這隔的一分鐘,io什么狀態(tài)?高阻態(tài)?隨機亂跳?  
回復

使用道具 舉報

ID:1034262 發(fā)表于 2022-8-7 15:33 | 顯示全部樓層
定時器工作于1ms定時,作為系統(tǒng)節(jié)拍。然后再中斷里處理各種定時,年月日時分秒,軟件定時器,隨便整。
回復

使用道具 舉報

ID:686536 發(fā)表于 2022-8-7 16:36 | 顯示全部樓層
188610329 發(fā)表于 2022-8-7 14:57
這描述也是無敵了,5分鐘輸出高電平,隔一分鐘輸出低電平,那么這隔的一分鐘,io什么狀態(tài)?高阻態(tài)?隨機亂跳 ...

輸出高電平5分鐘,再輸出1分鐘低電平,再輸出6分鐘高電平!
回復

使用道具 舉報

ID:686536 發(fā)表于 2022-8-7 20:15 | 顯示全部樓層
188610329 發(fā)表于 2022-8-7 14:57
這描述也是無敵了,5分鐘輸出高電平,隔一分鐘輸出低電平,那么這隔的一分鐘,io什么狀態(tài)?高阻態(tài)?隨機亂跳 ...

輸出高電平5分鐘,再輸出1分鐘低電平,再輸出6分鐘高電平!
回復

使用道具 舉報

ID:123289 發(fā)表于 2022-8-7 22:12 | 顯示全部樓層
很簡單:
在定時中斷服務程序中,多設置幾個變量用于計數(shù),對應計數(shù)1分,5分,6分……,想幾個就幾個。
計數(shù)滿則時間到,該干啥干啥。同時復位計數(shù)值,繼續(xù)計數(shù)。
回復

使用道具 舉報

ID:624769 發(fā)表于 2022-8-8 21:52 | 顯示全部樓層
c511977 發(fā)表于 2022-8-7 20:15
輸出高電平5分鐘,再輸出1分鐘低電平,再輸出6分鐘高電平!

做一個 10ms 的定時中斷,中斷程序大致如下: 因為你具體也沒說清楚,雖然不符合 閉環(huán)邏輯,但是該你參考應該足夠了。

char        T0_Count,Mode_Count,Mode;

void        T0_INT()        interrupt 1
{
        if(++T0_Count == 100)
        {
                T0_Count = 0;
                switch(Mode)
                {
                        case        0:        //初始狀態(tài)
                        IO        = 1;
                        Mode++;
                        break;
                        case        1:
                        if(++Mode_Count==5)       
                        {
                                Mode_Count = 0;
                                IO = 0;
                                Mode++;
                        }
                        break;
                        case        2:
                        if(++Mode_Count==1)
                        {
                                Mode_Count = 0;
                                IO = 1;
                                Mode++;
                        }
                        break;
                        case        3:
                        if(++Mode_Count==6)
                        {
                                Mode_Count = 0;       
                                IO = 0;                        //接下來變啥??
                                Mode++;                        //要不要 Mode = 0? 啥時候閉環(huán)?
                        }
                        break;
               
                }
               
        }
}

大致這樣一個東西。

回復

使用道具 舉報

ID:811253 發(fā)表于 2022-8-10 16:52 | 顯示全部樓層
在定時器里同添加一個變量計時,例如定時器是1MS   假如是500MS低電平  100MS高電平可以這樣寫
cnt++;
if(cnt>=500){
  高電平;
}else {
  低電平;
}
if(cnt>=600)
     cnt = 0;
              
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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