51單片機(jī)邊沿觸發(fā)中斷響應(yīng)時(shí)刻的測量
mcs51單片機(jī)系列屬于8位單片機(jī),它是intel公司繼mcs48系列的成功設(shè)計(jì)之后,于1980年推出的產(chǎn)品。由于mcs51系列具有很強(qiáng)的片內(nèi)功能和指令系統(tǒng),因而使單片機(jī)的應(yīng)用發(fā)生了一個(gè)飛躍,這個(gè)系列的產(chǎn)品也很快成為世界上第二代的標(biāo)準(zhǔn)控制器。51系列單片機(jī)有5個(gè)中斷源,其中有2個(gè)是外部輸入中斷源int0和int1??捎芍袛嗫刂萍拇嫫鱰con的it1(tcon.2)和it0(tcon.1)分別控制外部輸入中斷1和中斷0的中斷觸發(fā)方式。若為0,則外部輸入中斷控制為電平觸發(fā)方式;若為1,則控制為邊沿觸發(fā)方式。這里是下降沿觸發(fā)中斷。
本文引用地址:http://m.butianyuan.cn/article/21416.htm1 問題的引出
幾乎國內(nèi)所有的單片機(jī)資料對(duì)單片機(jī)邊沿觸發(fā)中斷的響應(yīng)時(shí)刻方面的定義都是不明確的或者是錯(cuò)誤的。例如文獻(xiàn)[1]中關(guān)于邊沿觸發(fā)中斷響應(yīng)時(shí)刻的描述為“對(duì)于脈沖觸發(fā)方式(即邊沿觸發(fā)方式)要檢測兩次電平,若前一次為高電平,后一次為低電平,則表示檢測到了負(fù)跳變的有效中斷請(qǐng)求信號(hào)”,但實(shí)際情況卻并非如此。
我們知道,單片機(jī)外部輸入的中斷觸發(fā)電平是ttl電平。對(duì)于ttl電平,ttl邏輯門輸出高電平的允許范圍為2.4~5 v,其標(biāo)稱值為3.6 v;輸出低電平的允許范圍為0~0.7 v,其標(biāo)稱值為0.3 v[2],在0.7 v與2.4 v之間的是非高非低的中間電平。
這樣,在實(shí)際應(yīng)用中,假設(shè)單片機(jī)外部中斷引腳int0輸入一路由+5 v下降到0 v的下降沿信號(hào),單片機(jī)在某個(gè)時(shí)鐘周期采樣int0引腳得到2.4 v的高電平;而在下一個(gè)時(shí)鐘周期到來進(jìn)行采樣時(shí),由于實(shí)際的外部輸入中斷觸發(fā)信號(hào)由高電平變?yōu)榈碗娖酵枰欢ǖ臅r(shí)間,因此,檢測到的可能并非真正的低電平(小于0.7 v),而是處于低電平與高電平之間的某一中間電平,即0.7~2.4 v的某一電平。對(duì)于這種情況,單片機(jī)是否會(huì)依然置位中斷觸發(fā)標(biāo)志從而引發(fā)中斷呢?關(guān)于這一點(diǎn),國內(nèi)的絕大部分教材以及單片機(jī)生產(chǎn)商提供的器件資料都沒有給予準(zhǔn)確的定義,但在實(shí)際應(yīng)用中這種情況確實(shí)會(huì)碰到。
以美國analog公司生產(chǎn)的運(yùn)算放大器芯片ad708為例,其轉(zhuǎn)換速率(slew rate)為0.3 v/μs,在由ad708芯片組成的比較器電路中,其輸出方波的下降沿由2.4 v下降到0.7 v,所需時(shí)間約為: (2.4 v-0.7 v)/0.3v·μs-1=4.67 μs。即需要約4.67 μs的過渡時(shí)間,下降沿才真正地由高電平下降為低電平,在實(shí)際應(yīng)用電路中,這個(gè)下降時(shí)間往往可達(dá)10 μs以上。對(duì)于精密的測量系統(tǒng),這么長的不確定時(shí)間是無法接受的,因此,有必要對(duì)單片機(jī)邊沿中斷觸發(fā)時(shí)刻進(jìn)行精確的測定。
2 測試波形的設(shè)計(jì)與分析
為了測定mcs51單片機(jī)下降沿觸發(fā)的實(shí)際時(shí)刻,使用agilent公司生產(chǎn)的型號(hào)為33250a的80 mhz函數(shù)/任意波形發(fā)生器(function/arbitrary waveform generator),產(chǎn)生出如圖1所示的周期為20 ms的周期波形。
圖1 周期為20 ms的周期波形 將該波形通過單片機(jī)的外部中斷0輸入,可以測出下降沿中斷觸發(fā)的實(shí)際時(shí)刻,下面對(duì)該波形進(jìn)行具體分析。建立如圖2所示的直角坐標(biāo)。
圖2 建立的直角坐標(biāo)設(shè) 圖2所示波形的周期為t,單片機(jī)在電壓下降到y(tǒng)=y′時(shí)刻觸發(fā)中斷,t1′、t2′、t3′分別為前后周期的中斷觸發(fā)時(shí)刻,則有:
求得l1方程為:
求得l2方程為:
由圖2所示的電路及式(1)、式(2)、式(3),可求得:
將以上波形由單片機(jī)外部中斷0輸入,選擇邊沿觸發(fā)方式,通過中斷服務(wù)程序測取t1或者t2的值,從而可求出中斷發(fā)生時(shí)刻的電平值y′,即邊沿觸發(fā)中斷的實(shí)際時(shí)刻。
在使用單片機(jī)對(duì)中斷時(shí)刻進(jìn)行測量時(shí),使用兩個(gè)計(jì)數(shù)器,均設(shè)為方式1(16位計(jì)數(shù)方式)。其中,第一個(gè)計(jì)數(shù)器用于記錄從程序開始執(zhí)行到第一個(gè)下降沿到來所經(jīng)歷的時(shí)間,第二個(gè)計(jì)數(shù)器用來記錄程序開始執(zhí)行到第二個(gè)下降沿到來所經(jīng)歷的時(shí)間,將兩個(gè)計(jì)數(shù)器的計(jì)數(shù)值相減便可以得到兩個(gè)下降沿之間的時(shí)間間隔。由前面的分析可知,該時(shí)間間隔可能有兩種情況: 一種是t1時(shí)間,即t1′與t2′之間的時(shí)間間隔;另一種是t2時(shí)間,即t2′與t3′之間的時(shí)間間隔。其中,t1+t2=t,t1時(shí)間要小于t2時(shí)間。通過測量得到t1或者t2時(shí)間,利用式(4)便可求得下降沿觸發(fā)中斷時(shí)刻的實(shí)際電平。
3 測試流程和相應(yīng)的單片機(jī)程序
該單片機(jī)的中斷服務(wù)程序流程如圖3所示。
圖3 中斷服務(wù)程序流程 相應(yīng)的中斷服務(wù)程序?yàn)椋?
incr1
mova,r1
cjnea,#01h,sec
clrtr0
mov20h,tl0
mov21h,th0
clrie0
reti
sec:clrtr1
mov22h,tl1
mov23h,th1
clrex1
clrex0
reti
由于程序執(zhí)行有一定的延時(shí),在中斷返回后,還需對(duì)兩個(gè)計(jì)數(shù)器的輸出值進(jìn)行校正。本實(shí)驗(yàn)采用偉福公司生產(chǎn)的h51/l仿真器為單片機(jī)測量系統(tǒng),測得t1值為6.514 ms,由式(4)可得:y′=0.729 v,即當(dāng)y′約為0.73 v時(shí),單片機(jī)下降沿觸發(fā)中斷。
4 結(jié)論
本文通過設(shè)計(jì)一簡單的波形,對(duì)單片機(jī)的邊沿觸發(fā)中斷響應(yīng)時(shí)刻進(jìn)行了準(zhǔn)確的測量,從而糾正了國內(nèi)單片機(jī)學(xué)習(xí)資料在邊沿觸發(fā)中斷時(shí)刻方面的不明確定義,且最終結(jié)果經(jīng)過了實(shí)驗(yàn)驗(yàn)證。
評(píng)論