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秒執行一...