當前位置:首頁 » 編程軟體 » 編程定時器

編程定時器

發布時間: 2022-07-31 17:48:11

⑴ 定時器編程

#include<reg52.h>
sbit light=P2^0;
unsigned char flag;
void main()
{
EA=1;
ET0=1;
TMOD=0x01;//定時器工作在1方式
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TR0=1;
while(1)
{
if(flag==1)
{
light=0;
}
}
}
void timer() interrupt 0
{
unsigned char i,j;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
i++;
if(i==20)
{
i=0;
j++;
if(j==99) flag=1;
}

}

⑵ 可編程定時器的介紹

可編程定時器又簡稱為「可編定時器」(programmable timer),使用者可以通過手動設置預置編程指令並根據對時鍾脈沖累積計時的一種定時器。值得一提的是,現在的可編程定時器越來越趨向與家庭使用,目前也有很多企業開始開發另類可編程定時器,像加入防雷這樣的技術措施,對電流緩沖最了一定的處理使得可編程定時器能更好的保護好其連接的設備1。

⑶ 定時器/計時器在編程中要(_)(_)(_)等三個步驟。

SetTimer函數的用法
1 )用WM_TIMER來設置定時器

先請看SetTimer這個API函數的原型

UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定時器ID,多個定時器時,可以通過該ID判斷是哪個定時器
UINT uElapse, // 時間間隔,單位為毫秒
TIMERPROC lpTimerFunc // 回調函數
);

例如
SetTimer(m_hWnd,1,1000,NULL); //一個1秒觸發一次的定時器
在MFC程序中SetTimer被封裝在CWnd類中,調用就不用指定窗口句柄了

於是SetTimer函數的原型變為:

UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD))

當使用SetTimer函數的時候,就會生成一個計時器。函數中nIDEvent指的是計時器的標識,也就是名字。nElapse指的是時間間隔,
也就是每隔多長時間觸發一次事件。第三個參數是一個回調函數,在這個函數里,放入你想要做的事情的代碼,你可以將它設定為NULL,
也就是使用系統默認的回調函數,系統默認認的是onTime函數。這個函數怎麼生成的呢?你需要在需要計時器的類的生成onTime函數:
在ClassWizard里,選擇需要計時器的類,添加WM_TIME消息映射,就自動生成onTime函數了。然後在函數里添加代碼,讓代碼實現功能。
每隔一段時間就會自動執行一次。

例:

SetTimer(1,1000,NULL);

1:計時器的名稱;

1000:時間間隔,單位是毫秒;

NULL:使用onTime函數。

當不需要計時器的時候調用KillTimer(nIDEvent);

例如:KillTimer(1);

2) 調用回調函數

此方法首先寫一個如下格式的回調函數

void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);
然後再用SetTimer(1,100,TimerProc)函數來建一個定時器,第三個參數就是回調函數地址。

二. 或許你會問,如果我要加入兩個或者兩個以上的 timer怎麼辦?

繼續用SetTimer函數吧,上次的timer的ID是1,這次可以是2,3,4。。。。

SetTimer(2,1000,NULL);

SetTimer(3,500,NULL);

嗯,WINDOWS會協調他們的。當然onTimer函數體也要發生變化,要在函數體內添加每一個timer的處理代碼:

onTimer(nIDEvent)

{
switch(nIDEvent)

{
case 1:........;
break;
case 2:.......;
break;
case 3:......;
break;
}
}

⑷ 可編程式電子定時器怎麼調定時

定時器調時間的方法:

調整星期:先按下【時鍾】鍵,再按下【星期】鍵,調整到當前星期值。

調整小時:先按下【時鍾】鍵,再按下【小時】鍵,調整到當前小時值。

請在本產品的外部也採取安全措施,使本產品發生故障或因外部原因發生異常時,系統整體也可安全運轉。

請勿在有可燃性氣體的環境中使用。否則會引起爆炸。

請勿將本產品投入火中,否則會造成電池及電子部件等的破裂。

為防止異常發熱及冒煙,應把有關本產品的保證特性及性能的數值設定為低於規定數值後再使用。

故障現象:

1、如果本開關某一天該開的時間沒開,或者開了以後到關的時間還沒關,那可能是因為作定時設置的「星期」沒調對,請按照"定時設置"中介紹的方法檢查或重調。

2、如果確認「開啟」和「關閉」時間調得完全正確,開關仍然動作不正常,或者不該關的時候被關掉,那可能是因為多餘的幾組開關時間沒有消除,請參照「定時設置」中介紹的方法消除(注意:開關時間顯示「--:--」才能表示消除,不要認為「00:00"表示消除)。

3、如果以上兩條全部正確,而本開關仍然動作不正常,有可能是"自動/手動"鍵被人為動作,檢查"開、自動、關"的標志,將其調到當前時間所處的狀態,再調回到自動位置。

⑸ 可編程定時器的工作原理

可編程定時器是根據時鍾脈沖累積計時的,時鍾脈沖有 1ms、10ms、100ms等不同規格。(定時器的工作過程實際上是對時鍾脈沖計數)因工作需要,定時器除了佔有自己編號的存儲器位外,還佔有一個設定值寄存器(字),一個當前值寄存器(字)。設定值寄存器(字)存儲編程時賦值的計時時間設定值。當前值寄存器記錄計時當前值。這些寄存器為16位二進制存儲器。其最大值乘以定時器的計時單位值即是定時器的最大計時范圍值。定時器滿足計時條件開始計時,當前值寄存器則開始計數,當當前值與設定值相等時定時器動作,起常開觸點接通,常閉觸點斷開,並通過程序作用於控制對象,達到時間控制的目的。定時器相當於繼電器電路中的時間繼電器,可在程序中作延時控制。

⑹ 編程使定時器T1(工作方式6MHZ)定時100ms產生一次中斷,使接在P1.0的發光二極體間隔1s亮1次亮10次停止工作

CLOCK DATA 30H
ORG 0000H ;
LJMP 0030H
ORG 000BH ;
LJMP abc
ORG 0030H
SETB EA ;開啟總中斷
MOV TH0,#3CH ;
MOV TL0,#0B0H
MOV R0,#2
SETB ET0 ;開啟定時器0中斷
SETB TR0 ;啟動定時器T0
SJMP $
ORG 0200H
abc:
MOV TH0,#3CH ;重賦初值
MOV TL0,#0B0H
DJNZ R0,LOOP ;判斷中斷計數器是否到
MOV R0,#2
CPL P1.0 ;P1.0取反

LOOP:
RETI ;中斷返回
END

⑺ 簡述8051單片機定時計數器編程的基本步驟

  1. 設置定時計數器的工作方式。

  2. 給定時器賦初始值:THx 和TLx;

  3. 允許定時器中斷;

  4. 允許全局中斷;

  5. 啟動定製器;

  6. 中斷函數編寫(這個是目的,定時計數最終要干什麼?)

⑻ 台達plc的定時器怎麼編程

台達PLC的T1為100ms時間繼電器,59mX60s=3540s=35400ms,所以直接使用是不行的,因為台達PLC中的常數值最大為32767。

你可用兩個時間繼電器實現,即將59分分開兩部分,如T0為30分,T1為29分:

ld x1

tmr t0 k1800(註:30分鍾)

and t0

tmr t1 k17400(註:29分鍾)

ld t1

out y1

也可用計數器來實現,用T1來執行1分鍾脈沖,用C1來執行分鍾輸出,如:

ld x1

tmr t1 k600

andp t1

cnt c1 k59

ld c1

out y1

⑼ 單片機定時器的使用方法

第一步:設置特殊功能寄存器 TMOD,配置好工作模式。

第二步:設置計數寄存器 TH0 和 TL0 的初值。

第三步:設置 TCON,通過 TR0 置 1 來讓定時器開始計數。

第四步:判斷 TCON 寄存器的 TF0 位,監測定時器溢出情況。

寫程序之前,我們要先來學會計算如何用定時器定時時間。我們的晶振是 11.0592M,時鍾周期就是 1/11059200,機器周期是 12/11059200,假如要定時 20ms,就是 0.02 秒,要經過x 個機器周期得到 0.02 秒,我們來算一下 x*12/11059200=0.02,得到 x= 18432。16 位定時器的溢出值是 65536(因 65535 再加 1 才是溢出),於是我們就可以這樣操作,先給 TH0 和 TL0一個初始值,讓它們經過 18432 個機器周期後剛好達到 65536,也就是溢出,溢出後可以通過檢測 TF0 的值得知,就剛好是 0.02 秒。那麼初值 y = 65536 - 18432 = 47104,轉成 16 進制就是 0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。

這樣 0.02 秒的定時我們就做出來了,細心的同學會發現,如果初值直接給一個 0x0000,一直到 65536 溢出,定時器定時值最大也就是 71ms 左右,那麼我們想定時更長時間怎麼辦呢?用你小學學過的邏輯,倍數關系就可以解決此問題。

好了,我們下面就用程序來實現這個功能。

#include

sbit LED = P0^0;

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

void main(){

unsigned char cnt = 0; //定義一個計數變數,記錄 T0 溢出次數

ENLED = 0; //使能 U3,選擇獨立 LED

ADDR3 = 1;

ADDR2 = 1;

ADDR1 = 1;

ADDR0 = 0;

TMOD = 0x01; //設置 T0 為模式 1

TH0 = 0xB8; //為 T0 賦初值 0xB800

TL0 = 0x00;

TR0 = 1; //啟動 T0

while (1){

if (TF0 == 1){ //判斷 T0 是否溢出

TF0 = 0; //T0 溢出後,清零中斷標志

TH0 = 0xB8; //並重新賦初值

TL0 = 0x00;

cnt++; //計數值自加 1

if (cnt 》= 50){ //判斷 T0 溢出是否達到 50 次

cnt = 0; //達到 50 次後計數值清零

LED = ~LED; //LED 取反:0--》1、1--》0

}

}

}

}

程序中都寫了注釋,結合前幾章學的內容,自己分析一下,不難理解。本程序實現的結果是開發板上最右邊的小燈點亮一秒,熄滅一秒,也就是以 0.5Hz 的頻率進行閃爍

⑽ 51單片機定時器的匯編語言程序編程,

LED BIT P1.0 ;定義LED的引腳
ORG 0000H

LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H ;定時器0工作模式1
MOV TH0,#HIGH(65536-50000) ;初值,50毫秒中斷一次
MOV TL0,#LOW(65536-50000)
SETB TR0 ;啟動定時器
SETB ET0 ;啟動定時器中斷
SETB EA ;開總中斷
MOV R2,#40 ;中斷計數初始值
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E ;R2減到0重新賦值,否則退出
MOV R2,#40
CPL LED ;LED亮滅轉換
T0E:
RETI
END

熱點內容
python27編譯器 發布:2025-02-08 23:29:20 瀏覽:339
如何運行python代碼 發布:2025-02-08 23:28:15 瀏覽:692
新箱子密碼鎖怎麼設置 發布:2025-02-08 23:26:50 瀏覽:147
安卓如何可以看見被撤回的消息 發布:2025-02-08 23:19:17 瀏覽:797
火影忍者競技場腳本 發布:2025-02-08 23:10:18 瀏覽:934
英國訪問學者簽證費用 發布:2025-02-08 23:04:46 瀏覽:926
洛奇合成腳本 發布:2025-02-08 22:57:04 瀏覽:141
linux文件軟鏈接 發布:2025-02-08 22:35:48 瀏覽:773
iphone6s緩存怎麼清理 發布:2025-02-08 22:33:17 瀏覽:928
資料庫系統設計的步驟 發布:2025-02-08 22:11:19 瀏覽:44