單片機串行口_第1頁
單片機串行口_第2頁
單片機串行口_第3頁
單片機串行口_第4頁
單片機串行口_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2第第7章章 MCS-51的串行口的串行口沈陽航空航天大學沈陽航空航天大學2課程主要內容課程主要內容(1)串行通訊的基本概念及)串行通訊的基本概念及MCS-51串行口的串行口的SFR(2)串行口的工作方式)串行口的工作方式(3)串行口波特率的制定)串行口波特率的制定(4)串行口的編程方法)串行口的編程方法(5)雙機通訊的實現(xiàn))雙機通訊的實現(xiàn)提高:提高:MCS51的多機通訊的多機通訊MCS51與與PC機的通訊機的通訊37.1 串行通訊的基本概念串行通訊的基本概念通訊的基本方式:通訊的基本方式:串行通訊與并行通訊串行通訊與并行通訊串行同步通訊、串行異步通訊串行同步通訊、串行異步通訊單工、半雙工和全

2、雙工串行通訊單工、半雙工和全雙工串行通訊4并行通訊、串行通訊并行通訊、串行通訊并行通訊:數(shù)據(jù)各位同時傳送并行通訊:數(shù)據(jù)各位同時傳送串行通訊:數(shù)據(jù)一位一位順序傳送串行通訊:數(shù)據(jù)一位一位順序傳送5串行異步通訊串行異步通訊6串行同步通訊串行同步通訊一種串行同步通訊的方法:需要有數(shù)據(jù)端、同步時鐘端一種串行同步通訊的方法:需要有數(shù)據(jù)端、同步時鐘端脈沖端脈沖端數(shù)據(jù)端數(shù)據(jù)端7.2 MCS-51串行口的基本結構串行口的基本結構發(fā)送器:將發(fā)送器:將CPU送來的并行數(shù)送來的并行數(shù)據(jù),通過發(fā)送移位寄存器變?yōu)閾?jù),通過發(fā)送移位寄存器變?yōu)榇袛?shù)據(jù)逐位發(fā)送,并自動添串行數(shù)據(jù)逐位發(fā)送,并自動添加起始位、停止位和奇偶校驗加起始

3、位、停止位和奇偶校驗位。位。接收器:將接收到的串行數(shù)接收器:將接收到的串行數(shù)據(jù),經(jīng)接收移位寄存器變?yōu)閾?jù),經(jīng)接收移位寄存器變?yōu)椴⑿袛?shù)據(jù),去掉起始位、停并行數(shù)據(jù),去掉起始位、停止位后,將正確數(shù)據(jù)送到接止位后,將正確數(shù)據(jù)送到接收數(shù)據(jù)緩沖器,供收數(shù)據(jù)緩沖器,供CPU讀讀取。取。7串行接口邏輯部件串行接口邏輯部件框圖框圖8串行口的基本結構串行口的基本結構控制器:接收控制器:接收CPU送來送來的編程命令,按選定方的編程命令,按選定方式實現(xiàn)對串行接口的控式實現(xiàn)對串行接口的控制。主要控制參數(shù)有:制。主要控制參數(shù)有:傳送波特率的選擇、數(shù)傳送波特率的選擇、數(shù)據(jù)格式的選擇據(jù)格式的選擇 等。另外等。另外還與還與CPU

4、交換狀態(tài)信號交換狀態(tài)信號和中斷信號。和中斷信號。9串行口的基本結構串行口的基本結構SCON為串行口控制為串行口控制/狀態(tài)寄存狀態(tài)寄存器,通過編程寫入器,通過編程寫入SCON的控的控制位可選擇串行口的工作方制位可選擇串行口的工作方式,讀出式,讀出SCON的狀態(tài)位可查的狀態(tài)位可查詢串行口的工作狀態(tài)。詢串行口的工作狀態(tài)。定時定時/計數(shù)器計數(shù)器T1被用做串行口的被用做串行口的波特率發(fā)生器,由可控分頻電波特率發(fā)生器,由可控分頻電路決定數(shù)據(jù)傳送的波特率。路決定數(shù)據(jù)傳送的波特率。串行口信息的發(fā)送串行口信息的發(fā)送/接收是通過接收是通過寫寫/讀數(shù)據(jù)緩沖器讀數(shù)據(jù)緩沖器SBUF來實現(xiàn)來實現(xiàn)的。的。107.3 串行口

5、的串行口的SFR串行數(shù)據(jù)緩沖器串行數(shù)據(jù)緩沖器SBUF(99H)串行口有兩個串行口有兩個8位數(shù)據(jù)緩沖器,一個是發(fā)送數(shù)據(jù)位數(shù)據(jù)緩沖器,一個是發(fā)送數(shù)據(jù)緩沖器緩沖器SBUF,一個是接收數(shù)據(jù)緩沖器,一個是接收數(shù)據(jù)緩沖器SBUF。它們共。它們共用一個地址用一個地址99H,發(fā)送,發(fā)送SBUF只能寫入,而接收只能寫入,而接收SBUF只能讀出。只能讀出。通過指令區(qū)分:通過指令區(qū)分:MOV SBUF, AMOV A, SBUF控制寄存器控制寄存器SCON (98H)SM0 SM1 SM2 REN TB8 RB8 TI RI節(jié)電控制寄存器節(jié)電控制寄存器PCON(87H)SMOD (D7)復位后狀態(tài)均為復位后狀態(tài)均為

6、00H117.3.1 串行口控制寄存器串行口控制寄存器SCONSM0、SM1:串行口串行口4種工作方式選擇位種工作方式選擇位SM2:方式方式2和方式和方式3中的多機通信控制位。在方式中的多機通信控制位。在方式2和和方式方式3中,如中,如SM2=1,則當接收到的第,則當接收到的第9位數(shù)據(jù)位數(shù)據(jù)(RB8)為為0時,不激活接收中斷標志時,不激活接收中斷標志RI(RI=1)。在方式。在方式1中,中,如如SM2=1,則只有當接收到有效停止位時才激活,則只有當接收到有效停止位時才激活RI,若沒有接收到有效停止位,則若沒有接收到有效停止位,則RI清清0。在方式。在方式0中,中,SM2必須為必須為0。REN:

7、允許串行接收位。允許串行接收位。REN=1允許接收;允許接收;REN=0禁止接收,由軟件置位或清零。禁止接收,由軟件置位或清零。TB8:是工作在方式是工作在方式2和和3時,要發(fā)送的第時,要發(fā)送的第9位數(shù)據(jù)。可位數(shù)據(jù)。可由軟件置由軟件置1或清或清0。在許多的通訊協(xié)議中該位是奇偶校。在許多的通訊協(xié)議中該位是奇偶校驗位。驗位。在多機通訊中用來表示是地址幀還是數(shù)據(jù)幀,在多機通訊中用來表示是地址幀還是數(shù)據(jù)幀,TB8=1為地址幀,為地址幀,TB80為數(shù)據(jù)幀。為數(shù)據(jù)幀。12串行口控制寄存器串行口控制寄存器SCONRB8:當工作在方式當工作在方式2和和3時,為接收到的第時,為接收到的第9位數(shù)據(jù)。位數(shù)據(jù)。TI:

8、發(fā)送中斷標志位,在方式發(fā)送中斷標志位,在方式0串行發(fā)送第串行發(fā)送第8位數(shù)據(jù)結束位數(shù)據(jù)結束時由硬件置時由硬件置1,或在其它方式串行發(fā)送停止位后置,或在其它方式串行發(fā)送停止位后置1,并申請中斷。并申請中斷。CPU響應中斷后,可發(fā)送下一幀數(shù)據(jù),響應中斷后,可發(fā)送下一幀數(shù)據(jù),TI必須由軟件清必須由軟件清0。RI:為接收結束中斷標志。在方式為接收結束中斷標志。在方式0中,當接收到一幀數(shù)中,當接收到一幀數(shù)據(jù)的第據(jù)的第8位結束時,位結束時,RI=1。在其他方式中,接收到停止。在其他方式中,接收到停止位后,位后,RI=1,表示可讀取接收,表示可讀取接收SBUF中的內容。中的內容。RI必必須用軟件清須用軟件清0

9、。每次發(fā)送和接收前,要注意先將每次發(fā)送和接收前,要注意先將TI和和RI標志位清標志位清0 。串行口作為一個中斷源,中斷入口地址只有一個串行口作為一個中斷源,中斷入口地址只有一個(0023H),當用中斷方式同時進行發(fā)送和接收時,可通過查詢當用中斷方式同時進行發(fā)送和接收時,可通過查詢TI和和RI狀態(tài),狀態(tài),確定是發(fā)送還是接收結束引起的中斷。確定是發(fā)送還是接收結束引起的中斷。137.3.2 節(jié)電控制寄存器節(jié)電控制寄存器PCONPCON主要用于節(jié)電運行方式控制,主要用于節(jié)電運行方式控制, PCON.7用做用做串行口波特率加倍控制位。當設定串行口波特率加倍控制位。當設定SMOD=1時,波時,波特率加倍,

10、當特率加倍,當SMOD=0時,波特率不加倍。時,波特率不加倍。147.4 串行口的工作方式串行口的工作方式SM0、SM1工作方式選擇位工作方式選擇位UART串行異步串行異步15RXD數(shù)據(jù)輸出數(shù)據(jù)輸出7.4.1 工作方式工作方式 0 :(SM0=0 SM1=0)串行口方式串行口方式0為為8位數(shù)據(jù)同步移位寄存器方式。位數(shù)據(jù)同步移位寄存器方式。RXD引腳引腳為同步數(shù)據(jù)的輸入為同步數(shù)據(jù)的輸入/輸出端,輸出端,TXD引腳為同步移位脈沖輸引腳為同步移位脈沖輸 出端。一個數(shù)據(jù)幀為出端。一個數(shù)據(jù)幀為8位,每一個移位脈沖對應數(shù)據(jù)幀的位,每一個移位脈沖對應數(shù)據(jù)幀的 一個數(shù)據(jù)位。方式一個數(shù)據(jù)位。方式0的波特率固定為

11、的波特率固定為fosc/12。TXDREN=0寫寫 SBUFD0D1D2D3D4D5D6D7串行口方式串行口方式 0 工作時序圖工作時序圖TI(a) 發(fā)送時序圖發(fā)送時序圖TXDREN=1RI=0RXD輸入數(shù)據(jù)輸入數(shù)據(jù)RI(b) 接收時序圖接收時序圖16方式方式0的說明的說明:l發(fā)送:發(fā)送:寫入寫入SCON使使REN=0,TI=0;然后執(zhí)行寫入;然后執(zhí)行寫入SBUF的指令,的指令,8位位數(shù)據(jù)裝入發(fā)送數(shù)據(jù)裝入發(fā)送SBUF,硬件啟動串行口發(fā)送器進行一次發(fā)送。通過發(fā)送,硬件啟動串行口發(fā)送器進行一次發(fā)送。通過發(fā)送移位寄存器將移位寄存器將8位數(shù)據(jù)逐位送到位數(shù)據(jù)逐位送到RXD引腳,每個機器周期內發(fā)送一位數(shù)引

12、腳,每個機器周期內發(fā)送一位數(shù)據(jù)。對應發(fā)送數(shù)據(jù)的每一位,由據(jù)。對應發(fā)送數(shù)據(jù)的每一位,由TXD引腳同步輸出一個移位脈沖。發(fā)送引腳同步輸出一個移位脈沖。發(fā)送完一幀,自動置位完一幀,自動置位TI標志,并申請串行口中斷。若標志,并申請串行口中斷。若CPU響應中斷,則將響應中斷,則將從從0023H單元開始執(zhí)行串行口的中斷服務程序。單元開始執(zhí)行串行口的中斷服務程序。l接受:接受:寫入寫入SCON使使REN = 1、RI = 0,將啟動串行口接收器開始接收。,將啟動串行口接收器開始接收。由由TXD輸出移位脈沖,每對應一個移位脈沖,采樣一次輸出移位脈沖,每對應一個移位脈沖,采樣一次RXD引腳信號。引腳信號。每個

13、機器周期采樣一次每個機器周期采樣一次RXD引腳,采到的數(shù)據(jù)位送入接收移位寄存引腳,采到的數(shù)據(jù)位送入接收移位寄存器后,接收移位寄存器左移一位。接收完一幀,自動置位器后,接收移位寄存器左移一位。接收完一幀,自動置位RI標志,申標志,申請串行口中斷,并將接收下來的請串行口中斷,并將接收下來的8位數(shù)據(jù)裝入接收位數(shù)據(jù)裝入接收SBUF。若。若CPU響應響應中斷,則從中斷,則從0023H單元開始執(zhí)行串行口的中斷服務程序。單元開始執(zhí)行串行口的中斷服務程序。串行口方式串行口方式0常用于擴展單片機的并行常用于擴展單片機的并行I/O口,也可外接串口,也可外接串行同步行同步I/O設備。用方式設備。用方式0輸入輸入/輸

14、出數(shù)據(jù)皆通過輸出數(shù)據(jù)皆通過RXD端,因端,因此方式此方式0為半雙工方式,只能分時進行發(fā)送和接收。為半雙工方式,只能分時進行發(fā)送和接收。7.4.2 方式方式1(SM0=0SM1=1)功能說明:串行口方式功能說明:串行口方式1為為8位數(shù)據(jù)全雙工異步位數(shù)據(jù)全雙工異步通信方式。通信方式。TXD為發(fā)送數(shù)據(jù)端,為發(fā)送數(shù)據(jù)端,RXD為接收數(shù)為接收數(shù)據(jù)端。一個數(shù)據(jù)幀為據(jù)端。一個數(shù)據(jù)幀為10位,包含位,包含8位數(shù)據(jù)位,位數(shù)據(jù)位,1個起始位個起始位“0”和和1個停止位個停止位“1”。串行口用方式。串行口用方式1工作時,使用定時器工作時,使用定時器T1作為波特率發(fā)生器,波作為波特率發(fā)生器,波特率的設定以特率的設定以

15、T1的溢出率為基準,波特率計算的溢出率為基準,波特率計算式為:式為:(2 /32)T1溢出率。溢出率。17SMOD方式方式1的時序圖的時序圖寫入寫入SBUFTXD數(shù)據(jù)輸出數(shù)據(jù)輸出D0D1D2D3D4D5D6D7停止位停止位起始位起始位RXD輸入數(shù)據(jù)輸入數(shù)據(jù)D0D1D2D3D4D5D6D7停止位停止位起始位起始位采樣采樣RI(b) 接收時序圖接收時序圖串行口方式串行口方式1工作時序圖工作時序圖18TI(a) 發(fā)送時序圖發(fā)送時序圖檢測檢測REN=1,負跳變負跳變方式方式1功能說明功能說明執(zhí)行寫入執(zhí)行寫入SBUF指令,指令,將將8位數(shù)據(jù)裝入發(fā)送位數(shù)據(jù)裝入發(fā)送SBUF,并啟動發(fā)送,并啟動發(fā)送器進行一次

16、發(fā)送:先將起始位器進行一次發(fā)送:先將起始位“0”送到送到TXD引腳,再從低到高引腳,再從低到高逐位發(fā)送逐位發(fā)送8位數(shù)據(jù),最后發(fā)送停止位位數(shù)據(jù),最后發(fā)送停止位“1”。每位發(fā)送占用的時。每位發(fā)送占用的時間由設定的波特率決定。發(fā)送完一幀數(shù)據(jù),置位間由設定的波特率決定。發(fā)送完一幀數(shù)據(jù),置位TI標志,申標志,申請串行口中斷。請串行口中斷。當當REN=1時時,允許接收器準備接收。開始,以,允許接收器準備接收。開始,以16倍于波特率的倍于波特率的速率檢測速率檢測RXD引腳的負跳變,當檢測到負跳變后,啟動一次接引腳的負跳變,當檢測到負跳變后,啟動一次接收,接收完一幀信息,判斷是否滿足條件:收,接收完一幀信息,

17、判斷是否滿足條件:RI = 0,而且停止,而且停止位為位為1(或或SM2=0)。若同時滿足這兩個條件,則置位。若同時滿足這兩個條件,則置位RI標志,申標志,申請串行口中斷,并將接收的請串行口中斷,并將接收的8位數(shù)據(jù)裝入接收位數(shù)據(jù)裝入接收SBUF,停止位裝,停止位裝入入RB8;否則接收無效,丟失所接收的一幀信息,且不影響;否則接收無效,丟失所接收的一幀信息,且不影響RI標志。一位時間以后,接收器重新開始檢測標志。一位時間以后,接收器重新開始檢測RXD端的負跳變,端的負跳變,以準備接收下一幀數(shù)據(jù)。以準備接收下一幀數(shù)據(jù)。19207.4.3 方式方式2、方式、方式3串行口方式串行口方式2和方式和方式3

18、皆為皆為9位數(shù)據(jù)全雙工異步通位數(shù)據(jù)全雙工異步通信方式,比串行口方式信方式,比串行口方式1增加了第增加了第9位數(shù)據(jù)位。位數(shù)據(jù)位。TXD為為發(fā)送數(shù)據(jù)端,發(fā)送數(shù)據(jù)端,RXD為接收數(shù)據(jù)端。一幀信息有為接收數(shù)據(jù)端。一幀信息有11位,位,包括包括9位數(shù)據(jù)位,位數(shù)據(jù)位,1個起始位個起始位“0”和和1個停止位個停止位“1”。發(fā)送。發(fā)送數(shù)據(jù)的第數(shù)據(jù)的第9位在位在TB8中,接收數(shù)據(jù)的第中,接收數(shù)據(jù)的第9位存入位存入RB8中。第中。第9位數(shù)據(jù)位也稱為可編程位,常用做奇偶校檢位數(shù)據(jù)位也稱為可編程位,常用做奇偶校檢位或多機通信中的地址位或多機通信中的地址/數(shù)據(jù)識別位。數(shù)據(jù)識別位。串行口的方式串行口的方式2與方式與方式3

19、的唯一差別是波特率設的唯一差別是波特率設定方法不同,方式定方法不同,方式2的波特率以系統(tǒng)時鐘為基準,計的波特率以系統(tǒng)時鐘為基準,計算式為:算式為:(2 /64) fosc。方式。方式3的波特率與方式的波特率與方式1的的相同,計算式為:相同,計算式為:(2 /32)T1溢出率。溢出率。SMODSMOD方式方式2、3的時序的時序寫入寫入SBUFTXD數(shù)據(jù)輸出數(shù)據(jù)輸出RXD輸入數(shù)據(jù)輸入數(shù)據(jù)RI(b) 接收時序圖接收時序圖串行口方式串行口方式 2、方式、方式 3 工作時序圖工作時序圖21D0D1D2D3D4D5D6TB8停止位停止位起始位起始位D7D0D1D2D3D4D5D6RB8停止位停止位起始位起

20、始位D7TI(a) 發(fā)送時序圖發(fā)送時序圖REN=1, 檢測檢測負跳變負跳變22方式方式2、3的功能說明的功能說明發(fā)送時,應先將發(fā)送數(shù)據(jù)的第發(fā)送時,應先將發(fā)送數(shù)據(jù)的第9位送入位送入TB8,再寫入,再寫入8位位數(shù)據(jù)到發(fā)送數(shù)據(jù)到發(fā)送SBUF,使發(fā)送器啟動一次發(fā)送,將一幀數(shù)據(jù),使發(fā)送器啟動一次發(fā)送,將一幀數(shù)據(jù)逐位送到逐位送到TXD引腳:發(fā)送起始位引腳:發(fā)送起始位“0”之后,再發(fā)送之后,再發(fā)送SBUF中的中的8位數(shù)據(jù),接著發(fā)送位數(shù)據(jù),接著發(fā)送TB8中的第中的第9位,最后發(fā)送停止位,最后發(fā)送停止位位“1”。一幀發(fā)送結束,置位。一幀發(fā)送結束,置位TI標志,申請串行口中斷。標志,申請串行口中斷。方式方式2和方

21、式和方式3的接收過程和方式的接收過程和方式1的接收過程基本相同,的接收過程基本相同,但但RB8中裝入的是接收數(shù)據(jù)的第中裝入的是接收數(shù)據(jù)的第9位,而不是停止位。接位,而不是停止位。接收有效必須同時滿足的兩個條件改為:收有效必須同時滿足的兩個條件改為:RI=0,且接收的,且接收的第第9位數(shù)據(jù)位為位數(shù)據(jù)位為1(或或SM2=0)。當正確接收到一幀。當正確接收到一幀數(shù)據(jù)后,數(shù)據(jù)后,前面前面8位數(shù)據(jù)進入接收位數(shù)據(jù)進入接收SBUF,第,第9位數(shù)據(jù)進入位數(shù)據(jù)進入RB8。237.5 波特率的制定波特率的制定波特率的定義:串行口每秒鐘發(fā)送或者接收的位數(shù)波特率的定義:串行口每秒鐘發(fā)送或者接收的位數(shù).串行口方式串行口

22、方式0的波特率是固定的,為系統(tǒng)時鐘的的波特率是固定的,為系統(tǒng)時鐘的12分頻分頻(fosc/12),即每個機器周期傳送一位數(shù)據(jù)位。,即每個機器周期傳送一位數(shù)據(jù)位。串行口用方式串行口用方式2工作時,波特率為工作時,波特率為(2 /64)fosc 。SMOD為為PCON中的中的D7位,即波特率加倍選擇位。方式位,即波特率加倍選擇位。方式2可有兩種波可有兩種波特率供選擇,當特率供選擇,當SMOD=0時,波特率為時,波特率為fosc/64;當;當SMOD=1時,時,波特率則為波特率則為fosc/32 。串行口方式串行口方式1和方式和方式3用定時器用定時器T1作為波特率發(fā)生器,作為波特率發(fā)生器,其波其波特

23、率有多種選擇,與特率有多種選擇,與T1的溢出率有關。的溢出率有關。波特率波特率= (2 32)T1溢出率溢出率SMODSMOD串行口方式串行口方式1和方式和方式3的波特率的波特率= = 24定時器定時器T1產(chǎn)生波特率的計算產(chǎn)生波特率的計算T1溢出率:溢出率:T1溢出時間的倒數(shù)。溢出時間的倒數(shù)。T1用于波特率發(fā)生器時一般工作于非門控定時器方式用于波特率發(fā)生器時一般工作于非門控定時器方式2,即常數(shù),即常數(shù)自動重裝入方式。自動重裝入方式。TH1 = TL1為為T1的時間常數(shù)的時間常數(shù)f osc12 (2 - - TH1)= =T1溢出率溢出率232fosc12 (256 - TH1)8SMOD25定

24、時器定時器T1產(chǎn)生波特率的計算產(chǎn)生波特率的計算串行口用方式串行口用方式1和方式和方式3工作時,當需要很低的波特率時,也工作時,當需要很低的波特率時,也可選擇可選擇T1工作于方式工作于方式1,但需利用,但需利用T1溢出中斷來實現(xiàn)軟件重溢出中斷來實現(xiàn)軟件重裝初值,裝初值,T1用方式用方式1工作時溢出率為:工作時溢出率為:N為為T1溢出后用軟件重裝初值所需的機器周期數(shù)。溢出后用軟件重裝初值所需的機器周期數(shù)。fosc122 - (TH1TL1) + + N16 26T1產(chǎn)生的常用波特率產(chǎn)生的常用波特率27波特率計算的幾點注意事項:波特率計算的幾點注意事項:1)波特率的相對誤差不大于)波特率的相對誤差不

25、大于2.5%2)注意)注意SMOD位對波特率的影響位對波特率的影響例如:通訊波特率設為例如:通訊波特率設為2400,晶振頻率為,晶振頻率為6MHz,計算,計算T1的計時常數(shù)。的計時常數(shù)。當當SMOD=0時,計時常數(shù)約為時,計時常數(shù)約為249,相對誤差,相對誤差 7%。當當SMOD=1時,計時常數(shù)約為時,計時常數(shù)約為243,相對誤差,相對誤差0.16%。287.6 串行口的編程舉例串行口的編程舉例設定波特率設定波特率設定串行口的工作方式設定串行口的工作方式設計中斷服務程序或查詢程序設計中斷服務程序或查詢程序注意對注意對TI、RI的處理(硬件置位、軟件清零)的處理(硬件置位、軟件清零)29例例1:

26、 方式方式2發(fā)送發(fā)送50H5FH中內容中內容ORGAJMPORGAJMPORG0000H;復位入口;復位入口MAINT0023H;串行口中斷入口;串行口中斷入口TRANI0100H;主程序入口;主程序入口MAINT: MOVSCON,#80H;串行口初始化,用;串行口初始化,用;方式;方式2發(fā)送,發(fā)送,TI=0;波特率;波特率= fosc32MOVSETBPCON,#80HEASETBES;允許串行口中斷;允許串行口中斷MOVMOVR0,#50HR7,#10H;設數(shù)據(jù)指針;設數(shù)據(jù)指針;數(shù)據(jù)長度;數(shù)據(jù)長度30LOOP: MOVA,R0;取一個字符;取一個字符;加奇偶校驗;加奇偶校驗MOVMOVC

27、,PTB8,CMOVSBUF,A;發(fā)送一個字符;發(fā)送一個字符HERE:SJMPTRANI:CLRHERETI;CPU執(zhí)行其他任務,同時等待發(fā)送結束執(zhí)行其他任務,同時等待發(fā)送結束;中斷服務程序,發(fā)送結束標志清;中斷服務程序,發(fā)送結束標志清0DJNZR7,NEXT;發(fā)送完全部字符;發(fā)送完全部字符?CLRSJMPNEXT: INCESTENDR0;已發(fā)送完,關閉串行口中斷;已發(fā)送完,關閉串行口中斷;未發(fā)送完,修改指針;未發(fā)送完,修改指針MOVA,R0;取下一個字符;取下一個字符;加奇偶校驗;加奇偶校驗MOVMOVC,PTB8,CMOVSBUF,A;再次發(fā)送一個字符;再次發(fā)送一個字符TEND:RETI

28、;中斷返回主程序;中斷返回主程序317.7 MCS-51雙機串行通訊的實現(xiàn)雙機串行通訊的實現(xiàn)如何進行物理連線?如何進行物理連線?波特率的選擇?波特率的選擇?工作方式的選擇?工作方式的選擇?如何編程實現(xiàn)?如何編程實現(xiàn)?32雙機串行通訊的實現(xiàn)雙機串行通訊的實現(xiàn)-17.7.1 正確進行物理接線正確進行物理接線33雙機串行通訊的實現(xiàn)雙機串行通訊的實現(xiàn)-2設定一致的波特率設定一致的波特率設定一致的串行口工作方式設定一致的串行口工作方式分別設計中斷服務程序或查詢程序分別設計中斷服務程序或查詢程序注意對注意對TI、RI的處理的處理(硬件置位、軟件清零)(硬件置位、軟件清零)347.7.2 方式方式3發(fā)送發(fā)送

29、50H5FH的內容的內容待發(fā)送的待發(fā)送的16個字節(jié)存放在片內個字節(jié)存放在片內RAM中中地址為地址為50H5FH串行口波特率為串行口波特率為2400波特率發(fā)生器波特率發(fā)生器T1工作于方式工作于方式2,且且SMOD=0晶振為晶振為11.0592MHz計算得到計算得到TL1的初值為的初值為F4H串行口工作于方式串行口工作于方式3第第9位發(fā)送奇偶校驗位位發(fā)送奇偶校驗位35例例2: 方式方式3發(fā)送發(fā)送50H5FH中內容中內容-1ORG 0000HAJMP MAINORG 0023HAJMP L1ORG 0100HMAIN: MOV SCON,#0C0H;復位入口;復位入口;串行口中斷入口;串行口中斷入口

30、;主程序入口;主程序入口;串行口初始化,用方式;串行口初始化,用方式2發(fā)送,發(fā)送,TI=0MOV PCON,#00H;SMOD=0MOV;T1方式方式2定時定時;寫入;寫入T1時間常數(shù)時間常數(shù) TMOD,#20HMOV TL1,#0F4HMOV TH1,#0F4H;啟動;啟動T1SETB TR1SETB EASETB ESMOV R0,#50HMOV R7,#10H;允許串行口中斷;允許串行口中斷;設數(shù)據(jù)指針;設數(shù)據(jù)指針;數(shù)據(jù)長度;數(shù)據(jù)長度LOOP: MOV A,R0;取一個字符;取一個字符MOV C,PMOV TB8,CMOV SBUF,A;加奇偶校驗;加奇偶校驗;發(fā)送一個字符;發(fā)送一個字符

31、HERE: SJMPHERE;CPU原地循環(huán),等待發(fā)送結束原地循環(huán),等待發(fā)送結束36例例2: 方式方式3發(fā)送發(fā)送50H5FH中內容中內容-2L1:TIR7,NEXTESTENDR0A,R0C,PTB8,CSBUF,ACLRDJNZCLRSJMPNEXT:INCMOVMOVMOVMOVTEND:RETI;中斷服務程序,;中斷服務程序, 發(fā)送結束標志位清發(fā)送結束標志位清0;發(fā)送完全部字符;發(fā)送完全部字符?;已發(fā)送完,關閉串行口中斷;已發(fā)送完,關閉串行口中斷;未發(fā)送完,修改指針;未發(fā)送完,修改指針;取下一個字符;取下一個字符;加奇偶校驗;加奇偶校驗;再次發(fā)送一個字符;再次發(fā)送一個字符;中斷返回主程序

32、;中斷返回主程序377.7.3 方式方式3接收接收接收到的接收到的16個字節(jié)存放在片內個字節(jié)存放在片內RAM中中地址為地址為50H5FH串行口波特率為串行口波特率為2400波特率發(fā)生器波特率發(fā)生器T1工作于方式工作于方式2, 且且SMOD=0晶振為晶振為11.0592MHz計算得到計算得到TL1的初值為的初值為0F4H串行口工作于方式串行口工作于方式3奇偶校驗方式判斷接收數(shù)據(jù)是否出錯奇偶校驗方式判斷接收數(shù)據(jù)是否出錯設校驗出錯標志位為設校驗出錯標志位為F0MAIN: MOVMOVSCON,#0D0H ;串行口方式;串行口方式3允許接收,允許接收,RI=0PCON,#00H ;SMOD=0MOV

33、TMOD,#20HMOV TL1,#0F4HMOV TH1,#0F4HSETB TR1;T1方式方式2定時定時;寫入;寫入T1時間常數(shù)時間常數(shù);啟動;啟動T1LCALL AAAASJMP $38方式方式3接收接收-查詢查詢39方式方式3接收接收-查詢查詢AAAA: MOV MOV R7,#10HWAIT: JBC SJMPR0,#50H ;設數(shù)據(jù)指針;設數(shù)據(jù)指針 ;數(shù)據(jù)長度;數(shù)據(jù)長度RI,NEXT ;查詢;查詢RI標志,等待串行口接收結束標志,等待串行口接收結束WAITNEXT: MOVJNBJNBSJMPCOMP:JBRIGHT:MOVA,SBUFP,COMPRB8,ERRRIGHTRB8,

34、ERRR0,A;讀取一個接收字符;讀取一個接收字符;進行奇偶校驗;進行奇偶校驗;PRB8,數(shù)據(jù)出錯,數(shù)據(jù)出錯;P=RB8,數(shù)據(jù)正確,數(shù)據(jù)正確;保存一個字符到片內;保存一個字符到片內RAMINC R0DJNZ;修改指針;修改指針R7,WAIT ;全部字符接收完;全部字符接收完?F0F0CLRRETERR: SETBRET;F0 =0,接收數(shù)據(jù)全部正確,接收數(shù)據(jù)全部正確;返回主程序;返回主程序;F0 =1,接收數(shù)據(jù)出錯,接收數(shù)據(jù)出錯;返回主程序;返回主程序40雙機通訊小結雙機通訊小結物理接線物理接線: TXD-RXD、RXD-TXD、共地、共地必須一致的波特率必須一致的波特率必須一致的工作方式必須

35、一致的工作方式各自的發(fā)送和接收程序可以不同各自的發(fā)送和接收程序可以不同417.4 提高:多機通訊提高:多機通訊主機與各從機實現(xiàn)全雙工通信,而各從機之間只能主機與各從機實現(xiàn)全雙工通信,而各從機之間只能通過主機交換信息。通過主機交換信息。下圖是由下圖是由MCS-51構成的的集散式分布系統(tǒng)構成的的集散式分布系統(tǒng)427.4.1 多機通訊的基本原理多機通訊的基本原理多機通信控制位多機通信控制位SM2的使用:的使用:當串行口以方式當串行口以方式2(或方式或方式3)接收時,若接收時,若SM2=1,則只有接,則只有接收到第收到第9位數(shù)據(jù)為位數(shù)據(jù)為1,才將接收的數(shù)據(jù)裝入接收,才將接收的數(shù)據(jù)裝入接收SBUF,并置

36、位,并置位RI標志;否則,不會置位標志;否則,不會置位RI,也不產(chǎn)生中斷請求,一幀信息被,也不產(chǎn)生中斷請求,一幀信息被丟棄。丟棄。若若SM2=0,則接收到的第,則接收到的第9位不論為位不論為0還是為還是為1,都會將數(shù),都會將數(shù)據(jù)裝入據(jù)裝入SBUF,并置位,并置位RI標志。根據(jù)這一功能,可實現(xiàn)多機系標志。根據(jù)這一功能,可實現(xiàn)多機系統(tǒng)中的主從一對一通信。統(tǒng)中的主從一對一通信。43現(xiàn)將多機通信步驟概述如下:現(xiàn)將多機通信步驟概述如下:1) 令所有從機令所有從機SM2=1,處于只接收地址幀狀態(tài)(第,處于只接收地址幀狀態(tài)(第9位為位為1)。)。2) 主機令主機令TB8=1,并發(fā)送地址呼叫信息。,并發(fā)送地址

37、呼叫信息。3) 各從機接收到地址幀后,將接收到的地址與本機各從機接收到地址幀后,將接收到的地址與本機地址編號相比較,確認是否為被呼叫目標。地址編號相比較,確認是否為被呼叫目標。4) 被呼叫從機使被呼叫從機使SM2清清0,變?yōu)榻邮諗?shù)據(jù)幀狀態(tài),變?yōu)榻邮諗?shù)據(jù)幀狀態(tài),而未被呼叫從機仍保持而未被呼叫從機仍保持SM2=1。5) 主機使主機使TB8=0,發(fā)送控制或數(shù)據(jù)信息。,發(fā)送控制或數(shù)據(jù)信息。6) 只有只有SM2=0的從機能接收到控制或數(shù)據(jù)信息,仍的從機能接收到控制或數(shù)據(jù)信息,仍保持保持SM2=1的從機不予理睬。的從機不予理睬。44TRM02:AGAIN:MOVMOVSCON, #98HSBUF, #02

38、H;串口方式;串口方式2,TB8=1;呼叫;呼叫02號從機號從機W1:W2:;等待發(fā)送一幀結束;等待發(fā)送一幀結束;等待從機應答;等待從機應答JBCSJMPJBCSJMPTI, W2W1RI, ANSW2ANS:MOVA, SBUF ;取應答地址;取應答地址;是否;是否02號從機應答號從機應答XRLJZA, #02HDTRMOVSBUF, #0FFH;不是;不是02號,發(fā)復位信號號,發(fā)復位信號W3:JBCSJMPTI, AGAIN ;復位后,重新呼叫;復位后,重新呼叫W3DTR:CLRTB8;聯(lián)絡成功,換數(shù)據(jù)幀;聯(lián)絡成功,換數(shù)據(jù)幀MOVMOVR0, #50H ;開始發(fā)送數(shù)據(jù)串;開始發(fā)送數(shù)據(jù)串R7

39、, #10H7.4.2 編程實現(xiàn)編程實現(xiàn)簡單編程:簡單編程:主機向主機向02號從機發(fā)送號從機發(fā)送50H5FH單元內的數(shù)據(jù)。發(fā)送程序如下:單元內的數(shù)據(jù)。發(fā)送程序如下:45LOOP:MOVA, R0MOVSBUF, A;發(fā)送數(shù)據(jù);發(fā)送數(shù)據(jù)W4:NEXT:JBCSJMPINCTI, NEXTW4R0DJNZR7, LOOP;發(fā)送完全部數(shù)據(jù)?;發(fā)送完全部數(shù)據(jù)?SETBTB8;發(fā)送結束,使從機復位;發(fā)送結束,使從機復位MOVSBUF, #0FFHTI, TENDW5W5:TEND:JBCSJMPRET46從機程序從機程序RECEV:MOVSCON, #0B0H;串口方式;串口方式2接收,接收,SM2=1

40、W1:JBC RI, ACOMP;接收主機呼叫;接收主機呼叫(監(jiān)聽監(jiān)聽)SJMPACOMP:MOVXRLW1A, SBUF ;取呼叫地址;取呼叫地址A, #02H ;判斷是否呼叫本機;判斷是否呼叫本機JNZCLRW1SM2;不是返回監(jiān)聽狀態(tài);不是返回監(jiān)聽狀態(tài);是呼叫本機,;是呼叫本機,SM2=0MOVSBUF, #02H;向主機應答;向主機應答W2:JBCSJMPTI,DREW2DRE:W3:MOVMOVJBCR0, #50HR7, #10HRI, NEXT;準備開始接收主機數(shù)據(jù);準備開始接收主機數(shù)據(jù);等待接收;等待接收SJMPNEXT: JNBW3RB8, RECB;是否為復位信號?;是否為

41、復位信號?LJMPRECEV;復位,恢復監(jiān)聽狀態(tài);復位,恢復監(jiān)聽狀態(tài)RECB: MOVMOVINCDJNZA, SBUF ;讀取接收數(shù)據(jù);讀取接收數(shù)據(jù)R0, AR0R7, W3LJMPRECEV7.5 使用使用MCS51串行口串行通訊的局限性串行口串行通訊的局限性MCS-51MCS-51串行口的輸入、輸出均為串行口的輸入、輸出均為TTLTTL電平電平, ,抗抗干擾性差,傳輸距離短。干擾性差,傳輸距離短。為提高串行通訊的可靠性,增大串行通訊的距為提高串行通訊的可靠性,增大串行通訊的距離,采用標準串行接口,如離,采用標準串行接口,如RS-232RS-232、RS-422ARS-422A、RS-48

42、5RS-485等標準。等標準。477.5.17.5.1RS-232CRS-232C接口接口RS232RS232接口定義數(shù)據(jù)終端設備(接口定義數(shù)據(jù)終端設備(DTEDTE)和數(shù)據(jù))和數(shù)據(jù)通訊設備(通訊設備(DCEDCE)之間的串行接口標準。)之間的串行接口標準。RS-232RS-232是由美國電子工業(yè)協(xié)會(是由美國電子工業(yè)協(xié)會(EIAEIA)于)于19621962年制定的標準年制定的標準. .,臺式機一般都具有標準的,臺式機一般都具有標準的RS232RS232接口。接口。RS232RS232采用負邏輯,采用負邏輯,-12V-12V表示邏輯表示邏輯“1 1”+12V+12V表示邏輯表示邏輯“0 0”

43、4849下圖是兩臺計算機利用下圖是兩臺計算機利用MODEMMODEM、電話線進行遠、電話線進行遠距離串行通訊的示意圖,距離串行通訊的示意圖,DTEDTE為計算機,為計算機,DCEDCE的的典型代表是典型代表是MODEMMODEM。50RS-232C的“D”型9針插頭的引腳定義517.5.2 雙雙MCS51通過通過RS232接口通訊接口通訊52MAX232接口芯片接口芯片53547.5.3 RS422接口在接口在MCS51中的應用中的應用557.5.4 RS485的應用(也可使用的應用(也可使用MAX485芯片)芯片)提高:提高:MCS51與臺式機的串行通訊與臺式機的串行通訊MCS51串行口串行口需外加需外加MAX232芯片進行接口電芯片進行接口電平轉換,才能與平轉換,才能與臺式機串行接口臺式機串行接口相連。相連。其他的設置,如其他的設置,如波特率、數(shù)據(jù)格波特率、數(shù)據(jù)格式的要求同雙機式的要求同雙機通訊。通訊。56577.5.5 20mA電流環(huán)的應用電流環(huán)的應用58習題習題1

溫馨提示

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

評論

0/150

提交評論