1 概述
隨著單片機技術的發(fā)展和控制技術的提高,16位單片機已經被廣泛地應于工和民用領域。其中,Intel公司的80C196系列16位單片機目前應用非常廣泛的一種。
80C196MC/MD 單片機集合了Intel16位單片機的所有特性,是196系列單片機中功能最強大的單片機之一。它有一個16位邏輯運算單元,13路10位A/D轉換通道,一個EPA、PTS、兩個PWM脈寬調制單元和三個WFG(波形發(fā)生器)。由于它完善的硬件結構、出色的運算能力,使得196MC/MD單片機可以應用于各個領域。它所獨有的WFG更使196MC/MD在電機變頻控制中倍受青睞。196MC/MD單片機的另一特色就是它獨特的通訊方式。與其它單片機不同,196MC/MD的通訊不是通過獨立的串行通訊接口實現的,而是利用EPA和PTS來實現的。這種方式不但能夠實現一般串行口的完成的各種通訊功能。而且還能實現一些特殊的功能(如多串口的通訊)。要實現196MC/MD靈活多樣的串行通訊方式,關鍵是要掌握EPA和PTS的使用技巧。
2 EPA和PTS的工作原理
Intel公司在KC系列以后的16位單片機中增加了EPA(Event Process Array)事件處理陣列和PTS(Peripheral Transaction Server)外設事務服務器。其中外設事務服務器是微指令中斷控制器。196MC/MD的串行通訊以是利用它們來實現的。
196MC/MD 單片機是EPA中有兩種模塊,一種是捕獲/比較模塊,它用于支持一個對應引腳的高速輸入/輸出功能。所謂“捕獲”是指它可以記載某個EPA引腳上電平發(fā)生跳變事件的時刻。EPA可以捕獲的事件包括下降沿跳變、上升沿跳變、上升或下降沿跳變。在串行通訊中正是利用此功能來“捕獲”串行輸入時的起始位的。所謂 “比較”是將定時器值與一個預先設定值進行比較,如相等,則執(zhí)行指定的輸出功能。輸出功能包括輸出低電平、輸出高電平以及引腳電平翻轉等。由于“比較”功能可產生一個準確的定時值,因此在串行輸入時可利用這一特性來確定第一個有效數據位的采樣時刻,EPA中的另一種模塊是“比較”模塊。它與“捕獲/比較” 模塊中的比較功能是一致的。串行通訊中利用該模塊的比較輸出功能來發(fā)送數據,并與PTS相互協(xié)調工作以使其達到規(guī)定的波特率。
196MC/MD 的EPA中管理了4個捕獲/比較模塊和4個比較模塊,每個模塊在硬件上都有對應的引腳。利用這些EPA管理的引腳可以構成串行通訊的硬件接口。而且,對于每一個引腳都可以進行串行通訊接口。因此,196MC/MD的串行安排比較靈活,同時,豐富的硬件資源也為實現多串口通訊提供了硬件保證。這是其它單片機無法與之相比的。
實現196MC/MD串行通訊另一難點是 PTS的使用。PTS是一個微指令的硬件中斷處理器,它可提供一種特殊的中斷服務。與普通中斷不同的是,它不改變堆棧的中斷服務。與普通中斷不同的是,它不改變堆棧以及PSW,也不打斷正常指令流。它將待處理的微指令插入在PTS控制塊中可與常指令同步執(zhí)行。這樣,就不需要額外的CPU開銷,當產生PTS 中斷時,它可以按照PTS控制塊中規(guī)定的操作繼續(xù)進行,直到PTS控制塊中規(guī)定的所有工作進行完后才觸發(fā)一次對應的變通中斷來申請一次CPU管理。因此 PTS中斷可以大大減輕CPU的負擔以使代碼執(zhí)行效率更高;同時它還要與普通中斷配合使用,是一種特殊的中斷方式。196MC/MD的PTS有4種操作方式,分別為單字節(jié)傳送方式、多字節(jié)傳送方式、A/D轉換方式和串行通訊方式,它們分別對應于5種PTS控制模塊。其中串行通訊方式是196MC/MD所獨有的,它由兩個PTS控制塊組成,圖1為其結構圖。
有關接收和發(fā)送的數據存放在由DATA(L)和DATA(H)構成的數據單元中。其數據單元的寬度可達16位。波特率的設定參數放在BAUD(L)和BAUD (H)中。196MC/MD串行通訊的控制參數主要放在PTSCON和PTSCON1寄存器中。對這兩個寄存器進行操作可以設定各種串行通訊方式。下面主要介紹這兩個寄存器。
PTSCON的操作格式如下:
其中:M2M1M0=011為發(fā)送方式;M2M1M0=001為接收方式;SA=1為同步SIO;SA=0為異步SIO。
MAJ=1為允許多數表決采樣;MAJ=0為禁止多數表決采樣。
PTSCON1具有異步和同步操作兩種模式。異步方式的PTSCON1操作格式為:
同步方式的PTSCON1格式為:
其中:PRAR為接收奇偶校驗控制/狀態(tài)位;
PEN為奇偶校驗選通們,PEN=1時選通;PEN=0時禁止;
FE為出錯標志,FE=1說明傳輸出錯;
TPAR為發(fā)送奇偶校驗控制位;
TRC是發(fā)送/接收控制位。
3 實現196MC/MD的串行通訊
在利用196MC/MD實現串行通訊時,首先選擇EPA中的一個捕獲比較模塊作為串行通訊,再選擇一個比較模塊作為串行通訊發(fā)送模塊。這樣就能構成串行通訊的硬件端口。然后,對所選的EPA模塊開辟相應的PTS通道,再根據通訊要求編寫串行通訊的發(fā)送和接收PTS模塊。最后使EPA和PTS兩者協(xié)同工作便能實現對串行通訊的控制。
下面以異步串行通訊為例介紹其實現方法:首先為串行接收方式選擇一個捕獲/比較模塊作為串行接收引腳。然后利用捕獲功能捕捉起始位,當捕捉到起始位后將該模塊轉換為比較方式,并利用比較方式的精確定時來確定第一個采樣時刻。最后按照選定的時間間隔對輸入數據的位進行采樣(要確保每次采樣都發(fā)生在數據位周期中心),這樣就可以正確接收串行數據了。這個采樣過程是通過對應的EPA中斷和PTS配合來實現的。圖2是接收過程的時序圖。
接收過程開始后,先由EPA捕獲比較模塊捕捉起始位,捕獲到時產生一次EPA的普通中斷。在這個中斷處理程序中,將捕獲方式轉變?yōu)楸容^方式,并根據要求的波特率設定比較時間為個位周期,同時啟動PTS功能。在此后的個位周期,即第一個數據位周期的斷時刻到來時,第一個PTS周期開始執(zhí)行,并根據設定對該位數據進行采樣(為了提高抗干擾能力,可以采用多數表決方式采樣),直到各位數據由PTS中斷根據設公平的波特率等參數直到各位數據由PTS中斷根據設定的波特率等參數采樣完成,系統(tǒng)都不需CPU再干預為止。等到一個數據單元接收完畢后,PTS中斷就結束了。這時,程序再次進入一個EPA的普通中斷,在這個中斷中,可將PTS中接收的數據保存,然后將該EPA模塊設為捕獲方式,以捕獲下一個數據單元的起始位。以此方式反復運行就可以逐一地接收數據單元了。對于串行發(fā)送方式,可以在EPA的捕獲/比較模塊或比較模塊中任選一個作為串行發(fā)送引腳。然后再根據要求編寫PTS控制塊,最后利用EPA的普通中斷和PTS配合來產生逐位發(fā)送的串行發(fā)送時序,圖3所示是其發(fā)送時序。其具體工作過程是:首先將待發(fā)送的數據單元與通訊參數一同寫入相應的發(fā)送PTS控制塊中。然后在發(fā)送引腳上產生一個下降沿來作為起始位,接著就可以啟動PTS中斷了。在第一個PTS中斷中,先在PTS的控制下在發(fā)送引腳上發(fā)出一個位信號。然后再在以后的PTS中斷中按規(guī)定的波特率逐位發(fā)送關斷,此過程無須CPU 干預,直到一個數據單元發(fā)送完成后進入一次EPA的普通中斷為止。在這個中斷處理中,應首先更新有關寄存器的設置,然后放入下一個特發(fā)送的數據單元,以構造出新的PTS控制塊。之后再產生一個新的發(fā)送起始位,以重新啟動新一輪的PTS來發(fā)送下一個數據單元。這樣反復的運行就實現了串行數據的發(fā)送。
4 結束語
實驗證明,196MC/MD單片機的這種串行通訊方式在實際應用中效果非常好。雖然相對于獨立串口來說,該方法略顯復雜。但是這種通訊方法的靈活性和實用性是其它獨立串口所無法比擬的。而且這種通訊方式充分顯示了Intel 16單片機技術中EPA和PTS的技術特點,這也是196MC/MD單片機應用的重要技術之一。