MCS51單片機邊沿觸發(fā)中斷響應時刻的測量
摘要: MCS51單片機系列屬于8位單片機,,它是Intel公司繼MCS48系列的成功設計之后,,于1980年推出的產(chǎn)品,。由于MCS51系列具有很強的片內(nèi)功能和指令系統(tǒng),因而使單片機的應用發(fā)生了一個飛躍,,這個系列的產(chǎn)品也很快成為世界上第二代的標準控制器,。51系列單片機有5個中斷源,其中有2個是外部輸入中斷源INT0和INT1,??捎芍袛嗫刂萍拇嫫鱐CON的IT1(TCON.2)和IT0(TCON.1)分別控制外部輸入中斷1和中斷0的中斷觸發(fā)方式。若為0,,則外部輸入中斷控制為電平觸發(fā)方式,;若為1,,則控制為邊沿觸發(fā)方式。這里是下降沿觸發(fā)中斷,。
Abstract:
Key words :
MCS單片機" title="51單片機" target="_blank">51單片機系列屬于8位單片機,,它是Intel公司繼MCS48系列的成功設計之后,于1980年推出的產(chǎn)品,。由于MCS51系列具有很強的片內(nèi)功能和指令系統(tǒng),因而使單片機的應用發(fā)生了一個飛躍,,這個系列的產(chǎn)品也很快成為世界上第二代的標準控制器,。51系列單片機有5個中斷源,其中有2個是外部輸入中斷源INT0和INT1,??捎芍袛嗫刂萍拇嫫鱐CON的IT1(TCON.2)和IT0(TCON.1)分別控制外部輸入中斷1和中斷0的中斷觸發(fā)方式。若為0,,則外部輸入中斷控制為電平觸發(fā)方式,;若為1,則控制為邊沿觸發(fā)方式,。這里是下降沿觸發(fā)中斷,。
1 問題的引出
幾乎國內(nèi)所有的單片機資料對單片機邊沿觸發(fā)中斷的響應時刻方面的定義都是不明確的或者是錯誤的。例如文獻[1]中關于邊沿觸發(fā)中斷響應時刻的描述為“對于脈沖觸發(fā)方式(即邊沿觸發(fā)方式)要檢測兩次電平,,若前一次為高電平,,后一次為低電平,則表示檢測到了負跳變的有效中斷請求信號”,,但實際情況卻并非如此,。
我們知道,單片機外部輸入的中斷觸發(fā)電平是TTL電平。對于TTL電平,,TTL邏輯門輸出高電平的允許范圍為2.4~5 V,,其標稱值為3.6 V;輸出低電平的允許范圍為0~0.7 V,,其標稱值為0.3 V[2],,在0.7 V與2.4 V之間的是非高非低的中間電平。
這樣,,在實際應用中,,假設單片機外部中斷引腳INT0輸入一路由+5 V下降到0 V的下降沿信號,單片機在某個時鐘周期采樣INT0引腳得到2.4 V的高電平,;而在下一個時鐘周期到來進行采樣時,,由于實際的外部輸入中斷觸發(fā)信號由高電平變?yōu)榈碗娖酵枰欢ǖ臅r間,因此,,檢測到的可能并非真正的低電平(小于0.7 V),,而是處于低電平與高電平之間的某一中間電平,,即0.7~2.4 V的某一電平。對于這種情況,,單片機是否會依然置位中斷觸發(fā)標志從而引發(fā)中斷呢,?關于這一點,國內(nèi)的絕大部分教材以及單片機生產(chǎn)商提供的器件資料都沒有給予準確的定義,,但在實際應用中這種情況確實會碰到,。
以美國Analog公司生產(chǎn)的運算放大器芯片AD708為例,其轉換速率(slew rate)為0.3 V/μs,在由AD708芯片組成的比較器電路中,,其輸出方波的下降沿由2.4 V下降到0.7 V,,所需時間約為: (2.4 V-0.7 V)/0.3V·μs-1=4.67 μs。即需要約4.67 μs的過渡時間,,下降沿才真正地由高電平下降為低電平,,在實際應用電路中,這個下降時間往往可達10 μs以上,。對于精密的測量系統(tǒng),,這么長的不確定時間是無法接受的,因此,,有必要對單片機邊沿中斷觸發(fā)時刻進行精確的測定,。
2 測試波形的設計與分析
為了測定MCS51單片機下降沿觸發(fā)的實際時刻,使用Agilent公司生產(chǎn)的型號為33250A的80 MHz函數(shù)/任意波形發(fā)生器(function/arbitrary waveform generator),產(chǎn)生出如圖1所示的周期為20 ms的周期波形,。
將該波形通過單片機的外部中斷0輸入,,可以測出下降沿中斷觸發(fā)的實際時刻,下面對該波形進行具體分析,。建立如圖2所示的直角坐標,。
圖2所示波形的周期為T,單片機在電壓下降到y(tǒng)=y′時刻觸發(fā)中斷,,t1′,、t2′、t3′分別為前后周期的中斷觸發(fā)時刻,,則有:
求得L1方程為:
求得L2方程為:
由圖2所示的電路及式(1),、式(2)、式(3),,可求得:
將以上波形由單片機外部中斷0輸入,,選擇邊沿觸發(fā)方式,通過中斷服務程序測取T1或者T2的值,,從而可求出中斷發(fā)生時刻的電平值y′,,即邊沿觸發(fā)中斷的實際時刻。
在使用單片機對中斷時刻進行測量時,使用兩個計數(shù)器,,均設為方式1(16位計數(shù)方式),。其中,第一個計數(shù)器用于記錄從程序開始執(zhí)行到第一個下降沿到來所經(jīng)歷的時間,,第二個計數(shù)器用來記錄程序開始執(zhí)行到第二個下降沿到來所經(jīng)歷的時間,,將兩個計數(shù)器的計數(shù)值相減便可以得到兩個下降沿之間的時間間隔。由前面的分析可知,,該時間間隔可能有兩種情況: 一種是T1時間,,即t1′與t2′之間的時間間隔;另一種是T2時間,,即t2′與t3′之間的時間間隔,。其中,T1+T2=T,,T1時間要小于T2時間,。通過測量得到T1或者T2時間,利用式(4)便可求得下降沿觸發(fā)中斷時刻的實際電平,。
3 測試流程和相應的單片機程序
該單片機的中斷服務程序流程如圖3所示,。
INCR1
MOVA,R1
CJNEA,#01H,SEC
CLRTR0
MOV20H,TL0
MOV21H,TH0
CLRIE0
RETI
SEC:CLRTR1
MOV22H,TL1
MOV23H,TH1
CLREX1
CLREX0
RETI
由于程序執(zhí)行有一定的延時,在中斷返回后,,還需對兩個計數(shù)器的輸出值進行校正,。本實驗采用偉福公司生產(chǎn)的H51/L仿真器為單片機測量系統(tǒng),測得T1值為6.514 ms,,由式(4)可得:y′=0.729 V,,即當y′約為0.73 V時,單片機下降沿觸發(fā)中斷,。
4 結論
本文通過設計一簡單的波形,,對單片機的邊沿觸發(fā)中斷響應時刻進行了準確的測量,從而糾正了國內(nèi)單片機學習資料在邊沿觸發(fā)中斷時刻方面的不明確定義,,且最終結果經(jīng)過了實驗驗證,。
幾乎國內(nèi)所有的單片機資料對單片機邊沿觸發(fā)中斷的響應時刻方面的定義都是不明確的或者是錯誤的。例如文獻[1]中關于邊沿觸發(fā)中斷響應時刻的描述為“對于脈沖觸發(fā)方式(即邊沿觸發(fā)方式)要檢測兩次電平,,若前一次為高電平,,后一次為低電平,則表示檢測到了負跳變的有效中斷請求信號”,,但實際情況卻并非如此,。
我們知道,單片機外部輸入的中斷觸發(fā)電平是TTL電平。對于TTL電平,,TTL邏輯門輸出高電平的允許范圍為2.4~5 V,,其標稱值為3.6 V;輸出低電平的允許范圍為0~0.7 V,,其標稱值為0.3 V[2],,在0.7 V與2.4 V之間的是非高非低的中間電平。
這樣,,在實際應用中,,假設單片機外部中斷引腳INT0輸入一路由+5 V下降到0 V的下降沿信號,單片機在某個時鐘周期采樣INT0引腳得到2.4 V的高電平,;而在下一個時鐘周期到來進行采樣時,,由于實際的外部輸入中斷觸發(fā)信號由高電平變?yōu)榈碗娖酵枰欢ǖ臅r間,因此,,檢測到的可能并非真正的低電平(小于0.7 V),,而是處于低電平與高電平之間的某一中間電平,,即0.7~2.4 V的某一電平。對于這種情況,,單片機是否會依然置位中斷觸發(fā)標志從而引發(fā)中斷呢,?關于這一點,國內(nèi)的絕大部分教材以及單片機生產(chǎn)商提供的器件資料都沒有給予準確的定義,,但在實際應用中這種情況確實會碰到,。
以美國Analog公司生產(chǎn)的運算放大器芯片AD708為例,其轉換速率(slew rate)為0.3 V/μs,在由AD708芯片組成的比較器電路中,,其輸出方波的下降沿由2.4 V下降到0.7 V,,所需時間約為: (2.4 V-0.7 V)/0.3V·μs-1=4.67 μs。即需要約4.67 μs的過渡時間,,下降沿才真正地由高電平下降為低電平,,在實際應用電路中,這個下降時間往往可達10 μs以上,。對于精密的測量系統(tǒng),,這么長的不確定時間是無法接受的,因此,,有必要對單片機邊沿中斷觸發(fā)時刻進行精確的測定,。
2 測試波形的設計與分析
為了測定MCS51單片機下降沿觸發(fā)的實際時刻,使用Agilent公司生產(chǎn)的型號為33250A的80 MHz函數(shù)/任意波形發(fā)生器(function/arbitrary waveform generator),產(chǎn)生出如圖1所示的周期為20 ms的周期波形,。
圖1 周期為20 ms的周期波形
將該波形通過單片機的外部中斷0輸入,,可以測出下降沿中斷觸發(fā)的實際時刻,下面對該波形進行具體分析,。建立如圖2所示的直角坐標,。
圖2 建立的直角坐標設
圖2所示波形的周期為T,單片機在電壓下降到y(tǒng)=y′時刻觸發(fā)中斷,,t1′,、t2′、t3′分別為前后周期的中斷觸發(fā)時刻,,則有:
求得L1方程為:
求得L2方程為:
由圖2所示的電路及式(1),、式(2)、式(3),,可求得:
將以上波形由單片機外部中斷0輸入,,選擇邊沿觸發(fā)方式,通過中斷服務程序測取T1或者T2的值,,從而可求出中斷發(fā)生時刻的電平值y′,,即邊沿觸發(fā)中斷的實際時刻。
在使用單片機對中斷時刻進行測量時,使用兩個計數(shù)器,,均設為方式1(16位計數(shù)方式),。其中,第一個計數(shù)器用于記錄從程序開始執(zhí)行到第一個下降沿到來所經(jīng)歷的時間,,第二個計數(shù)器用來記錄程序開始執(zhí)行到第二個下降沿到來所經(jīng)歷的時間,,將兩個計數(shù)器的計數(shù)值相減便可以得到兩個下降沿之間的時間間隔。由前面的分析可知,,該時間間隔可能有兩種情況: 一種是T1時間,,即t1′與t2′之間的時間間隔;另一種是T2時間,,即t2′與t3′之間的時間間隔,。其中,T1+T2=T,,T1時間要小于T2時間,。通過測量得到T1或者T2時間,利用式(4)便可求得下降沿觸發(fā)中斷時刻的實際電平,。
3 測試流程和相應的單片機程序
該單片機的中斷服務程序流程如圖3所示,。
圖3 中斷服務程序流程
相應的中斷服務程序為:
INCR1
MOVA,R1
CJNEA,#01H,SEC
CLRTR0
MOV20H,TL0
MOV21H,TH0
CLRIE0
RETI
SEC:CLRTR1
MOV22H,TL1
MOV23H,TH1
CLREX1
CLREX0
RETI
由于程序執(zhí)行有一定的延時,在中斷返回后,,還需對兩個計數(shù)器的輸出值進行校正,。本實驗采用偉福公司生產(chǎn)的H51/L仿真器為單片機測量系統(tǒng),測得T1值為6.514 ms,,由式(4)可得:y′=0.729 V,,即當y′約為0.73 V時,單片機下降沿觸發(fā)中斷,。
4 結論
本文通過設計一簡單的波形,,對單片機的邊沿觸發(fā)中斷響應時刻進行了準確的測量,從而糾正了國內(nèi)單片機學習資料在邊沿觸發(fā)中斷時刻方面的不明確定義,,且最終結果經(jīng)過了實驗驗證,。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載,。