單片機原理及應用第九章_第1頁
單片機原理及應用第九章_第2頁
單片機原理及應用第九章_第3頁
單片機原理及應用第九章_第4頁
單片機原理及應用第九章_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單片機原理及應用第九章第一頁,共九十四頁,2022年,8月28日9.1數據通信基礎知識9.1.1.數據通信的概念不同的獨立系統(tǒng)利用線路(傳輸介質)互相交換信息(數據)稱之為通信。而構成整個通信的線路(傳輸介質)稱之為網絡。如果交換信息的系統(tǒng)是計算機系統(tǒng)的話,則稱之為計算機網絡(ComputerNetwork)通信。計算機通信也稱為數據通信,典型的數據通信系統(tǒng)可用下面的等式來描述:

數據通信=數據處理+數據傳輸為了解決數據是如何傳輸的,數據是如何編碼的,數據通信是以什么樣的規(guī)則去管理和控制的等問題,可以把數據通信劃分為三個基本部分:傳輸、通信接口和通信處理。第二頁,共九十四頁,2022年,8月28日通信協議1.通信協議的概念數據通信是機器之間的通信,所以和其它通信方式一樣,應該在通信系統(tǒng)中規(guī)定一個統(tǒng)一的通信標準,即通信的內容是什么,如何通信,何時通信,都必須在通信的實體之間達成大家都能接受的協定,這些協定就被稱為通信協議。也可以將協議定義為監(jiān)督和管理兩個實體之間的數據交換的一整套規(guī)則。簡單地說,通信協議是對數據傳送方式的規(guī)定,包括數據格式和數據位的定義等。

第三頁,共九十四頁,2022年,8月28日通信協議由以下三個部分組成:⑴語法:規(guī)定通信雙方彼此“如何講”,即確定協議元素的格式,包括數據格式和信號電平。⑵語義:規(guī)定通信雙方彼此“講什么”,即確定協議元素的類型和內容,包括用于相互協調及差錯處理的信息。⑶定時關系:規(guī)定事件執(zhí)行的順序,即確定通信進程中通信的狀態(tài)變化,包括速度匹配和時序。如規(guī)定正確的應答關系等。第四頁,共九十四頁,2022年,8月28日2.串行通信協議串行通信協議有同步協議和異步協議兩種。異步串行通信協議規(guī)定字符數據的傳輸格式,主要有下述內容:⑴起始位。通信線上沒有數據傳送時處于邏輯“1”的狀態(tài)(又稱mark)。當發(fā)送設備要發(fā)送一個字符數據時,首先發(fā)出一個邏輯“0”信號,這個邏輯低電平就是起始位(又稱space狀態(tài))。起始位所起的作用就是使設備同步,通信雙方必須在傳送數據位前協調同步。⑵數據位。當接收設備收到起始位后,緊接著就會收到數據位。80C51串行口采用8位或9位數據傳送。第五頁,共九十四頁,2022年,8月28日⑶奇偶校驗位。數據位發(fā)送完之后,便可以發(fā)送奇偶校驗位。奇偶校驗用于有限差錯檢測,通信雙方應約定一致的奇偶校驗方式。⑷停止位。在奇偶或數據位(當無奇偶校驗時)之后發(fā)送的是停止位。停止位是一個字符數據的結束標志,可以是1位、1.5位或2位的低電平。⑸幀(frame)。從起始位開始到停止位結束的全部信息位的內容稱為一幀,幀在異步串行通信中是一個字符的完整通信格式,所以我們可將異步通信的字符格式稱之為幀格式,即每個字符均是獨立傳送的一幀。

第六頁,共九十四頁,2022年,8月28日

在異步串行通信中,一個字符代碼在通信線路上的傳輸格式如圖9.1所示。(A)異步通信格式(B)字符‘E’(ASCII碼為45H)的傳送波形圖9.1異步串行通信的傳送格式第七頁,共九十四頁,2022年,8月28日⑹波特率設置。通信線路上傳送的所有位信號都保持一致的信號持續(xù)時間,每一位的寬度都由數據傳送速率確定,而傳送速率是以每秒傳送多少個二進制位來度量的,這個速率稱作波特率(BaudRate),其單位為bps(bitspersecond,位/秒)。

例如,如果數據以每秒300個二進制位在通信線路上傳輸,那么這個傳輸速率就是300波特。在串行通信中,二進制信息位的發(fā)送與接收分別由發(fā)送端和接收端的時鐘脈沖進行定時控制,時鐘頻率越高,則波特率也高,串行通信的傳輸率快,反之則慢。在串行通信中經常使用的標準波特率在RS-232C標準中已有規(guī)定,如1200、2400、4800、9600bps等,使用時可根據實際需要加以選擇。第八頁,共九十四頁,2022年,8月28日數據傳輸模式1.并行與串行傳輸⑴并行通信(ParalledCommunication):并行通信是將待傳送字符的二進制代碼中的各數據位在并行信道上同時傳送的方式。并行傳輸時,一次傳輸一個字符,這種方式速度快,效率高,但所需的數據線數目較多(等于所傳送數據的字長),而且在傳送過程中容易因線路的因素(如信號衰減問題、信號間相互串音干擾問題)導致信息傳送發(fā)生錯誤。因此并行通信的控制比較復雜,傳送成本較高,僅適用于傳送距離較短的場合,如系統(tǒng)內的信息傳送等。第九頁,共九十四頁,2022年,8月28日⑵串行通信(SerialCommunication):串行通信是將待傳送字符中的各數據位在一條信道上以位為單位,按時間及位的順序依次進行傳送的方式。顯然,串行傳送速度低于并行傳送,但只需一條傳輸信道,傳送控制較為簡單,傳輸成本較低,適用于傳送距離較長的場合,加上驅動后其傳輸距離可以從幾米到幾千公里。串行通信又可分為同步和異步兩種方式。

第十頁,共九十四頁,2022年,8月28日2.同步和異步傳輸⑴異步傳輸方式:在異步傳輸方式下,傳輸數據是以字符為單位的,當發(fā)送一個字符代碼時,字符前面要加一個“起”信號,其長度為1個碼元,極性為”0”,即空號極性;字符后面要加一個“止”信號,其長度為1、1.5或2個碼元(在國際NO.2碼時用1.5碼元長),極性為“1”,即傳號極性。加上“起”、“止”信號后,即可區(qū)分出所傳輸的字符。待傳送的字符串中的每個字符均加上起始位、停止位、校驗位等控制信息位,構成一個字符幀。在傳送時,以串行方式將字符幀一個一個地傳送出去,字符幀與字符幀之間可以是連續(xù)發(fā)送,也可以是間斷的單獨發(fā)送,兩字符之間的間隔長度可以不確定。異步傳輸方式適用于1200bps以下的低速傳輸,且實現起來比較簡單。異步傳輸方式的優(yōu)點是收發(fā)雙方不需要嚴格的位同步,缺點是每個字符都要按字符幀的格式傳輸,傳輸效率就比較低。

第十一頁,共九十四頁,2022年,8月28日⑵同步傳輸方式:在同步傳輸方式下,收發(fā)雙方必須建立準確的位定時信號,正確地區(qū)分每位數據信號。在該傳輸方式中,每個字符不增加任何附加位,而且是連續(xù)發(fā)送。但在傳輸中,數據要分成組(或幀),一組含多個字符代碼或多個獨立碼元(位),為了使收發(fā)雙方建立和保持同步,在每組的開始和結束需加上規(guī)定的碼元序列,作為標志序列,標志序列的碼型因傳輸規(guī)程不同而異。在發(fā)送數據之前,必須先發(fā)送該標志序列,接收端通過檢測出該標志序列來實現同步。同步傳輸方式適用于2400bps以上的數據傳輸,不需加起、止信號,因此傳輸效率高,但是實現起來比較復雜。第十二頁,共九十四頁,2022年,8月28日9.1.4雙工通信方式雙工通信方式是對相互通信的兩臺通信設備間數據流向的描述,或者說是對一臺通信設備執(zhí)行收發(fā)操作能力的描述。

雙工包括全雙工、半雙工和單工。第十三頁,共九十四頁,2022年,8月28日1.單工(Simplex)形式:單工形式的數據傳送是單向的,通信雙方中一方固定作為發(fā)送端,而另一方則固定作為接收端,單工方式通信時僅需一根數據線,連接圖如圖7.2所示。

圖7.2單工通信形式

第十四頁,共九十四頁,2022年,8月28日2.全雙工(Full-duplex)形式:全雙工形式的數據傳送是雙向的,通信雙方中的任何一方均可同時發(fā)送和接收數據,這就需要兩根數據線,連接圖如圖7.3所示。圖7.3全雙工通信形式第十五頁,共九十四頁,2022年,8月28日3.半雙工(Half-duplex)形式:半雙工形式的數據傳送也是雙向的,通信雙方中的任何一方均可發(fā)送和接收數據,但它任何時刻只能由其中的一方作為發(fā)送端,而另一方作為接收端。任何一方均不能同時發(fā)送和接收數據。采用該形式進行串行通信時,可以使用一對數據線,也可使用兩條數據線。連接圖如圖7.4所示。

圖7.4半雙工通信形式第十六頁,共九十四頁,2022年,8月28日9.1.5串行通信接口電路能夠完成串行通信的接口電路:通用異步收發(fā)器UART(UniversalAsynchronousReceiverTransmitter,簡稱UART),可用來完成異步串行通信;通用同步收發(fā)器USRT(UniversalSynchronousReceiverTransmitter,簡稱USRT),它能完成同步串行通信;通用同步/異步收發(fā)器USART(UniversalSynchronous/AsynchronousReceiverTransmitter,簡稱USART),它既可完成同步串行通信又可完成異步串行通信。

第十七頁,共九十四頁,2022年,8月28日

所有的串行通信接口都是以并行數據形式與CPU接口,而以串行數據形式與外部通信線路接口。其基本功能是從外部通信線路接收串行數據信息,并轉換成并行數據后傳送給CPU;或者由CPU將內部的并行數據信息轉換成串行數據信息輸出給外部通信線路進行串行通信。

MCS-51單片機的串行口是一個全雙工的異步串行通信接口。一般全雙工串行通信接口電路至少包括一個發(fā)送器和一個接收器。它們分別有數據寄存器和移位寄存器,以便串行口實現CPU并行輸出→串行發(fā)送,串行接收→CPU并行接收的轉換功能。第十八頁,共九十四頁,2022年,8月28日9.1.6串行通信總線標準1.串行通信總線標準接口所謂標準接口,就是明確定義若干信號線,使接口電路標準化、通用化。借助串行通信標準接口,不同類型的數據通信設備可以很容易實現它們之間的串行通信連接。串行通信接口標準經過使用和發(fā)展,目前已經有比較成熟的幾種,這幾種都是在RS-232標準的基礎上經過改進而形成的,例如:RS-232C、RS-449、RS-422、RS-423和RS-485,20mA電流環(huán)等。第十九頁,共九十四頁,2022年,8月28日

RS-232C是用二進制方式進行數據交換的數據通信設備(DCE)與數據終端設備(DTE)之間的接口技術標準。RS-232C是由美國電子工業(yè)協會(ElectronicIndustryAssociation簡稱EIA)與BELL等公司一起開發(fā),并在1969年正式公布的通信協議,它是一種串行物理接口標準。RS-232C總線標準的全稱是EIA-RS-232C標準,RS是英文“推薦標準”的縮寫,232為標識符號,C表示修改次數(C表示RS232在1969年的最新一次修改,在這之前,有RS232B、RS232A)。

第二十頁,共九十四頁,2022年,8月28日

這個標準對串行通信接口的有關問題,如信號線功能,按位串行傳輸的電氣和機械特性都作了明確規(guī)定。它適合于數據傳輸速率在0~20000bps范圍內的通信,適合于短距離或帶調制解調器的通信場合。由于通信設備廠商都生產與RS-232C制式兼容的通信設備,因此,它作為一種標準,目前已在計算機通信接口中廣泛采用。第二十一頁,共九十四頁,2022年,8月28日2.RS-232C總線標準的電氣特性和信號接口⑴電氣特性

RS-232C標準對電氣特性、邏輯電平和各種信號線功能都作了規(guī)定。在TxD和RxD上:邏輯1(MARK)=-3V~-15V

邏輯0(SPACE)=+3~+15V

在RTS、CTS、DSR、DTR和DCD等控制線上:信號有效(接通,ON狀態(tài),正電壓)=+3V~+15V

信號無效(斷開,OFF狀態(tài),負電壓)=-3V~-15V

第二十二頁,共九十四頁,2022年,8月28日

以上規(guī)定說明了RS-323C標準對邏輯電平的定義。對于數據,邏輯“1”的電平低于-3V,邏輯“0”的電平高于+3V;對于控制信號,接通狀態(tài)(ON)即信號有效的電平高于+3V,斷開狀態(tài)(OFF)即信號無效的電平低于-3V,也就是當傳輸電平的絕對值大于3V時,電路可以有效地檢查出來,介于-3~+3V之間的電壓無意義,低于-15V或高于+15V的電壓也認為無意義,因此,實際工作時,應保證電平在±(3~15)V之間。第二十三頁,共九十四頁,2022年,8月28日

EIA-RS-232C與TTL轉換:EIA-RS-232C是用正負電壓來表示邏輯狀態(tài),與TTL以高低電平表示邏輯狀態(tài)的規(guī)定不同。因此,為了能夠同計算機接口或終端的TTL器件連接,必須在EIA-RS-232C與TTL電路之間進行電平和邏輯關系的變換。實現這種變換的方法可用分立元件,也可用集成電路芯片。目前較為廣泛地使用集成電路轉換器件,如MC1488、SN75150芯片可完成TTL電平到EIA電平的轉換,而MC1489、SN75154可實現EIA電平到TTL電平的轉換。MAX232芯片可完成TTL和EIA的雙向電平轉換。第二十四頁,共九十四頁,2022年,8月28日⑵信號接口

RS-232C總線標準規(guī)定了21個信號和25個引腳,包括一個主通道和一個輔助通道,在多數情況下主要使用主通道。對于一般雙工通信,僅需幾條信號線就可以實現,包括一條發(fā)送線,一條接收線和一條地線。與RS-232C相匹配的D型連接器有BD-25、DB-15和DB-9,其引腳定義各不相同。常用的有BD-25和DB-9兩種連接器。第二十五頁,共九十四頁,2022年,8月28日①DB-25連接器

DB-25連接器定義25根信號線,分成4組:異步通信的9個電壓信號(含信號地SG),引腳編號為2、3、4、5、6、7、8、20、22。20mA電流環(huán)信號9個,引腳編號為12、13、14、15、16、17、19、23、24(注意,20mA電流環(huán)信號僅IBMPC和IBMPC/XT機提供,至AT機及以后,已不支持)??漳_6個,引腳編號為9、10、11、18、21、25。保護地(PE)1個,作為設備接地端,引腳編號為1。

DB-25連接器引腳排列如圖7.5所示。

圖7.5DB-25連接器引腳排列圖第二十六頁,共九十四頁,2022年,8月28日第二十七頁,共九十四頁,2022年,8月28日

RS-232C規(guī)定標準接口有25條線,4條數據線,11條控制線,3條定時線,7條備用和未定義線,而常用的只有9條,它們可分為以下3類。

聯絡控制信號線:數據裝置準備好(DSR)-有效狀態(tài)時(ON),表明Modem處于以使用狀態(tài)。數據終端準備好(DTR)-有效狀態(tài)時(ON),表明數據終端可以使用。這兩個信號有時連接到電源上,一上電就立即有效。這兩個設備狀態(tài)信號有效只表示設備本身可用,能否開始進行通信要由下面的控制信號決定。第二十八頁,共九十四頁,2022年,8月28日請求發(fā)送(RTS)-用來表示DTE請求DCE發(fā)送數據,即當終端要發(fā)送數據時,使該信號有效(ON狀態(tài)),向Modem請求發(fā)送,它用來控制Modem是否要進入發(fā)送狀態(tài)。允許發(fā)送(CTS)-用來表示DCE準備好接收DTE發(fā)來的數據,是對請求發(fā)送信號RTS的響應信號。當Modem已準備好接收終端傳來數據,并向前發(fā)送時,使該信號有效,通知終端開始沿發(fā)送數據線TXD發(fā)送數據。第二十九頁,共九十四頁,2022年,8月28日接收線信號檢出(RLSD)-用來表示DCE已接通通信鏈路,告知DTE準備接收數據,此線也叫做數據載波檢出(DCD)線。振鈴指示(RI)-當Modem收到交換臺送來的振鈴呼叫信號時,使該信號有效,通知終端,已被呼叫。第三十頁,共九十四頁,2022年,8月28日數據發(fā)送與接收線:發(fā)送數據(TXD)-通過TXD終端將串行數據發(fā)送到Modem。接收數據(RXD)-通過RXD線,終端接收從Modem發(fā)來的串行數據。地線:有SG、PE兩根-信號地和保護地,無方向。第三十一頁,共九十四頁,2022年,8月28日②DB-9連接器目前已經很少有人使用25針D型連接器了,一般都使用9針D型連接器。DB-9連接器引腳排列如圖7.6所示。圖7.6DB-9連接器引腳排列圖第三十二頁,共九十四頁,2022年,8月28日9針和25針連接器間的對應關系如表7.2所示第三十三頁,共九十四頁,2022年,8月28日9.2MCS-51單片機的串行口結構與工作原理89C51單片機中有一個全雙工的串行通信接口,它既可作為串行異步通信(UART)接口,也可以作為同步移位寄存器方式下的串行擴展接口。第三十四頁,共九十四頁,2022年,8月28日9.2.1串行口結構1.串行口的基本功能單片機串行口必須具備以下功能:串/并轉換功能;串行數據的格式化功能;可靠性功能;串行口與數據通信設備DCE(DateCommunicationEquipment)之間的握手聯絡功能。所有為實現上述功能而設計的硬件邏輯電路集成在一起,作為單片機實現串行異步通信的部件,并被稱之為單片機的串行口。第三十五頁,共九十四頁,2022年,8月28日2.串行口的結構就MCS-51系列單片機而言,其串行口的主要功能是由圖9.7所示的寄存器結構的通用異步收發(fā)器(UART)來實現的。它是一個全雙工的異步串行通信接口,通過它既可以發(fā)送數據也可以接收數據。其硬件結構主要由發(fā)送器部分和接收器部分組成。

圖9.7MCS-51串行口UART結構

第三十六頁,共九十四頁,2022年,8月28日⑴接收器部分:接收部分主要由一個數據接收緩沖寄存器(接收SBUF)和一個輸入移位寄存器構成,用于實現接收數據傳輸格式的拆裝和串/并格式轉換功能。由于在數據接收緩沖寄存器之前設置了一個移位寄存器,從而構成了串行接收的雙緩沖結構。以防止在數據接收過程中出現幀重疊錯誤。即當下一幀數據來時,前一幀數據還未讀走情況出現。第三十七頁,共九十四頁,2022年,8月28日⑵發(fā)送器部分:發(fā)送器部分僅由一個具有移位功能的發(fā)送緩沖寄存器(發(fā)送SBUF)組成,用來實現發(fā)送數據的并/串格式轉換和發(fā)送標準格式的組裝功能。其結構與接收器部分不同的原因在于:在數據發(fā)送過程中單片機是主動的,它會根據發(fā)送過程是否完成來決定是否繼續(xù)發(fā)送下一幀數據,從而避免了傳送過程中幀重疊錯誤的發(fā)生。因此,對于發(fā)送器部分來說只需采用單緩沖結構即可,同時也可提高數據發(fā)送的速度。

SBUF是數據接收緩沖寄存器和數據發(fā)送緩沖寄存器的總稱,兩者共用一個地址為99H。第三十八頁,共九十四頁,2022年,8月28日9.2.2串行口的工作原理單片機通過串行口進行串行異步通信時,其接收和發(fā)送過程如下:1.接收串行口按軟件設定的工作方式和波特率,在時鐘脈沖的控制下,通過引腳RXD(P3.0)逐位移入數據至輸入移位寄存器,完成串并轉換,然后將數據并行送入接收數據緩沖寄存器SBUF,并形成中斷請求RI,通知CPU讀取傳入的數據。在接收的過程中,還要對接收到的數據幀進行起始值、校驗位、停止位等附加信息的反格式化的處理。第三十九頁,共九十四頁,2022年,8月28日2.發(fā)送當單片機CPU向串行口的發(fā)送數據緩沖寄存器SBUF寫入所需發(fā)送的數據后,串行口自動地按軟件設定的格式將待傳送的數據組成數據幀,并以軟件規(guī)定的波特率借助于SBUF的移位功能,在時鐘脈沖的控制下,通過引腳TXD(P3.1)逐位移出。待該幀完全移出后,形成中斷請求TI,通知CPU準備下一幀的發(fā)送工作。

第四十頁,共九十四頁,2022年,8月28日串行口控制寄存器SCONSCON是一個可位尋址的特殊功能寄存器,用于存放關于串行口的控制信息和狀態(tài)信息。SCON的單元地址為98H,在位尋址時,D7~D0各位的位地址和位符號如下表所示。表9.3SCON的位地址和位符號9.3串行口的控制寄存器第四十一頁,共九十四頁,2022年,8月28日1.SM0SM1-串行口工作方式選擇位。當兩位設置為00、01、10、11時,串行口分別工作在方式0、方式1、方式2和方式3。2.SM2-多機通信控制位(該位主要用于方式2和方式3)。⑴當串行口工作在方式0時,SM2必須為零。

第四十二頁,共九十四頁,2022年,8月28日⑵當串行口工作在方式1時,若SM2=1,則只有串行口接收到的停止位為1時,才將接收到的前8位數據送入SBUF,接收到的停止位進入RB8,并將RI置1,產生中斷請求,通知CPU接收數據。若接收到的停止位為0,則將收到的8位數據丟棄,RI清零,不啟動中斷。SM2=0時正常接收,即不論串行口接收到的停上位(RB8)狀態(tài)如何,一律將接收到的前8位數據裝入SBUF,并將RI置1,產生中斷請求。一般在工作方式1時將SM2置為0。第四十三頁,共九十四頁,2022年,8月28日⑶當串行口工作在方式2和方式3時,若SM2=1,則規(guī)定只有當串行口接收到的第9位數據(RB8)為1時,才啟動雙緩沖,將接收到的前8位數據送入SBUF,并將RI置1,產生中斷請求。若第9位數據(RB8)為0,則將收到的8位數據丟棄,RI清零,不啟動中斷。SM2=0時正常接收,即不論串行口接收到的第9位數據(RB8)狀態(tài)如何,一律將接收到的前8位數據裝入SBUF,并將RI置1,產生中斷請求。第四十四頁,共九十四頁,2022年,8月28日3.REN-允許/禁止串行口接收控制位可通過軟件對該位進行設置,實現串行口接收過程的啟??刂?。REN=1,允許接收;REN=0,禁止接收。4.TB8-第9位發(fā)送數據當串行口工作在方式2和方式3時,TB8的內容是要發(fā)送的數據格式中的第9位,其值由程序設置。在雙機通信過程中,TB8常作為奇偶校驗位使用。在多機通信中,TB8常作為地址信息與數據信息的區(qū)別標志。在方式1中,TB8為停止位,方式0中不使用TB8。第四十五頁,共九十四頁,2022年,8月28日5.RB8-第9位接收數據當串行口工作在方式2和方式3時,RB8存放接收到的第9位數據,代表著前8位數據的某些特征(如奇偶校驗標志,地址或數據標志等)。故程序可根據RB8的狀態(tài)決定對所接收到的數據的處理。在方式1中,RB8為接收到的停止位,方式0中不使用RB8。第四十六頁,共九十四頁,2022年,8月28日6.TI-發(fā)送結束和發(fā)送中斷標志位發(fā)送前,TI必須清零。串行口工作在方式0時,8位數據發(fā)送完畢,該標志由單片機內部硬件自動置1,當串行口工作在其它方式時,該位在一個數據幀的停止位開始發(fā)送時,由單片機內部硬件自動置1。所以TI=1可表示為一幀發(fā)送結束的標志,其狀態(tài)可供程序查詢或形成中斷請求,TI的清零由軟件完成。7.RI-接收結束和接收中斷標志位接收前,RI必須清零。串行口工作在方式0時,8位數據接收完畢后該標志位由單片機內部硬件自動置1。當串行口工作其它方式時,該位在串行口接收到停止位時由單片機內部硬件自動置1。所以RI=1可表示為一幀接收結束的標志,其狀態(tài)可供程序查詢或形成中斷請求,RI的清零也由軟件完成。第四十七頁,共九十四頁,2022年,8月28日9.3.2電源控制寄存器PCON

對于HMOS型單片機來說,僅利用PCON中的一個標志位SOMD作為通信波特率的控制位使用PCON的單元地址為87H,其內部各位均不能進行位尋址,若需對其中的某位進行設定,只能通過對87H單元整個字節(jié)的寫入來完成。

PCON中有效位的位符號如表9.4所示。第四十八頁,共九十四頁,2022年,8月28日

表9.4PCON中有效位的位符號

1.SMOD為串行口波特率倍增位,當串行口工作在方式1和方式3時,其波特率可調。調節(jié)手段之一便是利用SMOD。若SMOD=0,波特率不倍增;若SMOD=1,則選定的波特率倍頻1倍;系統(tǒng)復位時,SMOD自動清零。

2.GF1、GF0、PD、IDL這4位用于CHMOS型單片機的掉電方式控制。對于HMOS型單片機而言,該4位無定義。第四十九頁,共九十四頁,2022年,8月28日中斷允許寄存器IE

該寄存器中的ES位是專門用于串行口中斷管理的標志,稱之為串行口中斷允許位。其位地址為0ACH,我們可以通過在程序中安排SETBES和CLRES指令來對其置1和清零,從而實現對串行口中斷的開啟和關閉。當ES=0時禁止串行口中斷功能,當ES=1時開啟串行口中斷功能。第五十頁,共九十四頁,2022年,8月28日9.4串行口的工作方式MCS—51單片機的串行口共有4種工作方式,我們可以通過對SCON中的SM0、SM1編程的方法來選擇其工作方式。9.4.1工作方式0(SM0SM1=00)

1.工作方式0時串口的結構與特點在該方式下串口中的內部結構被定義成一個8位同步移位寄存器使用,用于實現單片機I/O端口的擴展。其特點具體表現為:必須由外接移位寄存器配合。即由串入并出移位寄存器來擴展輸出端口;由并入串出移位寄存器來擴展輸入端口。第五十一頁,共九十四頁,2022年,8月28日此時引腳RXD(P3.0)固定作為數據移位的輸入端(接收時)和輸出端(發(fā)送時);而引腳TXD(P3.1)則固定作為提供移位時鐘脈沖的輸出端。移位數據的發(fā)送和接收格式以一個字節(jié)為一組。其發(fā)送順序為低位先發(fā),高位后發(fā)。其接收順序為低位先收,高位后收。第五十二頁,共九十四頁,2022年,8月28日2.工作過程:⑴方式0輸出

采用“串入并出”功能的移位寄存器(如CD4094或74LS164等)與串行口配合,實現將串行口擴展成并行輸出口。其擴展結構如圖9.8所示。

第五十三頁,共九十四頁,2022年,8月28日

運作時,通過指令將需要發(fā)送的數據寫入串行口數據緩沖寄存器SBUF,發(fā)送過程就會自動啟動,串口將SBUF中的內容按低位在先,高位在后的順序自動由RXD端引腳移出,并同時在TXD引腳自動提供同步移位時鐘脈沖。在同步移位時鐘脈沖控制下,數據逐位移入外接“串入并出”移位寄存器CD4094(時鐘正跳變時串入)。當8位數據全部移出后,SCON寄存器中的發(fā)送中斷標志TI被自動置1,程序員可以在程序中采用查詢或中斷的方法來編制應用程序。本例采用查詢方式,并用單片機的P1.0對CD4094芯片的STB引腳輸出控制信號,在時鐘脈沖的作用下,STB低電平時CD4094串行移入并鎖存單片機發(fā)來的數據,高電平時將數據并行輸出,完成串入并出的功能。第五十四頁,共九十四頁,2022年,8月28日⑵方式0輸入采用“并入串出”功能的移位寄存器(如CD4014或74LS165等)與串行口配合使用,實現將串行口擴展成并行輸入口。其擴展結構如圖9.8所示。圖中8位數據從D0~D7并入,單片機的P1.1與CD4014的P/S連接,通過P1.1向CD4014的P/S輸出控制信號,P/S置1時禁止數據從CD4014串出,當P/S置0時,在同步移位時鐘脈沖的控制下,數據從CD4014串出,。程序中用指令對單片機SCON中的REN標志置1,啟動單片機的串行接收,此時TXD端自動提供同步移位時鐘脈沖給外接移位寄存器,在同步移位時鐘脈沖的控制下,“并入串出”寄存器的數據位自動按先低后高的順序通過RXD引腳串行移入單片機的串行口,由串行口自動接收。當接收到8位數據時,串行口自動置位RI,程序員可在程序中采用查詢或中斷的方法,讀取串行口輸入數據緩沖器SBUF中的內容。第五十五頁,共九十四頁,2022年,8月28日⑶波特率的設定當串行口工作在方式0時,移位操作(串入或串出)的波特率是固定的,其值為單片機晶振頻率的1/12,表明單片機是利用一個機器周期完成1位二進制信息的傳送,若我們采用fosc表示單片機的晶振頻率,則波特率=fosc/12,當fosc=12MHz時,其串行口的傳送波特率為1Mbps,即每1微秒移位1次。⑷應用舉例

[例9.1]使用CD4014“并入串出”移位寄存器的并行輸入端外接8個開關,作為單片機系統(tǒng)的輸入設備。使用CD4094“串入并出”移位寄存器的并行輸出端外接8個發(fā)光二極管作為單片機系統(tǒng)的輸出設備,連接圖如圖9.8所示,試編寫程序完成將開關的狀態(tài)讀入,并由發(fā)光二級管進行顯示(開關合上為亮,斷開為暗)的任務。第五十六頁,共九十四頁,2022年,8月28日編制程序為:

MOVSCON,#00H

CLRES;關中斷

LOOP:CLRP1.0;關CD4094并出

CLRP1.1;開CD4014串出

MOVSCON,#10H;啟動單片機輸入

JNBRI,$;等待接收完成

SETBP1.1;關CD4014串出

CLRRI;清接收結束標志

MOVSCON,#00H;關單片機輸入

MOVA,SBUF;讀取開關輸入狀態(tài)

CPLA;狀態(tài)取反

MOVSBUF,A;啟動單片機串行口輸出

JNBTI,$;等待發(fā)送完成

SETBP1.0;開CD4094并出

ACALLDELAY;調用延時子程序,保持輸出延時

CLRTI;清發(fā)送結束標志

AJMPLOOP;繼續(xù)循環(huán)第五十七頁,共九十四頁,2022年,8月28日9.4.2工作方式11.工作方式1時串口的結構與特點⑴當串行口規(guī)定為方式1時,其內部結構定義為一個10位信息(8位數據)的異步串行通信接口,UART使用RXD(P3.0)引腳作為串行數據輸入線,使用TXD(P3.1)引腳作為串行數據輸出線。⑵該方式是以10位信息位作為一幀,其中1位起始位,8位數據位D0~D7,1位停止位,其幀格式如下:

第五十八頁,共九十四頁,2022年,8月28日2.串行口工作方式1的工作過程⑴方式1輸出(發(fā)送)過程該過程是由程序中安排一條寫發(fā)送寄存器SBUF的指令來啟動的,當數據送入輸出緩沖寄存器后,UART硬件自動加入起始位和停止位,在單片機內部移位脈沖的作用下,按規(guī)定的波特率,由外部引腳TXD端按序依次串行輸出,完成一個10位數據幀的串行傳送。第五十九頁,共九十四頁,2022年,8月28日

一個數據幀發(fā)送完畢后,UART使TXD引腳維持在mark狀態(tài),并將SCON寄存器中斷標志TI置位,發(fā)送過程結束。程序員可利用查詢或中斷方法通知CPU進行下一個字符的發(fā)送,以上過程以數據寫入輸出寄存器SBUF開始啟動,以SCON中的TI標志為1時結束,程序員不需加以干預。第六十頁,共九十四頁,2022年,8月28日⑵方式1輸入(接收)過程該過程進行的前提是SCON中的REN位置1。當REN=1時,接收過程啟動,串口UART自動采樣RXD引腳,當采樣到從mark到space狀態(tài)的跳變時,將其認定為起始位,然后在內部移位脈沖的控制下,以規(guī)定的波特率將RXD引腳上的數據逐位移入接收移位寄存器中,停止位移入后,被送入SCON的RB8位。然后,數據位D0~D7被鎖入接收SBUF,并置位RI。可使用查詢或中斷的方法通知CPU從SBUF中讀走剛接收到的數據。以上過程從REN=1啟動,到SCON中的RI標志=1結束。中間過程自動完成,程序員不需加以干預。第六十一頁,共九十四頁,2022年,8月28日3.串口在方式1下的波特率設定:在該方式下,數據傳送時的波特率可以根據系統(tǒng)的具體要求加以調節(jié),此時串行口以定時/計數器1工作在方式2時作為其波特率發(fā)生器,并用PCON中的SMOD位對波特率進行倍增控制。公式為:波特率=()×(定時/計數器1的溢出率)定時/計數器1的溢出率=/[12×(256-初值)]波特率=×定時器初值=256-第六十二頁,共九十四頁,2022年,8月28日4.方式1應用舉例[例9.2]設單片機采用12MHz晶振頻率,串行口以方式1工作,定時/計數器1工作于定時器方式2作為其波特率發(fā)生器,波特率選定為1200bps。試編程實現單片機從鍵盤上接收所鍵入的字符,并把它送到CRT顯示器顯示的功能。程序如下:CRT:MOVSP,#60H;設棧指針

MOVTMOD,#20H;設T1為方式2,作定時器使用

MOVTL1,#0E6H;設波特率為1200bps

MOVTH1,#0E6H;設置重置值

SETBTR1;啟動T1運行

MOVPCON,#00H;SMOD=0,波特率不倍增

MOVSCON,#40H;設串行口為方式1,關接收

MOVSBUF,#3FH;啟動發(fā)送提示符“?”到CRT

JNBTI,$;等待發(fā)送結束第六十三頁,共九十四頁,2022年,8月28日KEY:MOVSCON,#50H;設串行口工作方式1,啟動接收WAIT:JBCRI,GET;等待字符接收結束

AJMPWAITGET:MOVA,SBUF;接收鍵入字符

DIR:MOVSCON,#40H;關接收

MOVSBUF,A;發(fā)送字符到顯示器

JNBTI,$;等待發(fā)送結束

CLRTI;清發(fā)送標志

AJMPKEY;循環(huán)至下一字符的鍵入第六十四頁,共九十四頁,2022年,8月28日9.4.3工作方式21.工作方式2時串口的結構與特點⑴串口的內部結構定義為一個11位(9位數據位)的異步串行通信接口UART。使用其RXD(P3.0)引腳作為串行數據輸入線,使用TXD(P3.1)引腳作為串行數據輸出線。⑵以11位信息位為一幀,其中1位起始位、8位數據位、1位校驗位和1位停止位。其幀格式如下:第六十五頁,共九十四頁,2022年,8月28日2.方式2下串行口的工作過程。⑴數據的發(fā)送過程首先根據要傳送的8位數據的特征(如奇偶、地址/數據特征)決定第9個信息位的狀態(tài),并利用SETBTB8或CLRTB8指令將其設置在SCON寄存器的TB8上。然后將要傳送的8位數據D0~D7通過MOV指令寫入串行口的發(fā)送數據緩沖器SBUF,啟動串口的自動發(fā)送過程。UART自動地按起始位、數據位D0~D7、校驗位、停止位的順序將該幀信息以規(guī)定的波特率逐一從TXD引腳移出。待發(fā)送完畢后自動將SCON中的TI位置1,表示發(fā)送過程結束,編程時可通過查詢或中斷的方式開始新的信息幀的發(fā)送。第六十六頁,共九十四頁,2022年,8月28日⑵數據的接收過程首先由指令設置SCON中的REN標志,將REN置1,啟動串行口在方式2下的接收過程,UART自動地按規(guī)定的波特率從引腳RXD上逐位接收信息,移入串口中的接收移位寄存器。接收完畢后,將接收移位寄存器中的數據位D0~D7鎖入SBUF。同時將校驗位送入SCON中的RB8位,并自動將SCON中的RI置1,表示接收過程結束。編程時可通過查詢和中斷方式對下一步進行處理。3方式2下串行口波特率的設定方式2下的波特率有倍頻和不倍頻二種選擇,由PCON中的SMOD決定。當SMOD=1時,波特率=(×fosc)/64=fosc/32(倍頻)當SMOD=0時,波特率=(×fosc)×/64=fosc/64(不倍頻)第六十七頁,共九十四頁,2022年,8月28日

4.方式2下串行口的應用舉例

[例9.3]串行口工作在方式2時,第9位常用于作為奇偶校驗位使用,下面發(fā)送子程序的功能是將50H~5FH單元中的內容從串行口上發(fā)送出去。程序編制如下:

TRT:MOVSCON,#80H;方式2編程

MOVPCON,#80H;取波特率為倍頻

MOVRO,#50H;數據塊起始地址50H送R0

MOVR7,#10H;字節(jié)數10H送R7LOOP:MOVA,@RO;取數據送A

MOVC,P;A中數據的奇偶標志P送TB8MOVTB8,C

MOVSBUF,A;數據送SBUF,啟動發(fā)送WAIT:JBCTI,CONT;判斷發(fā)送過程是否結束﹖

SJMPWAITCONT:INCRO

DJNZR7,LOOPRET第六十八頁,共九十四頁,2022年,8月28日

工作方式31.工作方式3時串行口的結構和特點在方式3下,串行口的結構與方式2相同,傳送的幀格式也相同,均為每幀11位信息位,各位的定義也相同。唯一的區(qū)別在于工作方式3通信的波特率是可編程的,而不是固定的。2.方式3下串行口的工作過程在方式3下,串行口的發(fā)送和接收過程與方式2的發(fā)送和接收過程相同。3.方式3下串行口波特率的確定方式3下串行口波特率的確定與方式1完全相同,即由定時/計數器1的溢出率和PCON中的SMOD位的狀態(tài)決定,我們可以通過設置定時/計數器1的初值和SMOD位的方法來調整串行口的通信波特率,使其達到實際通信的要求。第六十九頁,共九十四頁,2022年,8月28日

4.方式3下串行口通信的應用舉例

[例9.4]編制串行口的接收程序。其功能為通過串行口以方式3接收16個字符,并寫入內部RAM中以50H開始的存儲單元之中。設fosc=11.0592MHz。波特率為2400bps。定義PSW.5(F0)為奇偶校驗出錯標志位,“1”出錯,“0”正確。其程序如下:RVE:MOVTMOD,#20H;TMOD初始化

MOVTH1,#0F4H;置初值

MOVTL1,#0F4H;置重置值

SETBTR1;啟動定時/計數器1MOVR0,#50H;地址指針R0置初值

MOVR7,#10H;10H送長度計數器R7MOVSCON,#0D0H;串行口規(guī)定為方式3接收

MOVPCON,#00H;SMOD規(guī)定為00WAIT:JBCRI,PRI;等待接收到的數據第七十頁,共九十四頁,2022年,8月28日

SJMPWAITPRI:MOVA,SBUF;接收數據→A

JNBPSW.0,PNP;判斷接收數據的奇偶狀態(tài)PJNBRB8,PER;P不等于RB8轉出錯

SJMPRIGHT;P等于RB8存儲接收數據

PNP:JBRB8,PER;P不等于RB8轉出錯RIGHT:MOV@R0,A;數據→RAM緩沖區(qū)

INCR0;修改緩沖區(qū)指針

DJNZR7,WAIT;判數據塊接收是否結束?

CLRPSW.5;正確接收完16個字節(jié)

RETPER:SETBPSW.5;奇偶校驗出錯

RET第七十一頁,共九十四頁,2022年,8月28日

9.4.5串行通信編程的程序流程

串行通信的編程有兩種方式,一種是通過指令查詢一幀數據是否發(fā)送完的標志位TI(TI=1,一幀發(fā)送完,TI≠1,沒有發(fā)送完)和通過指令查詢一幀數據是否送到的標志位RI(RI=1,一幀數據已送到,RI≠1,沒有送到),稱之查詢方式;另一種是設置中斷允許,以TI和RI作為中斷請求標志位,TI=1或RI=1均可引發(fā)中斷,稱之為中斷方式。在編程中還要注意的是TI和RI兩個標志位是以硬件自動置1,而以軟件清零的。1.以查詢方式發(fā)送和接收的程序流程第七十二頁,共九十四頁,2022年,8月28日

發(fā)送流程接收流程圖7.9查詢方式程序流程第七十三頁,共九十四頁,2022年,8月28日

2.以中斷方式發(fā)送和接收的程序流程主程序中斷服務程序圖7.10中斷發(fā)送程序流程第七十四頁,共九十四頁,2022年,8月28日

主程序中斷服務程序

圖7.11中斷接收程序流程第七十五頁,共九十四頁,2022年,8月28日

[例7.5]設甲、乙兩機利用串行口以串行方式1進行通信,采用定時/計數器1,工作在方式2作為波特率發(fā)生器,波特率為2400bps,晶振頻率采用6MHz。甲機將片外RAM中從1000H開始的少于256字節(jié)的數據從串口發(fā)送出去,發(fā)送的數據字節(jié)數在R7中,用R6作累加和寄存器。甲機發(fā)送數據之前先發(fā)聯絡信號“?”(ASCII碼為3FH),乙機有應答后,先發(fā)送待發(fā)送的數據的字節(jié)數,再發(fā)數據,當數據發(fā)送完還要向乙機發(fā)送一個累加校驗和。乙機應答信號是“.”(ASCII碼為2EH),乙機先接收數據長度,然后接收數據并送片外1000H為首地址的RAM存儲單元中,同時將數據進行累加求一個累加和,最后要與甲機發(fā)送來的累加和進行累加和校驗,如果一致,發(fā)“O”(ASCII碼為4FH)以示接收正確,如果不一致,發(fā)“F”(ASCII碼為46H),要甲方重發(fā)。

第七十六頁,共九十四頁,2022年,8月28日

通過前述波特率計算公式計算得到,定時/計數器1的定時計數初值=FAH,設甲機以查詢方式發(fā)送,乙機以中斷方式接收。編制程序如下:甲機查詢方式發(fā)送子程序:SEND:MOVTMOD,#20H;發(fā)送初始化

MOVSCON,#50H;

MOVTH1,#0FAH;

MOVTL1,#0FAH;

SETBTR1

;

MOVA,#3FH;發(fā)“?”第七十七頁,共九十四頁,2022年,8月28日

MOVSBUF,A;

JNBTI,﹩;

CLRTI;

JNBRI,﹩;等乙機應答

CLRRI;

MOVA,SBUF;接收應答

CJNEA,#2EH,SEND;應答信號是“.”,則發(fā)字節(jié)數

MOVA,R7;發(fā)字節(jié)數

MOVR3,A;

MOVSBUF,A;

JNBTI,﹩;

CLRTI;

MOVR6,#00H;準備發(fā)數據

MOVDPTR,#1000H;第七十八頁,共九十四頁,2022年,8月28日SEND1:MOVXA,@DPTR;發(fā)數據

MOVSBUF,A;

JNBTI,﹩

;

CLRTI;

ADDA,R6;累加

MOVR6,A;

INCDPTR;地址加1DJNZR7,SEND1;未發(fā)完繼續(xù)

MOVA,R6;發(fā)累加和

MOVSBUF,A;

JNBTI,﹩

CLRTI;

JNBRI,﹩;等乙機的校驗結

CLRRI;

MOVA,SBUF

;

CJNEA,#4FH,SEND2;出錯重發(fā),無錯返回

RET第七十九頁,共九十四頁,2022年,8月28日SEND2:MOVDPTR,#1000H;重發(fā)

MOVR6,#00H;

MOVA,R3;

MOVR7,A;

LJMPSEND1第八十頁,共九十四頁,2022年,8月28日乙機中斷方式接收程序:

ORG0000HLJNPMAINORG0023H

LJMPRECEORG0030HMAIN:MOVSP,#60H;初始化

MOVTMOD,#20H

MOVSCON,#50HMOVTH1,#0FAH

MOVTL1,#0FAHMOVPCON,#00HSETBTR1第八十一頁,共九十四頁,2022年,8月28日LP:CLR00H;接收聯絡信號標志位清零

CLR01H;接收字節(jié)數標志位清零

CLR02H;接收數據標志位清零

CLR03H;接收文件結束標志位清零

MOVR6,#00H

MOVDPTR,#1000HSETBEASETBESJNB03H,﹩;等待文件接收結束

LJMPLP第八十二頁,共九十四頁,2022年,8月28日RECE:CLRES;應答中斷服務程序

CLRRIJB00H,RECE1

MOVA,SBUFCJNEA,#3FH,RECE2;若是“?”則應答,否則退出

MOVA,#2EHMOVSBUF,A;發(fā)應答信號“.”

JNBTI,CLRTISETB00HSETBESRETI第八十三頁,共九十四頁,2022年,8月28日RECE2:MOVA,#24HMOVSBUF,A;發(fā)“$”符退出

JNBTI,﹩CLRTISETBES

RETIRECE1:JB01H,RECE4;接收字節(jié)數中斷服務程序

MOVA,SBUFMOVR7,A

MOVR3,ASETB01H

SETBESRETI第八十四頁,共九十四頁,2022年,8月28日

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論