51單片機(jī)邊沿觸發(fā)和電平觸發(fā)的區(qū)別
51單片機(jī)的外部中斷有兩種觸發(fā)方式可選:電平觸發(fā)和邊沿觸發(fā)。選擇電平觸發(fā)時(shí),單片機(jī)在每個(gè)機(jī)器周期檢查中斷源口線(xiàn),檢測(cè)到低電平,即置位中斷請(qǐng)求標(biāo)志,向CPU請(qǐng)求中斷。選擇邊沿觸發(fā)方式時(shí),單片機(jī)在上一個(gè)機(jī)器周期檢測(cè)到中斷源口線(xiàn)為高電平,下一個(gè)機(jī)器周期檢測(cè)到低電平,即置位中斷標(biāo)志,請(qǐng)求中斷。
這個(gè)原理很好理解。但應(yīng)用時(shí)需要特別注意的幾點(diǎn):
1)電平觸發(fā)方式時(shí),中斷標(biāo)志寄存器不鎖存中斷請(qǐng)求信號(hào)。 也就是說(shuō),單片機(jī)把每個(gè)機(jī)器周期的S5P2采樣到的外部中斷源口線(xiàn)的電平邏輯直接賦值到中斷標(biāo)志寄存器。標(biāo)志寄存器對(duì)于請(qǐng)求信號(hào)來(lái)說(shuō)是透明的。這樣當(dāng)中斷 請(qǐng)求被阻塞而沒(méi)有得到及時(shí)響應(yīng)時(shí),將被丟失。換句話(huà)說(shuō),要使電平觸發(fā)的中斷被CPU響應(yīng)并執(zhí)行,必須保證外部中斷源口線(xiàn)的低電平維持到中斷被執(zhí)行為止。因 此當(dāng)CPU正在執(zhí)行同級(jí)中斷或更高級(jí)中斷期間,產(chǎn)生的外部中斷源(產(chǎn)生低電平)如果在該中斷執(zhí)行完畢之前撤銷(xiāo)(變?yōu)楦唠娖剑┝,那么將得不到響?yīng),就如同 沒(méi)發(fā)生一樣。同樣,當(dāng)CPU在執(zhí)行不可被中斷的指令(如RETI)時(shí),產(chǎn)生的電平觸發(fā)中斷如果時(shí)間太短,也得不到執(zhí)行。
2)邊沿觸發(fā)方式時(shí),中斷標(biāo)志寄存器鎖存了中斷請(qǐng)求。中斷口線(xiàn)上一個(gè)從高到低的跳變將記錄在標(biāo)志寄存器中,直到CPU響應(yīng)并轉(zhuǎn)向該中斷服務(wù)程序時(shí),由硬件自動(dòng)清除。因此當(dāng)CPU正在執(zhí)行同級(jí)中斷(甚至是外部中斷本身)或高級(jí)中斷時(shí),產(chǎn)生的外部中斷(負(fù)跳變)同樣將被記錄在中斷標(biāo)志寄存器中。在該中斷退出后,將被響應(yīng)執(zhí)行。如果你不希望這樣,必須在中斷退出之前,手工清除外部中斷標(biāo)志。
3)中斷標(biāo)志可以手工清除。一個(gè)中斷如果在沒(méi)有得到響應(yīng)之前就已經(jīng)被手工清除,則該中斷將被CPU忽略。就如同沒(méi)有發(fā)生一樣。
4)選擇電平觸發(fā)還是邊沿觸發(fā)方式應(yīng)從系統(tǒng)使用外部中斷的目的上去考慮,而不是如許多資料上說(shuō)的根據(jù)中斷源信號(hào)的特性來(lái)取舍。比如,有的書(shū)上說(shuō)(《KeilC51使用技巧及實(shí)戰(zhàn)》),就有類(lèi)似的觀點(diǎn)。
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ā)中斷。
1、問(wèn)題的引出
幾 乎國(guó)內(nèi)所有的單片機(jī)資料對(duì)單片機(jī)邊沿觸發(fā)中斷的響應(yīng)時(shí)刻方面的定義都是不明確的或者是錯(cuò)誤的。例如文獻(xiàn)[1]中關(guān)于邊沿觸發(fā)中斷響應(yīng)時(shí)刻的描述為“對(duì)于脈 沖觸發(fā)方式(即邊沿觸發(fā)方式)要檢測(cè)兩次電平,若前一次為高電平,后一次為低電平,則表示檢測(cè)到了負(fù)跳變的有效中斷請(qǐng)求信號(hào)”,但實(shí)際情況卻并非如此。
我們知道,單片機(jī)外部輸入的中斷觸發(fā)電平是TTL電平。對(duì)于TTL電平,TTL邏輯門(mén)輸出高電平的允許范圍為2.4~5V,其標(biāo)稱(chēng)值為3.6V;輸出低電平的允許范圍為0~0.7V,其標(biāo)稱(chēng)值為0.3V[2],在0.7V與2.4V之間的是非高非低的中間電平。
這樣,在實(shí)際應(yīng)用中,假設(shè)單片機(jī)外部中斷引腳INT0輸入一路由+5V下降到0V的下降沿信號(hào),單片機(jī)在某個(gè)時(shí)鐘周期采樣INT0引腳得到2.4V的 高電平;而在下一個(gè)時(shí)鐘周期到來(lái)進(jìn)行采樣時(shí),由于實(shí)際的外部輸入中斷觸發(fā)信號(hào)由高電平變?yōu)榈碗娖酵枰欢ǖ臅r(shí)間,因此,檢測(cè)到的可能并非真正的低電平 (小于0.7V),而是處于低電平與高電平之間的某一中間電平,即0.7~2.4V的某一電平。對(duì)于這種情況,單片機(jī)是否會(huì)依然置位中斷觸發(fā)標(biāo)志從而 引發(fā)中斷呢?關(guān)于這一點(diǎn),國(guó)內(nèi)的絕大部分教材以及單片機(jī)生產(chǎn)商提供的器件資料都沒(méi)有給予準(zhǔn)確的定義,但在實(shí)際應(yīng)用中這種情況確實(shí)會(huì)碰到。
以美國(guó)Analog公司生產(chǎn)的運(yùn)算放大器芯片AD708為例,其轉(zhuǎn)換速率(slewrate)為0.3V/μs,在由AD708芯片組成的比較器電路中, 其輸出方波的下降沿由2.4V下降到0.7V,所需時(shí)間約為:(2.4V-0.7V)/0.3V·μs-1=4.67μs。即需要 約4.67μs的過(guò)渡時(shí)間,下降沿才真正地由高電平下降為低電平,在實(shí)際應(yīng)用電路中,這個(gè)下降時(shí)間往往可達(dá)10μs以上。對(duì)于精密的測(cè)量系統(tǒng),這么 長(zhǎng)的不確定時(shí)間是無(wú)法接受的,因此,有必要對(duì)單片機(jī)邊沿中斷觸發(fā)時(shí)刻進(jìn)行精確的測(cè)定。
2、測(cè)試波形的設(shè)計(jì)與分析
為了測(cè)定MCS51單片機(jī)下降沿觸發(fā)的實(shí)際時(shí)刻,使用Agilent公司生產(chǎn)的型號(hào)為33250A的80MHz函數(shù)/任意波形發(fā)生器(function/arbitrarywaveformgenerator),產(chǎn)生出如圖1所示的周期為20ms的周期波形。
圖1周期為20ms的周期波形
將該波形通過(guò)單片機(jī)的外部中斷0輸入,可以測(cè)出下降沿中斷觸發(fā)的實(shí)際時(shí)刻,下面對(duì)該波形進(jìn)行具體分析。建立如圖2所示的直角坐標(biāo)。
圖2建立的直角坐標(biāo)設(shè)
圖2所示波形的周期為T(mén),單片機(jī)在電壓下降到y(tǒng)=y′時(shí)刻觸發(fā)中斷,t1′、t2′、t3′分別為前后周期的中斷觸發(fā)時(shí)刻,則有:
將 以上波形由單片機(jī)外部中斷0輸入,選擇邊沿觸發(fā)方式,通過(guò)中斷服務(wù)程序測(cè)取T1或者T2的值,從而可求出中斷發(fā)生時(shí)刻的電平值y′,即邊沿觸發(fā)中斷的實(shí)際 時(shí)刻。在使用單片機(jī)對(duì)中斷時(shí)刻進(jìn)行測(cè)量時(shí),使用兩個(gè)計(jì)數(shù)器,均設(shè)為方式1(16位計(jì)數(shù)方式)。其中,第一個(gè)計(jì)數(shù)器用于記錄從程序開(kāi)始執(zhí)行到第一個(gè)下降沿到 來(lái)所經(jīng)歷的時(shí)間,第二個(gè)計(jì)數(shù)器用來(lái)記錄程序開(kāi)始執(zhí)行到第二個(gè)下降沿到來(lái)所經(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í)間。通過(guò)測(cè)量得到T1或者T2時(shí)間,利用式(4)便可求得下降沿觸發(fā)中斷時(shí)刻的實(shí)際電平。
3、測(cè)試流程和相應(yīng)的單片機(jī)程序
該單片機(jī)的中斷服務(wù)程序流程如圖3所示。
相應(yīng)的中斷服務(wù)程序?yàn)椋?/p>
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ī)測(cè)量系統(tǒng),測(cè)得T1值為6.514ms,由式(4)可得:y′=0.729V,即當(dāng)y′約為0.73V時(shí),單片機(jī)下降沿觸發(fā)中斷。
編輯:admin 最后修改時(shí)間:2019-09-06