官术网_书友最值得收藏!

2.4 并行與串行通信、中斷、定時(shí)器/計(jì)數(shù)器概述

在設(shè)計(jì)微型計(jì)算機(jī)應(yīng)用系統(tǒng)時(shí),經(jīng)常用到并行通信、串行通信、中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)等概念,在這里先對(duì)這些問題進(jìn)行基本說明。

2.4.1 并行通信與串行通信

計(jì)算機(jī)與外設(shè)之間或計(jì)算機(jī)之間的信息交換或數(shù)據(jù)傳輸稱為通信(Communication)。基本的通信方式有兩種,一種是并行通信,另一種是串行通信。

1.并行通信

并行通信是指數(shù)據(jù)的各位同時(shí)進(jìn)行傳送,如圖2-12 所示。在計(jì)算機(jī)系統(tǒng)中,CPU與存儲(chǔ)器、主機(jī)與打印機(jī)之間的通信,一般采用并行通信。在并行通信中,有多少位數(shù)據(jù),就需要多少條傳輸線,因此傳送速度較快,即在相同傳輸率的情況下,并行通信能夠提供高速、高信息率的傳輸。

圖2-12 并行通信方式示意圖

由于并行通信所需的傳輸線較多,如果傳輸距離增加,傳輸線的開銷會(huì)成為一個(gè)突出的問題,因而并行通信一般用于數(shù)據(jù)傳輸率要求較高、傳輸距離又比較短的場(chǎng)合。

2.串行通信

串行通信是指數(shù)據(jù)一位一位地按順序傳送,如圖2-13所示。串行通信時(shí),要傳送的數(shù)據(jù)或信息必須按一定的格式編碼,然后在單根線上,按一位接一位的先后順序進(jìn)行傳送,發(fā)送完一個(gè)字符,再發(fā)送第二個(gè)。接收數(shù)據(jù)時(shí),每次從單根線上一位接一位地接收信息,再把它們拼成一個(gè)字符,送給CPU做進(jìn)一步處理。

圖2-13 串行通信方式示意圖

串行數(shù)據(jù)傳送的特點(diǎn)是:數(shù)據(jù)傳送按位順序進(jìn)行,最少只需一根傳輸線即可完成,成本低但速度慢。計(jì)算機(jī)與外界的數(shù)據(jù)傳送大多數(shù)是串行的,其傳送的距離可以從幾米到幾千千米。

現(xiàn)在,在數(shù)據(jù)傳輸過程中越來越多地使用串行通信,主要原因是串行通信技術(shù)中的信號(hào)傳輸?shù)母蓴_小。并行傳輸可以同時(shí)傳送多位數(shù)據(jù),數(shù)據(jù)傳送較快,但由于并行電纜的多股線未進(jìn)行單線屏蔽,相互之間的干擾較大,特別是在工作頻率較高時(shí)干擾會(huì)更厲害,因此并行通信的工作頻率一般不高。串行通信是建立在“點(diǎn)對(duì)點(diǎn)”基礎(chǔ)上的,信號(hào)的干擾小,通過提高工作頻率,傳輸能力可以很方便地得到提高。相對(duì)于并行通信,串行通信技術(shù)較容易實(shí)現(xiàn),串行通信電纜即接頭較容易制造,成本低廉。目前大量使用的USB和IEEE 1394接口,更是體現(xiàn)了串行通信的發(fā)展趨勢(shì)。

采用串行通信方式的另一個(gè)出發(fā)點(diǎn)是,有些外設(shè)如調(diào)制解調(diào)器(Modem)、鼠標(biāo)等,本身需要用串行通信方式,因?yàn)檫@些設(shè)備是以串行方式存取數(shù)據(jù)的。

串行通信中的其他問題,如同步與異步、波特率、數(shù)據(jù)傳送方式等,將在下面的相應(yīng)章節(jié)中進(jìn)行說明。

2.4.2 中斷

“中斷”是CPU與外設(shè)交換信息的一種方式。計(jì)算機(jī)引入中斷技術(shù)以后,解決了CPU和外設(shè)之間的速度配合問題,提高了CPU的效率。有了中斷功能,計(jì)算機(jī)可以實(shí)時(shí)處理控制現(xiàn)場(chǎng)瞬時(shí)變化的信息、參數(shù),提高了計(jì)算機(jī)處理故障的能力。因此,計(jì)算機(jī)中斷系統(tǒng)的功能也是鑒別其性能好壞的重要標(biāo)志之一。

中斷方式的接口比查詢方式復(fù)雜,中斷方式的應(yīng)用也比無條件傳送和查詢方式傳送復(fù)雜,因?yàn)橹袛嗟膽?yīng)用既與外部的中斷源有關(guān),也與CPU本身的中斷機(jī)制有關(guān),而且不同的CPU的中斷機(jī)制很不相同。

1.概述

對(duì)于中斷,我們可以舉一個(gè)日常生活中的例子來說明。假如小張正在計(jì)算機(jī)前工作,電話鈴響了,這時(shí)小張放下手中的鼠標(biāo)鍵盤去接電話。通話完畢,再繼續(xù)原來的計(jì)算機(jī)中的工作。這個(gè)例子就表現(xiàn)了中斷及其處理過程:電話鈴聲使小張暫時(shí)中止當(dāng)前的工作,而去處理突發(fā)性的或急需處理的事情(接電話),把實(shí)時(shí)處理的事情處理完畢后,再回頭繼續(xù)做原來的事情,從而可以多任務(wù)并行處理。在這個(gè)例子中,電話鈴聲稱為“中斷請(qǐng)求”,小張暫停當(dāng)前的工作去接電話稱為“中斷響應(yīng)”,接電話的過程就是“中斷處理”。相應(yīng)地,在計(jì)算機(jī)執(zhí)行程序的過程中,由于出現(xiàn)某個(gè)特殊情況(或稱為“事件”),使得暫時(shí)中止現(xiàn)行程序,而轉(zhuǎn)去執(zhí)行這一事件的處理程序,處理完畢之后再回到原來程序的中斷點(diǎn)繼續(xù)向下執(zhí)行,這個(gè)過程就是中斷。

(1)中斷、中斷源與中斷請(qǐng)求

所謂中斷,是指CPU正常運(yùn)行程序時(shí),由于微處理器內(nèi)部事件或外設(shè)請(qǐng)求,引起CPU中止正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行請(qǐng)求中斷的外設(shè)(或內(nèi)部事件)的中斷服務(wù)程序,中斷服務(wù)程序執(zhí)行完畢,再返回被中止的程序。利用中斷可以避免不斷檢測(cè)外設(shè)狀態(tài),提高CPU的效率。

引起中斷的原因,或是能發(fā)出中斷申請(qǐng)的來源,稱為中斷源。中斷源有外部中斷和內(nèi)部中斷,內(nèi)部中斷由程序預(yù)先安排的中斷指令引起,或由于CPU運(yùn)算中產(chǎn)生的某些錯(cuò)誤(如除法出錯(cuò)、運(yùn)算溢出)引起。外部中斷是外設(shè)或協(xié)處理器向CPU發(fā)出的中斷申請(qǐng)引起的,外部中斷又稱為硬件中斷。

中斷源向CPU發(fā)出中斷信號(hào)的過程稱為中斷申請(qǐng)或中斷請(qǐng)求;CPU執(zhí)行中斷服務(wù)程序的過程稱為中斷響應(yīng);為相應(yīng)的中斷源而編寫的程序稱為中斷服務(wù)程序;中斷服務(wù)程序在內(nèi)存中存放的首地址稱為中斷服務(wù)程序入口地址。

(2)可屏蔽中斷與非屏蔽中斷

可屏蔽中斷有時(shí)也稱為直接中斷。屏蔽是指CPU可以不處理的中斷請(qǐng)求。這種屏蔽實(shí)際上是CPU的一種工作方式,可以通過軟件(指令)來設(shè)置,也就是可以通過指令,使CPU或者允許接受中斷請(qǐng)求,或者不接受中斷請(qǐng)求。具體的指令由CPU的指令系統(tǒng)來決定。可屏蔽中斷是最常見的一種中斷方式,所有的微處理器都有這種中斷方式。

對(duì)非屏蔽中斷來說,如果該中斷源申請(qǐng)了中斷,CPU是一定要處理的。CPU不可以也不能用軟件將該中斷屏蔽掉。一般一些緊急的情況,如掉電中斷申請(qǐng),就可以安排為這種中斷方式,以保證緊急情況一定能得到處理。但并不是所有的微處理器的中斷系統(tǒng)都有這種中斷方式,MCS-51單片機(jī)的中斷系統(tǒng)就沒有非屏蔽中斷。

(3)中斷的開放與關(guān)閉

中斷的開放與關(guān)閉,亦稱為開中斷和關(guān)中斷,是指CPU中斷系統(tǒng)的狀態(tài),只有當(dāng)CPU處于開中斷狀態(tài)時(shí),才能接受外部的中斷申請(qǐng)。反之,當(dāng)CPU處于關(guān)中斷狀態(tài)時(shí),則不能接受外部的中斷申請(qǐng)。

CPU具有開中斷和關(guān)中斷狀態(tài),和CPU是否接受屏蔽中斷申請(qǐng)是一致的。當(dāng)CPU處于關(guān)中斷時(shí),也就是對(duì)外實(shí)現(xiàn)了中斷的屏蔽。CPU只有在開中斷的狀態(tài)下,才可以接受屏蔽中斷申請(qǐng)。中斷的開放與關(guān)閉和非屏蔽中斷無關(guān)。

CPU有開中斷狀態(tài)和關(guān)中斷狀態(tài)是中斷系統(tǒng)工作的需要。當(dāng)CPU在開中斷狀態(tài)下接受了一個(gè)外設(shè)的中斷申請(qǐng)時(shí),就應(yīng)該處理這個(gè)外設(shè)要求CPU完成的工作。在此期間,一般來說,CPU不應(yīng)該再去接受其他的中斷申請(qǐng),而是應(yīng)該把中斷關(guān)閉,一心一意地為已接受的中斷申請(qǐng)服務(wù)。而當(dāng)中斷服務(wù)完畢之后,則使中斷開放,以便接受新的中斷申請(qǐng)。所以,開/關(guān)中斷狀態(tài)的存在與設(shè)置是完成中斷系統(tǒng)的工作所不可缺少的。

(4)中斷優(yōu)先級(jí)

當(dāng)有多個(gè)中斷源請(qǐng)求中斷時(shí),中斷系統(tǒng)判別中斷申請(qǐng)的優(yōu)先級(jí),CPU響應(yīng)優(yōu)先級(jí)高的中斷,掛起優(yōu)先級(jí)低的中斷。CPU在運(yùn)行中斷服務(wù)子程序時(shí),若有新的更高優(yōu)先級(jí)的中斷申請(qǐng)進(jìn)入,則CPU要掛起原中斷進(jìn)入更高級(jí)的中斷服務(wù)子程序,實(shí)現(xiàn)中斷嵌套功能。中斷嵌套的示意圖如圖2-14所示。

圖2-14 中斷嵌套示意圖

(5)中斷處理程序

中斷處理程序也稱為中斷服務(wù)程序,是中斷源要求CPU執(zhí)行的功能操作。

2.中斷系統(tǒng)的功能

對(duì)于各種計(jì)算機(jī)系統(tǒng),中斷系統(tǒng)的構(gòu)成差別很大,但都具有如下基本功能:

① 能實(shí)現(xiàn)中斷響應(yīng)、中斷服務(wù)、中斷返回、中斷屏蔽。

② 能實(shí)現(xiàn)中斷優(yōu)先級(jí)排隊(duì)。

③ 能實(shí)現(xiàn)中斷嵌套。

3.中斷處理過程

對(duì)于不同的計(jì)算機(jī),中斷處理的具體過程可能不盡相同,即使是同一臺(tái)計(jì)算機(jī),由于中斷方式的不同(如可屏蔽中斷、非屏蔽中斷等),中斷處理也會(huì)有差別,但是基本的處理過程應(yīng)該是相同的。一個(gè)完整的中斷處理的基本過程應(yīng)包括:中斷請(qǐng)求、中斷優(yōu)先權(quán)判別、中斷響應(yīng)、中斷處理及中斷返回。

(1)中斷請(qǐng)求

中斷請(qǐng)求是中斷源(或者通過接口電路)向CPU發(fā)出信號(hào),要求CPU中斷原來執(zhí)行的程序并為它服務(wù)。中斷請(qǐng)求信號(hào)可能是電平信號(hào),也可能是脈沖信號(hào)。CPU能夠接受的中斷請(qǐng)求信號(hào)則隨CPU而定。

外設(shè)向CPU發(fā)出中斷請(qǐng)求信號(hào)需要兩個(gè)條件:

① 外設(shè)本身的工作已經(jīng)完成,如鍵已按下、光電輸入機(jī)已準(zhǔn)備好數(shù)據(jù)、實(shí)時(shí)時(shí)鐘的定時(shí)時(shí)間已到等,才可向CPU申請(qǐng)中斷。

② 計(jì)算機(jī)系統(tǒng)允許該外設(shè)發(fā)中斷請(qǐng)求信號(hào)。如果系統(tǒng)由于某種原因不允許它發(fā)中斷請(qǐng)求,即使外設(shè)本身的工作已經(jīng)完成并發(fā)出了狀態(tài)信號(hào),對(duì)應(yīng)的I/O接口電路也不發(fā)出中斷請(qǐng)求信號(hào),這稱為接口電路中斷屏蔽或中斷禁止。反之,則稱為接口電路中斷允許或中斷開放。

滿足上述兩個(gè)條件后,中斷源可以向CPU提出中斷請(qǐng)求。但CPU是否響應(yīng)中斷,還取決于它是處在允許中斷狀態(tài)還是處在禁止中斷狀態(tài)。這由CPU內(nèi)部設(shè)置的中斷允許觸發(fā)器控制。中斷允許觸發(fā)器的狀態(tài)由軟件控制,這樣CPU可處在中斷允許狀態(tài)或中斷開放狀態(tài),或可處在中斷屏蔽狀態(tài)或中斷禁止?fàn)顟B(tài)。

(2)中斷優(yōu)先權(quán)判別

一個(gè)計(jì)算機(jī)系統(tǒng)常有多個(gè)中斷源;同一中斷請(qǐng)求引腳也可以接有多個(gè)可以提出中斷請(qǐng)求的外設(shè),如圖2-15 所示。遇到幾個(gè)設(shè)備同時(shí)中斷請(qǐng)求時(shí),CPU先響應(yīng)誰,這就有一個(gè)中斷優(yōu)先權(quán)的問題。

圖2-15 同一中斷源請(qǐng)求引腳有多個(gè)外設(shè)

中斷優(yōu)先權(quán)有3條原則:

① 多個(gè)中斷源同時(shí)申請(qǐng)中斷時(shí),CPU先響應(yīng)優(yōu)先權(quán)高的中斷請(qǐng)求。

② 優(yōu)先權(quán)級(jí)別低的中斷正在處理時(shí),若有級(jí)別高的中斷請(qǐng)求,則在高級(jí)別中斷服務(wù)程序執(zhí)行完后再返回低級(jí)別中斷服務(wù)程序繼續(xù)執(zhí)行,這稱為中斷嵌套。

③ 同級(jí)別或低級(jí)別的中斷源提出中斷請(qǐng)求時(shí),CPU要等到正在處理的中斷服務(wù)程序執(zhí)行完畢返回主程序,并執(zhí)行了主程序的一條指令后,才接著響應(yīng)。

中斷源中斷優(yōu)先權(quán)的高低有的是在計(jì)算機(jī)設(shè)計(jì)、制造時(shí)就規(guī)定了的,例如有的計(jì)算機(jī)規(guī)定掉電、故障處理等中斷請(qǐng)求的優(yōu)先權(quán)級(jí)別高于一般中斷請(qǐng)求。有的是讓用戶自己安排的,這可以采用硬件辦法,也可以采用軟件辦法。例如,將許多會(huì)提出中斷請(qǐng)求的外設(shè)用電路連接成一個(gè)鏈,外設(shè)越排在前面,優(yōu)先權(quán)越高,連成鏈的邏輯電路使排在后面的外設(shè)只有在它前面各外設(shè)均不中斷請(qǐng)求時(shí)才能提出中斷請(qǐng)求,當(dāng)前面的外設(shè)有中斷請(qǐng)求時(shí),將屏蔽后面各外設(shè)的中斷請(qǐng)求或中斷后面外設(shè)原已進(jìn)入的中斷服務(wù)程序。軟件辦法采用查詢手段依次詢問各外設(shè)有未提出中斷請(qǐng)求,如有則轉(zhuǎn)去為該外設(shè)服務(wù),如無則循序詢問下一個(gè)外設(shè),這樣先查詢的外設(shè)優(yōu)先權(quán)高,后查詢的外設(shè)優(yōu)先權(quán)低。

(3)中斷響應(yīng)

如果提出中斷請(qǐng)求的中斷源優(yōu)先權(quán)高,而且接口電路與CPU都中斷開放,CPU將響應(yīng)中斷,自動(dòng)執(zhí)行下列工作:

① 保留斷點(diǎn):中止正在執(zhí)行的程序,并對(duì)斷點(diǎn)進(jìn)行保護(hù),即將斷點(diǎn)地址的值壓入堆棧保存,以便中斷服務(wù)程序執(zhí)行完后能返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行程序。

② 轉(zhuǎn)入中斷服務(wù)程序:將中斷服務(wù)程序的人口地址送入PC,以轉(zhuǎn)到中斷服務(wù)程序。各中斷源要求服務(wù)的內(nèi)容不同,所以要編制不同的中斷服務(wù)程序,它們有不同的入口地址。CPU首先要確定是哪一個(gè)中斷源在申請(qǐng)中斷,然后將對(duì)應(yīng)的入口地址送入PC。

(4)中斷處理

中斷處理也稱為中斷服務(wù),實(shí)際上就是在執(zhí)行中斷服務(wù)程序。在中斷服務(wù)程序中,一般要完成以下工作:

① 保護(hù)現(xiàn)場(chǎng):根據(jù)需要把斷點(diǎn)處有關(guān)寄存器的內(nèi)容推入堆棧保護(hù)。因?yàn)镃PU的寄存器無論是在調(diào)用程序和被調(diào)用程序中都是可以使用的。如果某些寄存器在主程序中已經(jīng)保存了數(shù)據(jù),并且在以后的執(zhí)行中還要繼續(xù)使用,而在中斷服務(wù)程序中也要用到這些寄存器,則原來的數(shù)據(jù)就會(huì)被新的數(shù)據(jù)取代,以后主程序再使用這些數(shù)據(jù)就要出錯(cuò)。

因此,對(duì)于子程序中要使用的寄存器,一般都應(yīng)先推入堆棧加以保護(hù)。具體應(yīng)保護(hù)哪些寄存器的內(nèi)容,則應(yīng)視情況而定。

② 處理開/關(guān)中斷:一般的中斷系統(tǒng)在響應(yīng)中斷后是自動(dòng)關(guān)中斷的,在退出中斷服務(wù)程序前,一定要恢復(fù)到開中斷的狀態(tài),以便CPU在結(jié)束這次中斷處理后,接受和處理其他的中斷申請(qǐng)。

另外,進(jìn)入中斷服務(wù)程序后,需要考慮是否還允許其他中斷源申請(qǐng)中斷。

③ 執(zhí)行中斷服務(wù)程序:中斷服務(wù)的核心就是執(zhí)行中斷服務(wù)程序,對(duì)于程序設(shè)計(jì)者來說,就是要根據(jù)外設(shè)和CPU交換數(shù)據(jù)的要求,編寫中斷服務(wù)程序。

④ 恢復(fù)現(xiàn)場(chǎng):在結(jié)束中斷服務(wù)程序之前,要將推入堆棧保護(hù)的寄存器內(nèi)容,彈出到各自所屬的寄存器,以便回到主程序后,繼續(xù)執(zhí)行原來的程序。

⑤ 結(jié)束中斷服務(wù)程序:中斷服務(wù)程序的最后必須有一條中斷返回指令,用以結(jié)束中斷服務(wù)程序的執(zhí)行。

(5)中斷返回

中斷返回是在中斷服務(wù)程序,用一條返回指令來實(shí)現(xiàn)的。此時(shí),CPU將壓入堆棧保護(hù)的斷點(diǎn)地址彈出到計(jì)數(shù)器PC,從而使CPU繼續(xù)執(zhí)行中斷了的主程序。

2.4.3 定時(shí)器/計(jì)數(shù)器

計(jì)算機(jī)系統(tǒng)在工作過程中都需要時(shí)間基準(zhǔn),尤其是在工業(yè)控制系統(tǒng)中,常常要進(jìn)行定時(shí)或?qū)ν獠渴录挠?jì)數(shù)。定時(shí)器/計(jì)數(shù)器在計(jì)算機(jī)控制系統(tǒng)中有著廣泛的應(yīng)用,它可以在多任務(wù)的分時(shí)系統(tǒng)中提供精確的定時(shí)信號(hào)以實(shí)現(xiàn)各任務(wù)間的切換,如計(jì)算機(jī)實(shí)時(shí)系統(tǒng)中常用定時(shí)對(duì)多個(gè)被控對(duì)象進(jìn)行采樣、處理,或者對(duì)某一工作過程進(jìn)行計(jì)數(shù)等。另外,微機(jī)中系統(tǒng)時(shí)鐘日歷、動(dòng)態(tài)存儲(chǔ)器的刷新及揚(yáng)聲器的工作也需要由定時(shí)器/計(jì)數(shù)器提供時(shí)鐘信號(hào)。

1.定時(shí)和計(jì)數(shù)是同一回事

在微型計(jì)算機(jī)中,定時(shí)和計(jì)數(shù)都是一個(gè)計(jì)數(shù)的問題。

定時(shí)是從某一時(shí)刻開始,經(jīng)過多長(zhǎng)時(shí)間之后干什么;計(jì)數(shù)是從某一時(shí)刻開始,計(jì)滿多少個(gè)數(shù)之后干什么。

對(duì)周期固定信號(hào)的計(jì)數(shù)就轉(zhuǎn)換為定時(shí)。

2.系統(tǒng)定時(shí)的分類

定時(shí)/計(jì)數(shù)的方法歸納起來有兩類,即軟件定時(shí)和硬件定時(shí)。硬件定時(shí)又可分為不可編程的硬件定時(shí)和可編程的硬件定時(shí)。

(1)軟件定時(shí)

若用軟件方法來定時(shí),則一般都根據(jù)所需要的時(shí)間常數(shù)來設(shè)計(jì)一個(gè)延遲子程序,延遲子程序中包含一定的指令,設(shè)計(jì)者要對(duì)這些指令的執(zhí)行時(shí)間進(jìn)行嚴(yán)密的計(jì)算或者精確的測(cè)試,以便確定延遲時(shí)間是否符合要求。軟件定時(shí)方法的優(yōu)點(diǎn)是不需要添加硬件電路,只需編制有關(guān)延時(shí)程序即可。缺點(diǎn)是定時(shí)過程中CPU一直在執(zhí)行該延時(shí)程序,占用了CPU的時(shí)間,降低了CPU的利用率,定時(shí)時(shí)間越長(zhǎng),CPU的開銷越大,而且不能響應(yīng)中斷,否則定時(shí)就不準(zhǔn)確。因此這種方法常用于較短時(shí)間的定時(shí),如用軟件延時(shí)來消除機(jī)械按鍵的抖動(dòng)等。

(2)不可編程的硬件定時(shí)

不可編程的硬件定時(shí)主要是指用單穩(wěn)態(tài)電路或計(jì)數(shù)電路來實(shí)現(xiàn)的延時(shí)和定時(shí)。在單穩(wěn)態(tài)延時(shí)電路中,用一個(gè)脈沖輸入去觸發(fā)一個(gè)單穩(wěn)態(tài)電路,產(chǎn)生一個(gè)持續(xù)時(shí)間間隔恒定的單脈沖。單穩(wěn)態(tài)延時(shí)電路存在時(shí)間常數(shù)由外接的電阻電容值決定而不便加以改變的缺點(diǎn),另外,電路調(diào)試比較麻煩,時(shí)間一長(zhǎng),電阻電容器件老化,電路工作不穩(wěn)定,會(huì)嚴(yán)重影響定時(shí)的準(zhǔn)確度和穩(wěn)定性。常用的不可編程的硬件定時(shí)器如555定時(shí)器。

(3)可編程的硬件定時(shí)

可編程硬件定時(shí),實(shí)際上是一種軟、硬件相結(jié)合的定時(shí)方法,是為了克服單獨(dú)的軟件定時(shí)和硬件定時(shí)的缺點(diǎn),而將定時(shí)電路做成通用的定時(shí)器/計(jì)數(shù)器并集成到一個(gè)硅片上,其定時(shí)參數(shù)和工作方式可用軟件來控制。

這種定時(shí)器/計(jì)數(shù)器芯片可直接對(duì)系統(tǒng)時(shí)鐘進(jìn)行計(jì)數(shù),通過寫入不同的計(jì)數(shù)初值,可方便地改變定時(shí)時(shí)間,且定時(shí)期間不需要CPU的管理,如Intel公司的Intel 8253定時(shí)器/計(jì)數(shù)器。

用可編程定時(shí)器/計(jì)數(shù)器電路進(jìn)行定時(shí)時(shí),先要根據(jù)預(yù)定的定時(shí)時(shí)間,用指令對(duì)定時(shí)器/計(jì)數(shù)器芯片設(shè)定計(jì)數(shù)初值,然后啟動(dòng)芯片進(jìn)行工作。計(jì)數(shù)器一旦開始工作,CPU就可以去做別的事情,等計(jì)數(shù)器計(jì)到預(yù)定的時(shí)間,便自動(dòng)產(chǎn)生一個(gè)輸出信號(hào),該信號(hào)可用來向CPU提出中斷請(qǐng)求,通知CPU定時(shí)時(shí)間已到,使CPU做相應(yīng)的處理,或者直接利用輸出信號(hào)去啟動(dòng)設(shè)備工作。

這種方法不但顯著提高了CPU的利用率,而且定時(shí)時(shí)間由軟件設(shè)置,使用起來十分靈活方便,加上定時(shí)時(shí)間又很精確,所以獲得了廣泛應(yīng)用。

3.可編程定時(shí)器/計(jì)數(shù)器的基本功能

在微機(jī)系統(tǒng)中,定時(shí)器/計(jì)數(shù)器的功能主要體現(xiàn)在以下幾個(gè)方面:

① 以均勻分布的時(shí)間間隔中斷分時(shí)操作系統(tǒng),以便切換程序。

② 向I/O設(shè)備輸出精確的定時(shí)信號(hào)。如在監(jiān)測(cè)系統(tǒng)中對(duì)被測(cè)點(diǎn)的定時(shí)采樣、在打印程序中的超時(shí)處理、在讀鍵盤時(shí)的延遲去抖動(dòng)處理等。

③ 檢測(cè)外部事件發(fā)生的頻率或周期,如CPU風(fēng)扇轉(zhuǎn)速測(cè)量等。

④ 統(tǒng)計(jì)外部某過程(如實(shí)驗(yàn)、生產(chǎn)及武器發(fā)射等過程)中某一事件發(fā)生的次數(shù)。如生產(chǎn)線上對(duì)零件的統(tǒng)計(jì)、高速路上車流量的統(tǒng)計(jì)等。

4.可編程定時(shí)器/計(jì)數(shù)器工作原理

可編程定時(shí)器/計(jì)數(shù)器的核心部件是一個(gè)計(jì)數(shù)器,計(jì)數(shù)器的工作就是對(duì)輸入到該計(jì)數(shù)器的信號(hào)進(jìn)行計(jì)數(shù)。計(jì)數(shù)器有兩種,分別為加法計(jì)數(shù)器和減法計(jì)數(shù)器。對(duì)于加法計(jì)數(shù)器,是在初值的基礎(chǔ)上來一個(gè)信號(hào),計(jì)數(shù)器的值加1;對(duì)于減法計(jì)數(shù)器,則是在初值的基礎(chǔ)上來一個(gè)信號(hào),計(jì)數(shù)器的值減1。

作為計(jì)數(shù)器,即在設(shè)置好計(jì)數(shù)初值(時(shí)間常數(shù))后,便開始減1(或加1)計(jì)數(shù),減為0(或加到溢出時(shí))時(shí),輸出一個(gè)信號(hào);作為定時(shí)器,即在設(shè)置好定時(shí)常數(shù)后,便進(jìn)行減1(或加1)計(jì)數(shù),減為0(或加到溢出)時(shí),輸出一個(gè)信號(hào)。從定時(shí)器/計(jì)數(shù)器內(nèi)部來說,兩者的工作過程沒有根本差別,都是基于計(jì)數(shù)器的減1(或加1)工作。典型的定時(shí)器/計(jì)數(shù)器的原理結(jié)構(gòu)圖如圖2-16所示。

圖2-16 定時(shí)器/計(jì)數(shù)器基本原理圖

在可編程的定時(shí)器/計(jì)數(shù)器中,還應(yīng)包括控制寄存器,以選擇不同的工作方式。

主站蜘蛛池模板: 霍林郭勒市| 定襄县| 清流县| 井研县| 九江市| 永昌县| 玉林市| 河西区| 五台县| 达拉特旗| 扎兰屯市| 平阳县| 江孜县| 巧家县| 滁州市| 安陆市| 天镇县| 黑龙江省| 宜春市| 三亚市| 兴业县| 林甸县| 永年县| 余江县| 靖州| 临湘市| 武清区| 台湾省| 台东市| 射阳县| 鄯善县| 桂平市| 闽侯县| 大关县| 阳高县| 天水市| 馆陶县| 毕节市| 卓资县| 德保县| 长子县|