1樓:匿名使用者
其實你開啟了微控制器16位定時器,
來判斷按鍵的中斷的話,
就不需要在呼叫什麼延時程式(函式)了。
方法很簡單,
只要判斷中斷的次數就行了。
因為只要開啟了定時器中斷,
它每隔固定的時間就會響應中斷,
在每次中斷中先判斷按鍵是否按下
然後判斷 是否是按鍵按下的首次中斷
如果是第一次中斷的話,就跳出中斷,繼續等待第二次中斷,判斷按鍵是否依然按下;
如果是第二次中斷的話,按鍵還是按下的話就確定是按鍵按下了;
反之則按鍵沒有按下,這樣就實現了延時去抖動,也就不需要呼叫什麼延時程式了。
系統執行起來比較高效率。
如果按照一樓的老兄所言,這樣的延時程式有何意義?
在中斷中呼叫延時程式,
還不如不啟用定時器!
希望引起大家的思考
希望大家能仔細的看書本
有關按鍵識別的問題如何做才是最高效率的。
(大家可以做實驗來驗證一下,或者是問你們的老師)a,延時去抖動;
b,開啟定時器中斷,週期性掃描按鍵;
c,採用外部中斷,多個按鍵使用多輸入的與(非)門共用這一資源,在外部中斷中去判斷究竟是哪個按鍵按下。
2樓:月下獨酌
tmod=0x11;//設定定時器0為工作方式1th0=(65536-10000)/256;
tl0=(65536-10000)%256;
ea=1;//開總中斷
et0=1;//開定時器0中斷
tr0=1;//啟動定時器0
只要你把這些都設定了 微控制器就自動執行定時器了 差一個都不行去抖動就是檢測到有按鍵的時候調延時程式:
微控制器定時器t0和t1有什麼區別呀?
3樓:匿名使用者
工作方式3不同唄,當m1m0都為1時,為方式3,但僅是適用於t0,t1停止計時;但是(方式0,1,2)t0、t1都是相同的。
4樓:匿名使用者
沒什麼區別,但兩個同時工作是必須要制定優先順序別
5樓:匿名使用者
t0和t1的工作方式0,1,2相同,方式3不同。t0用的是13位計數器(高三位不用),t1用的是16位計數器。所以兩者的最大即使時間不同。
在處理問題時,可先設定一個時間基準,再乘以倍數達到要求。
6樓:匿名使用者
看你用的是什麼微控制器啊,有的微控制器的t0、t1是一樣的,有的就不是,在pdf裡面都有詳細介紹!
7樓:匿名使用者
有區別的,一個是t0 一個t1嗎?嘻嘻嘻。我不懂的 哈哈哈!!!!
51微控制器定時器0工作於方式3此時定時器1工作於方式
做而論道 定時器0工作於方式3 時,佔用了定時器1的tr1和tf0。此時,定時器1只能工作於 串列埠波特率發生器 的模式。把定時器1,按照 波特率發生器 的模式設定,寫入初始值即可正常工作。看看書去吧,有這方面的說明的。 我來回答 定時0工作於方式3分成兩個定時器th0,tl0,佔用了t1的tr1和...
請問,51微控制器我同時把計數器1和定時器0開啟,定時器1計數到255的時候,把TR1 TR0 0都關閉
aimei126良 要看你的定時器的工作方式,初值是多少。好好看看書吧 簡單 計數器1和定時器0都用中斷,tmod 0x61 定時器0方式1,計數器1方式2th0 0xfc 1ms初值 tl0 0x18 1ms初值 th1 0x0 tl1 0x0 et0 1 tr1 1 et1 1 ea 1 whi...
微控制器的定時器計數器以查詢方式工作
都用定時器中斷,然後定時時間20us。p1.0口每經過5箇中斷進行翻轉,p1.1經過6個。這樣能滿足嗎?微控制器的定時器 計數器 以查詢方式工作,在p1.0口線上產生週期為200 s的連續方波,以中斷方式工作,在p1.1口線上產生週期為240 s的連續方波,假設晶振頻率為 12mhz,用組合語言程式...