8051定時器應用

2021-05-25 05:00:07 字數 849 閱讀 6304

8051系列微控制器中的定時器如何用來測量外部脈衝的週期。

有看到過相關資料談及使用定時器來測量外部脈衝的週期,但不夠詳細,這次在試驗的過程中遇到乙個類似的問題,

在教科書上只是簡單提及,究竟怎麼樣使用,沒有詳細說明,

使用方法也不難,要使用定時器來測量外部脈衝的週期,首先對定時器初始化,方式選擇依據你的實際要求選擇方式1或2;然後gate位置1,表示由外部中斷引腳int0的高低電平控制定時器0的啟動和停止,int0為高電平啟動定時器計數,int0為低電平時停止計數;c/t還是設為0,即作定時器使用,th0,tl0的初值設為0;並允許中斷,初始化函式如下:

void init_time0()

tmod = 0x9;

th0 = tl0 = 0;

ea = et0 = tr0 = 1;

定時器選擇方式1,最大計時時間為65.536ms。如果脈衝週期超過這個時間則要注意溢位的情況。出現溢位的時候,就產生中斷:

void int_time0() interrupt 1

boverflow = 1;

over_times++;   //  溢位次數統計

當外部脈衝有高電平變化為低電平時,產生外部中斷0,在外部中斷0中結束計算計時時間

void int_ext0() interrupt 0

long x =   th0*256 + tl0;

if(boverflow)

boverflow = 0;

x += over_times * 65536;

要使用外部中斷0,還要對它初始化操作

void init_ext0()

ex0 = 1;

it0 = 1;   //  下降沿觸發方式

定時器應用

本文屬於定時器的應用部分,分別用於實現與時間相關的四個應用,包括時鐘 倒計時 秒錶和鬧鐘。與時間相關需要用到時間和日期物件date,可自行查閱。開啟定時器 setinterval 函式,時間 間隔型 function show setinterval show,1000 每隔1000毫秒執行一次sh...

VC 定時器應用

目前做的專案其中有兩個功能 選單 是 1 載入 exi檔案 已實現 2 載入 profile 檔案 要實現 其中 profile 檔案中有描述 exi檔案的資訊,試圖在載入 profile 時,也要載入 exi檔案。其中載入 exi檔案的內容已經實現了,它彈出 載入 exi檔案對話方塊 在對話方塊中...

定時器的應用

timertask類 new timer schedule new timertask 3000 過多少時間再執行run方法 單位是毫秒 5000,3000 先過5秒執行一次,之後3秒迴圈執行一次 有時候可能會碰到一些需求,要你先2秒執行一次,再之後4秒執行一次,再之後2秒執行一次,再之後4秒執行一...