單元5串行通信_第1頁
單元5串行通信_第2頁
單元5串行通信_第3頁
單元5串行通信_第4頁
單元5串行通信_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、單元單元5 AT89S52 AT89S52串行通信串行通信 單元單元5 AT89S52 AT89S52串行通信串行通信 學習目標:學習目標:了解串行通信的基本知識了解串行通信的基本知識掌握串行口的工作方式掌握串行口的工作方式掌握波特率的設(shè)計掌握波特率的設(shè)計掌握串行口工作方式的應用掌握串行口工作方式的應用掌握程序調(diào)試的基本方法和技巧。掌握程序調(diào)試的基本方法和技巧。技能目標:技能目標:會對串行口進行初始化。會對串行口進行初始化。會計算串行口通信波特率。會計算串行口通信波特率。能夠?qū)崿F(xiàn)單片機與單片機之間、單片機和能夠?qū)崿F(xiàn)單片機與單片機之間、單片機和PCPC機機之間的通信。之間的通信。單元單元5 AT

2、89S52 AT89S52串行通信串行通信 項目一項目一 單片機點對點通信單片機點對點通信第一部分第一部分 項目要求項目要求 利用利用AT89S52AT89S52實現(xiàn)單片機點對點通信。實現(xiàn)單片機點對點通信。要求將存放在甲機的數(shù)據(jù)存儲器要求將存放在甲機的數(shù)據(jù)存儲器20H27H20H27H單元中數(shù)據(jù),首先在甲機上顯示,然后發(fā)送單元中數(shù)據(jù),首先在甲機上顯示,然后發(fā)送到到PCPC機,進而再發(fā)送到乙機,以實現(xiàn)單片機,進而再發(fā)送到乙機,以實現(xiàn)單片機與機與PCPC機和單片機與單片機之間的通信。機和單片機與單片機之間的通信。 單元單元5 AT89S52 AT89S52串行通信串行通信 第二部分第二部分 相關(guān)知

3、識相關(guān)知識一、串行通信基本知識一、串行通信基本知識(一)串行通信的基本概念(一)串行通信的基本概念單工單工形式:數(shù)據(jù)只能形式:數(shù)據(jù)只能單方向從一端向另一單方向從一端向另一端傳送;如:有線電端傳送;如:有線電視節(jié)目。視節(jié)目。發(fā)送端發(fā)送端接收端接收端數(shù)據(jù)線數(shù)據(jù)線地線地線半雙工半雙工形式:數(shù)據(jù)可以形式:數(shù)據(jù)可以雙向傳送,但任一時刻雙向傳送,但任一時刻只能向一個方向傳送。只能向一個方向傳送。既可分時雙向傳送數(shù)據(jù)既可分時雙向傳送數(shù)據(jù) 。如:某些對講機如:某些對講機單工單工發(fā)送端發(fā)送端接收端接收端接收端接收端發(fā)送端發(fā)送端數(shù)據(jù)線數(shù)據(jù)線地線地線半雙工半雙工單元單元5 AT89S52 AT89S52串行通信串行

4、通信 全雙工全雙工形式:同時雙向傳送數(shù)據(jù),因此,全雙工配置形式:同時雙向傳送數(shù)據(jù),因此,全雙工配置是一對單向配置,它要求兩端的通信設(shè)備都具有完整是一對單向配置,它要求兩端的通信設(shè)備都具有完整和獨立的發(fā)送和接收能力。和獨立的發(fā)送和接收能力。通信效率最高,適合于計算機之間的通信。通信效率最高,適合于計算機之間的通信。 發(fā)送端發(fā)送端接收端接收端接收端接收端發(fā)送端發(fā)送端數(shù)據(jù)線數(shù)據(jù)線地線地線全雙工全雙工數(shù)據(jù)線數(shù)據(jù)線單元單元5 AT89S52 AT89S52串行通信串行通信 通信雙方要正確的進行數(shù)據(jù)傳輸,需要解決何時通信雙方要正確的進行數(shù)據(jù)傳輸,需要解決何時開始傳輸、何時結(jié)束傳輸,以及數(shù)據(jù)傳輸速率等問題,

5、開始傳輸、何時結(jié)束傳輸,以及數(shù)據(jù)傳輸速率等問題,這就是數(shù)據(jù)傳輸中的同步問題。這就是數(shù)據(jù)傳輸中的同步問題。 通常,實現(xiàn)數(shù)據(jù)同步有兩種方式:異步通信和同通常,實現(xiàn)數(shù)據(jù)同步有兩種方式:異步通信和同步通信。步通信。 1 1異步通信:異步通信: 數(shù)據(jù)一幀一幀地傳送。發(fā)送端和接收端可以由各數(shù)據(jù)一幀一幀地傳送。發(fā)送端和接收端可以由各自的時鐘控制數(shù)據(jù)的發(fā)送和接收,兩個時鐘源彼此獨自的時鐘控制數(shù)據(jù)的發(fā)送和接收,兩個時鐘源彼此獨立,互不同步。立,互不同步。 數(shù)據(jù)的一幀:由一個字符代碼組成。數(shù)據(jù)的一幀:由一個字符代碼組成。 單元單元5 AT89S52 AT89S52串行通信串行通信 單元單元5 AT89S52 AT

6、89S52串行通信串行通信 幀格式幀格式:一個字符由四部分組成:起始位、數(shù)據(jù)位、:一個字符由四部分組成:起始位、數(shù)據(jù)位、奇偶校驗位和停止位。奇偶校驗位和停止位。起始位(起始位(0 0):位于字符幀的開頭,占用一位,用來:位于字符幀的開頭,占用一位,用來通知接收設(shè)備一個待接收的字符開始到達。通知接收設(shè)備一個待接收的字符開始到達。數(shù)據(jù)位:數(shù)據(jù)位:緊跟起始位后,緊跟起始位后, 5 58 8位位數(shù)據(jù)(規(guī)定低位在前,數(shù)據(jù)(規(guī)定低位在前,高位在后)高位在后)奇偶校驗位奇偶校驗位(可省略),占一位,用于對字符傳送作(可省略),占一位,用于對字符傳送作正確性檢查,因此奇偶校驗位是可選擇的,共有三種正確性檢查,

7、因此奇偶校驗位是可選擇的,共有三種可能,即奇偶校驗、偶校驗和無校驗,由用戶根據(jù)需可能,即奇偶校驗、偶校驗和無校驗,由用戶根據(jù)需要選定。要選定。 停止位(停止位(1 1)停止位用來表征字符的結(jié)束。停止位可以停止位用來表征字符的結(jié)束。停止位可以是是1 1位、位、1.51.5位或位或2 2位。接收端收到停止位后,知道上一位。接收端收到停止位后,知道上一字符已傳送完畢字符已傳送完畢 單元單元5 AT89S52 AT89S52串行通信串行通信 2. 同步通信同步通信 在一個數(shù)據(jù)塊的開頭使用同步字符。數(shù)據(jù)傳送時使在一個數(shù)據(jù)塊的開頭使用同步字符。數(shù)據(jù)傳送時使用同一頻率的脈沖來實現(xiàn)發(fā)送端與接收端的嚴格時間同用

8、同一頻率的脈沖來實現(xiàn)發(fā)送端與接收端的嚴格時間同步。步。 單元單元5 AT89S52 AT89S52串行通信串行通信 二、串行通信總線標準及其接口二、串行通信總線標準及其接口傳輸距離不同,可以選擇不同的總線標準。傳輸距離不同,可以選擇不同的總線標準。 89S5289S5289S5289S52如果是長距離傳送,可采用如果是長距離傳送,可采用RS-485RS-485標準。標準。 短距離傳送,短距離傳送,只需要只需要TXTX、RXRX和和GNDGND三根線。三根線。距離在距離在1515米左右,采用米左右,采用RS-232RS-232標準接口。標準接口。 單元單元5 AT89S52 AT89S52串行通

9、信串行通信 (一)(一)RS-232RS-232標準標準 RS-232CRS-232C標準是美國標準是美國EIAEIA(電子工業(yè)聯(lián)合會)(電子工業(yè)聯(lián)合會)與與BELLBELL等公司一起開發(fā)的于等公司一起開發(fā)的于19691969年公布的通信協(xié)議。年公布的通信協(xié)議。 1.1. RS-232CRS-232C的電氣特性的電氣特性(1)(1)數(shù)據(jù)線上的信號電平數(shù)據(jù)線上的信號電平 mark(mark(邏輯邏輯1) = -31) = -3-15V-15V space( space(邏輯邏輯0) = +30) = +3+15V+15V(2) (2) 控制和狀態(tài)線上的信號電平控制和狀態(tài)線上的信號電平 ON(ON

10、(邏輯邏輯0)= +30)= +3+15V(+15V(接通接通) ) OFF( OFF(邏輯邏輯1)= -31)= -3-15V(-15V(斷開斷開) )單元單元5 AT89S52 AT89S52串行通信串行通信 l電平轉(zhuǎn)換電平轉(zhuǎn)換 RS-232CRS-232C接口采用雙極性信號、公共地線和負邏接口采用雙極性信號、公共地線和負邏輯;輯;不能不能和和TTLTTL電平直接相連,使用時必須進行電平電平直接相連,使用時必須進行電平轉(zhuǎn)換,否則將使轉(zhuǎn)換,否則將使TTLTTL電路燒壞,實際應用時必須注意!電路燒壞,實際應用時必須注意!在實際應用時,必須通過專用電平轉(zhuǎn)換芯片進行電平在實際應用時,必須通過專用電

11、平轉(zhuǎn)換芯片進行電平轉(zhuǎn)換。轉(zhuǎn)換。電平轉(zhuǎn)換芯片電平轉(zhuǎn)換芯片MC1488MC1488、MC1489MC1489、 MAX232MAX232MC1488MC1488可實現(xiàn)可實現(xiàn)TTLRS-232TTLRS-232的電平轉(zhuǎn)換;的電平轉(zhuǎn)換;MC1489MC1489可實現(xiàn)可實現(xiàn)RS-232TTLRS-232TTL的電平轉(zhuǎn)換。的電平轉(zhuǎn)換。 MAX232MAX232芯片可完成芯片可完成TTLTTL到到EIAEIA雙向電平的轉(zhuǎn)換雙向電平的轉(zhuǎn)換 單元單元5 AT89S52 AT89S52串行通信串行通信 89S5289S52通過通過MAX232MAX232實現(xiàn)實現(xiàn)RS-232CRS-232C電平轉(zhuǎn)換電平轉(zhuǎn)換單元單元

12、5 AT89S52 AT89S52串行通信串行通信 TTLTTL到到EIAEIA電平的轉(zhuǎn)換電平的轉(zhuǎn)換 單元單元5 AT89S52 AT89S52串行通信串行通信 MAX232MAX232管腳說明如下:管腳說明如下:C1+C1+、C1-C1-、C2+C2+、C2- C2- 是外接電容端;是外接電容端;R1INR1IN、R2INR2IN則是則是2 2路路RS-232CRS-232C電平信號接收輸入端;電平信號接收輸入端;R1OUTR1OUT、R2OUTR2OUT是是2 2路轉(zhuǎn)換后的路轉(zhuǎn)換后的TTLTTL電平接收信號輸出電平接收信號輸出端,送端,送80S5280S52的的RxDRxD接收端;接收端;

13、T1INT1IN、T2INT2IN是是2 2路路TTLTTL電平發(fā)送輸入端,接電平發(fā)送輸入端,接80S5280S52的的TxDTxD發(fā)送端;發(fā)送端;T1OUTT1OUT、T2OUTT2OUT是是2 2路轉(zhuǎn)換后的發(fā)送路轉(zhuǎn)換后的發(fā)送RS-232CRS-232C電平信電平信號輸出端,接傳輸線;號輸出端,接傳輸線;V+V+經(jīng)電容接電源十經(jīng)電容接電源十5V5V;V-V-經(jīng)電容接地。經(jīng)電容接地。單元單元5 AT89S52 AT89S52串行通信串行通信 PCPC機與機與AT89S52AT89S52單片機串行通信電路單片機串行通信電路 圖中外接電解電容圖中外接電解電容C1C1、C2C2、C3C3、C4C4用

14、于電源電壓變換,用于電源電壓變換,提高抗干擾能力,它們可以取相同數(shù)值電容提高抗干擾能力,它們可以取相同數(shù)值電容1.0 F/16 V1.0 F/16 V。電。電容容C5C5用于對用于對5 V5 V電源的噪聲干擾進行濾波,其值一般為電源的噪聲干擾進行濾波,其值一般為0.1 0.1 FFAT89S52TXDRXDGNDC1+ +C1- -C2+ +C2- -+C1C2T1inT1outR1inR1outV- -GNDVCCV+ +MAX232+C3C5C4+ +5 VGNDTXDRS232RXDIBM-PC單元單元5 AT89S52 AT89S52串行通信串行通信 2. 2. 信號接口信號接口 引腳

15、引腳信號信號名名功功 能能1 1DCDDCD載波檢測載波檢測2 2RXDRXD接收數(shù)據(jù)接收數(shù)據(jù)3 3TXDTXD發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù)4 4DTRDTR數(shù)據(jù)終端準備就數(shù)據(jù)終端準備就緒緒5 5GNDGND信號地線信號地線6 6DSRDSR數(shù)據(jù)準備完成數(shù)據(jù)準備完成7 7RTSRTS發(fā)送請求發(fā)送請求8 8CTSCTS發(fā)送清除發(fā)送清除9 9RIRI振鈴指示振鈴指示單元單元5 AT89S52 AT89S52串行通信串行通信 (二)(二)AT89S52AT89S52串行口結(jié)構(gòu)與控制串行口結(jié)構(gòu)與控制1. 1. 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)單元單元5 AT89S52 AT89S52串行通信串行通信 SM0SM0、SM1

16、SM1:串行口工作方式控制位,兩位對應串行口工作方式控制位,兩位對應四種工作方式,如下表所示(四種工作方式,如下表所示(foscfosc是晶振頻率)。是晶振頻率)。2. 2. 串行口控制串行口控制(1 1)串行口控制寄存器)串行口控制寄存器SCON(98H)SCON(98H)位地址9FH9EH9DH9CH9BH9AH99H98H位符號SM0SM1SM2RENTB8RB8TIRI單元單元5 AT89S52 AT89S52串行通信串行通信 SM2SM2:多機通信控制位,主要用于方式多機通信控制位,主要用于方式2 2和方式和方式3 3 當串行口以方式當串行口以方式2 2或方式或方式3 3接收時,如接

17、收時,如SM2=1SM2=1,則,則只有當接收到的第只有當接收到的第9 9位數(shù)據(jù)(位數(shù)據(jù)(RB8RB8)為)為1 1,才將接收到,才將接收到的前的前8 8位數(shù)據(jù)送入位數(shù)據(jù)送入SBUFSBUF,并置位,并置位RIRI產(chǎn)生中斷請求,否產(chǎn)生中斷請求,否則將接收到的前則將接收到的前8 8位數(shù)據(jù)丟棄。位數(shù)據(jù)丟棄。 SM2=0SM2=0,不論第,不論第9 9位數(shù)據(jù)為位數(shù)據(jù)為0 0還是為還是為1 1,都將前,都將前8 8位數(shù)據(jù)裝入位數(shù)據(jù)裝入SBUFSBUF中,并產(chǎn)生中斷申請。中,并產(chǎn)生中斷申請。 在方式在方式0 0時,時,SM2=0SM2=0。RENREN:允許接收控制位允許接收控制位 REN=1REN=1

18、,允許接收;,允許接收;REN=0REN=0,禁止接收。,禁止接收。單元單元5 AT89S52 AT89S52串行通信串行通信 TB8TB8:發(fā)送數(shù)據(jù)第發(fā)送數(shù)據(jù)第9 9位位方式方式0 0,此位未使用,此位未使用方式方式1 1,此位未使用,此位未使用方式方式2 2和方式和方式3 3:TB8=1TB8=1,說明該發(fā)送幀為地,說明該發(fā)送幀為地址幀。址幀。 TB8=0TB8=0,說明該發(fā)送幀為數(shù)據(jù)幀,說明該發(fā)送幀為數(shù)據(jù)幀RB8RB8:接收數(shù)據(jù)第接收數(shù)據(jù)第9 9位位 方式方式2 2和方式和方式3 3:RB8RB8存放接收到的第存放接收到的第9 9位位數(shù)據(jù),代表接收數(shù)據(jù)的某種特征。數(shù)據(jù),代表接收數(shù)據(jù)的某種

19、特征。若若SM2=1SM2=1,RB8=1RB8=1,說明收到幀為地址幀。,說明收到幀為地址幀。單元單元5 AT89S52 AT89S52串行通信串行通信 TITI:發(fā)送中斷標志發(fā)送中斷標志 在一幀數(shù)據(jù)發(fā)送完時置位。在一幀數(shù)據(jù)發(fā)送完時置位。TI=1TI=1,申請,申請中斷,中斷被響應后,中斷,中斷被響應后,TITI不能自動清零,必須不能自動清零,必須由軟件清零。由軟件清零。RIRI:接收中斷標志接收中斷標志 在接收到一幀有效數(shù)據(jù)后,由硬件置位。在接收到一幀有效數(shù)據(jù)后,由硬件置位。RI=1RI=1,申請中斷。,申請中斷。RIRI不能自動清零,必須由不能自動清零,必須由軟件清零。軟件清零。單元單元

20、5 AT89S52 AT89S52串行通信串行通信 (2 2)電源控制寄存器)電源控制寄存器PCONPCONPCONPCON不能位尋址。不能位尋址。SMODSMOD串行口波特率的倍增位串行口波特率的倍增位當當SMOD=1SMOD=1時,串行口波特率加倍。時,串行口波特率加倍。系統(tǒng)復位時,系統(tǒng)復位時,SMODSMOD0 0。 單元單元5 AT89S52 AT89S52串行通信串行通信 三、三、AT89S52AT89S52串行口工作方式串行口工作方式(一)串行口波特率設(shè)計(一)串行口波特率設(shè)計1. 1. 波特率波特率波特率的定義波特率的定義是每秒鐘傳送二進制數(shù)碼的位數(shù)是每秒鐘傳送二進制數(shù)碼的位數(shù)(

21、 (亦稱比特數(shù)亦稱比特數(shù)) ),單位是,單位是b/sb/s。假設(shè)假設(shè)數(shù)據(jù)傳送速率是數(shù)據(jù)傳送速率是120120字符字符/s/s,而每個字符,而每個字符格式包含格式包含1010個代碼(個代碼(1 1個起始位、個起始位、1 1個終止位、個終止位、8 8個數(shù)據(jù)位)。這時,傳送的波特率為個數(shù)據(jù)位)。這時,傳送的波特率為 (10b10b字符)字符)120120字符字符s = 1200 bs = 1200 bs s每一位每一位代碼的傳送時間代碼的傳送時間TdTd為為波特率的倒數(shù)波特率的倒數(shù)。單元單元5 AT89S52 AT89S52串行通信串行通信 2. 2. 波特率設(shè)計波特率設(shè)計方式方式0 0波特率波特率

22、方式方式0 0波特率波特率 = fosc = fosc 1212方式方式2 2波特率波特率方式方式2 2波特率波特率 = (2= (2SMODSMOD/64) /64) fosc foscSMODSMOD為為0 0時,波特率等于振蕩器頻率的時,波特率等于振蕩器頻率的1/641/64SMODSMOD為為1 1時,波特率等于振蕩器頻率的時,波特率等于振蕩器頻率的1/321/32。方式方式1 1和方式和方式3 3的波特率的波特率串行口方式串行口方式1 1和方式和方式3 3的波特率由定時器的波特率由定時器T1T1或或T2T2的的溢出率和溢出率和SMODSMOD所確定。所確定。波特率波特率= 2= 2s

23、modsmod3232(定時器(定時器1 1溢出率)溢出率) 單元單元5 AT89S52 AT89S52串行通信串行通信 例如例如振蕩頻率振蕩頻率fosc=11.0596MHZfosc=11.0596MHZ,若,若SMOD=0SMOD=0,通信波特率為通信波特率為96009600波特,則波特,則X=256X=25611.059611.059610106 6(1+0)/ (9600(1+0)/ (9600384)384) =253=FDH =253=FDH初始化程序如下:初始化程序如下:MOV TMODMOV TMOD,#20H #20H ;設(shè);設(shè)T1T1為定時方式為定時方式2 2MOV THl

24、MOV THl,#0FDH #0FDH ;設(shè)定波特率為;設(shè)定波特率為9600bit9600bits sMOV TLlMOV TLl, #0FDH#0FDHSETB TRl SETB TRl ;啟動定時器;啟動定時器MOV PCONMOV PCON,#00H #00H ;SMOD=0SMOD=0MOV SCONMOV SCON,#50H #50H ;串行口工作在方式;串行口工作在方式1 1單元單元5 AT89S52 AT89S52串行通信串行通信 (二)串行口工作方式(二)串行口工作方式1. 1. 工作方式工作方式0 0當當SM0 SMl=00SM0 SMl=00時,串行接口選擇工作方式時,串行

25、接口選擇工作方式0 0,為同步移位寄存器輸入,為同步移位寄存器輸入/ /輸出方式,常用輸出方式,常用于擴展于擴展I/OI/O口。串行數(shù)據(jù)從口。串行數(shù)據(jù)從RXD(P3.0)RXD(P3.0)端輸端輸入或輸出,同步移位脈沖由入或輸出,同步移位脈沖由TXD(P3.1)TXD(P3.1)送出送出, ,作為外接部件的同步信號。發(fā)送或接收的是作為外接部件的同步信號。發(fā)送或接收的是8 8位數(shù)據(jù)位數(shù)據(jù)( (低位在前,高位在后低位在前,高位在后) )。其波特率固定其波特率固定為為fosc/12fosc/12。 發(fā)送完置中斷標志發(fā)送完置中斷標志TITI為為1 1,請求中斷。在,請求中斷。在再次發(fā)送數(shù)據(jù)之前,必須由

26、軟件清再次發(fā)送數(shù)據(jù)之前,必須由軟件清TITI為為0 0。 單元單元5 AT89S52 AT89S52串行通信串行通信 接收前置接收前置REN=1REN=1和和RI=0RI=0,當,當8 8位數(shù)據(jù)接收結(jié)束,位數(shù)據(jù)接收結(jié)束,RIRI被被置置“1”1”,可通過指令,可通過指令MOV AMOV A,SBUFSBUF將數(shù)據(jù)讀入。將數(shù)據(jù)讀入。 下圖采用一個串入并出移位寄存器,下圖采用一個串入并出移位寄存器,TXDTXD連接串連接串行口輸出移位寄存器行口輸出移位寄存器164164的時鐘端,的時鐘端,RXDRXD連接連接164164的的輸入端,輸入端,P1.0P1.0連接連接164164的的CLRCLR選通端

27、。選通端。89S5274LS164單元單元5 AT89S52 AT89S52串行通信串行通信 根據(jù)硬件連接,方式根據(jù)硬件連接,方式0 0發(fā)送數(shù)據(jù)程序如下:發(fā)送數(shù)據(jù)程序如下:SETB P1.0 SETB P1.0 ;選通;選通74LS16474LS164MOV SCONMOV SCON,#00H #00H ;串口工作在方式;串口工作在方式0 0MOV AMOV A,#DATA #DATA MOV SBUFMOV SBUF,A A ;發(fā)送數(shù)據(jù);發(fā)送數(shù)據(jù)JNB TIJNB TI,$ $ ;等待發(fā)送完?;等待發(fā)送完?CLR TI CLR TI ;清除;清除TITI中斷標志中斷標志CLR P1.0 CL

28、R P1.0 ;關(guān)閉;關(guān)閉74LS16474LS164單元單元5 AT89S52 AT89S52串行通信串行通信 2. 2. 工作方式工作方式1 1工作方式工作方式1 1,SM0 SMl= 01SM0 SMl= 01,為可變波特率的,為可變波特率的8 8位異位異步通信方式。步通信方式。 發(fā)送數(shù)據(jù)由發(fā)送數(shù)據(jù)由TXDTXD端輸出,接收數(shù)據(jù)由端輸出,接收數(shù)據(jù)由RXDRXD端輸入。端輸入。 方式方式1 1以以1010位為一幀傳輸,設(shè)有位為一幀傳輸,設(shè)有1 1個起始位個起始位(0)(0),8 8個數(shù)據(jù)位和個數(shù)據(jù)位和1 1個停止位個停止位(1)(1)。其幀格式起始位(。其幀格式起始位(0 0),),8 8

29、個數(shù)據(jù)位和個數(shù)據(jù)位和1 1個停止位(個停止位(1 1)。)。起始D0D1D2D3D4D5 D6D7停止01單元單元5 AT89S52 AT89S52串行通信串行通信 發(fā)送時,數(shù)據(jù)從發(fā)送時,數(shù)據(jù)從TXDTXD端輸出,當數(shù)據(jù)寫入發(fā)送端輸出,當數(shù)據(jù)寫入發(fā)送緩沖器緩沖器SBUFSBUF后,啟動發(fā)送器發(fā)送。當發(fā)送完一幀后,啟動發(fā)送器發(fā)送。當發(fā)送完一幀數(shù)據(jù)后,置中斷標志數(shù)據(jù)后,置中斷標志TITI為為1 1。方式。方式1 1所傳送的波特率所傳送的波特率取決于定時器取決于定時器1 1的溢出率和的溢出率和PCONPCON中的中的SMODSMOD位。位。 接收時,由接收時,由RENREN置置1 1,允許接收,串行

30、口采樣,允許接收,串行口采樣RXDRXD,當采樣由,當采樣由1 1到到0 0跳變時,確認是起始位跳變時,確認是起始位“0”0”,開始接收一幀數(shù)據(jù)。當開始接收一幀數(shù)據(jù)。當RI=0RI=0,且停止位為,且停止位為1 1或或SM2=0SM2=0時,停止位進入時,停止位進入RB8RB8位,同時置中斷標志位,同時置中斷標志RIRI;否則信息將丟失。所以,方式;否則信息將丟失。所以,方式1 1接收時,應先用接收時,應先用軟件清除軟件清除RIRI或或SM2SM2標志。標志。單元單元5 AT89S52 AT89S52串行通信串行通信 【例例5.15.1】89S5289S52串行口按雙工方式收發(fā)串行口按雙工方式

31、收發(fā)ASCIIASCII字字符,甲機發(fā)送的字符從外部符,甲機發(fā)送的字符從外部RAMRAM的的1000H1000H開始,檢開始,檢測到結(jié)束字符測到結(jié)束字符0AH0AH就結(jié)束發(fā)送,乙機將接收的字符就結(jié)束發(fā)送,乙機將接收的字符放在內(nèi)部放在內(nèi)部RAMRAM的的30H30H開始的空間。要求通信的波特開始的空間。要求通信的波特率為率為96009600波特,用中斷方式編寫通信程序。波特,用中斷方式編寫通信程序。主程序:主程序:MOV TMODMOV TMOD,#20H #20H ;定時器;定時器1 1設(shè)為工作方式設(shè)為工作方式2 2 MOV TLlMOV TLl,#0FDH #0FDH ;定時器初值;定時器初

32、值 MOV THlMOV THl,#0FDH #0FDH ;8 8位重裝值位重裝值單元單元5 AT89S52 AT89S52串行通信串行通信 SETB TRl SETB TRl ;啟動定時器;啟動定時器1 1 MOV SCONMOV SCON,#50H #50H ;將串行口設(shè)置為方式;將串行口設(shè)置為方式1 1, REN=l REN=l MOV DPTRMOV DPTR,#1000H #1000H ;發(fā)送數(shù)據(jù)區(qū)首址送;發(fā)送數(shù)據(jù)區(qū)首址送 DPTR DPTR MOV R0, #30H MOV R0, #30H ;接收數(shù)據(jù)區(qū)首址送;接收數(shù)據(jù)區(qū)首址送R0R0SETB ES SETB ES SETB SE

33、TB EA EA ;開中斷;開中斷ACALL ACALL SEND SEND ;先發(fā)送一個字符;先發(fā)送一個字符 L00PL00P: SJMP $ SJMP $ ;等待中斷;等待中斷單元單元5 AT89S52 AT89S52串行通信串行通信 發(fā)送子程序發(fā)送子程序SENDSEND:CLR TI CLR TI MOV MOVA A,DPTR DPTR ;取發(fā)送數(shù)據(jù)到;取發(fā)送數(shù)據(jù)到A A INC INC DPTR DPTR ;修改發(fā)送數(shù)據(jù)指針;修改發(fā)送數(shù)據(jù)指針 MOV MOV SBUF,A SBUF,A ;發(fā)送;發(fā)送ASCIIASCII碼碼 CJNE CJNE A A,#0AH#0AH,SEN1 SE

34、N1 ;是否是結(jié)束字符;是否是結(jié)束字符 CLR ES CLR ES ;關(guān)閉串口中斷;關(guān)閉串口中斷SEN1SEN1:RET RET ;返回;返回單元單元5 AT89S52 AT89S52串行通信串行通信 中斷服務程序中斷服務程序 ORG 0023H ORG 0023H ;串行口中斷入口;串行口中斷入口 AJMP RSI AJMP RSI ;轉(zhuǎn)至中斷服務程序;轉(zhuǎn)至中斷服務程序 ORG 0100HORG 0100HRSIRSI:JNB RI, SEN JNB RI, SEN ;TI=1TI=1,為發(fā)送中斷,為發(fā)送中斷 ACALL REV ACALL REV ;RI=1RI=1,為接收中斷,為接收中斷

35、 SJMP NEXT SJMP NEXT ;轉(zhuǎn)至統(tǒng)一的出口;轉(zhuǎn)至統(tǒng)一的出口SENSEN:ACALL SEND ACALL SEND ;調(diào)用發(fā)送子程序;調(diào)用發(fā)送子程序NEXTNEXT: RETI RETI ;中斷返回;中斷返回單元單元5 AT89S52 AT89S52串行通信串行通信 接收子程序接收子程序REVREV: CLR RI CLR RI MOV A, SBUF MOV A, SBUF ;讀出接收緩沖區(qū)內(nèi)容;讀出接收緩沖區(qū)內(nèi)容 MOV R0, A MOV R0, A ;讀入接收緩沖區(qū);讀入接收緩沖區(qū) INC R0 INC R0 ;修改接收數(shù)據(jù)指針;修改接收數(shù)據(jù)指針 CJNE ACJNE

36、A,#0AH#0AH,RES RES ;是否是結(jié)束字符;是否是結(jié)束字符 CLR ES CLR ES ;關(guān)閉串口中斷;關(guān)閉串口中斷RESRES: RET RET ;返回;返回單元單元5 AT89S52 AT89S52串行通信串行通信 3. 3. 工作方式工作方式2 2SM1 SM0= 10SM1 SM0= 10,串行接口選擇工作方式,串行接口選擇工作方式2 2。 方式方式2 2是是1111位異步通信方式,每幀數(shù)據(jù)由位異步通信方式,每幀數(shù)據(jù)由1 1個個起始位起始位“0”0”、9 9個數(shù)據(jù)位和個數(shù)據(jù)位和1 1個停止位個停止位“1”1”共共1111構(gòu)成。其中發(fā)送的第構(gòu)成。其中發(fā)送的第9 9位由位由SC

37、ONSCON的的TB8TB8提提供,接收的第供,接收的第9 9位存在位存在SCONSCON的的RB8RB8位。其波位。其波特率是固定的為特率是固定的為fosc/32fosc/32或或fosc/64fosc/64。方式方式2 2發(fā)送:發(fā)送:CPUCPU執(zhí)行一條寫入執(zhí)行一條寫入SBUFSBUF的指令的指令就啟動串行口的發(fā)送,并把就啟動串行口的發(fā)送,并把TB8TB8的內(nèi)容裝入發(fā)的內(nèi)容裝入發(fā)送寄存器的第送寄存器的第9 9位。首先發(fā)送起始位位。首先發(fā)送起始位0 0,此后每,此后每經(jīng)過一個時鐘周期產(chǎn)生一個移位脈沖,并且由經(jīng)過一個時鐘周期產(chǎn)生一個移位脈沖,并且由TXDTXD輸出一個數(shù)據(jù)位,當輸出一個數(shù)據(jù)位,

38、當1111位數(shù)據(jù)全部發(fā)送后,位數(shù)據(jù)全部發(fā)送后,使使TITI置置1 1。單元單元5 AT89S52 AT89S52串行通信串行通信 方式2接收:接收過程和方式1類似,當REN=1時,允許串行口接收數(shù)據(jù)。數(shù)據(jù)由RXD端輸入,接收11位數(shù)據(jù)。在方式2的接收中,若RI=0, SM2=0或接收到的第9位數(shù)據(jù)為1,成立則RI=1,8位數(shù)據(jù)進入SBUF,第九位進入RB8。 若不滿足上述兩個條件則接收到的信息將丟失,不再恢復,也不置位RI?!纠?.2】設(shè)計一個發(fā)送程序,將片內(nèi)RAM30H3FH中的數(shù)據(jù)串行發(fā)送,串行口設(shè)定為方式2狀態(tài),TB8作奇偶校驗位。在數(shù)據(jù)寫入發(fā)送緩沖器之前,先將數(shù)據(jù)的奇偶位P寫入TB8,

39、這時第9位數(shù)據(jù)作奇偶校驗用。單元單元5 AT89S52 AT89S52串行通信串行通信 程序清單如下:程序清單如下:TRTTRT: MOV SCONMOV SCON,80H 80H ;方式;方式2 2設(shè)定設(shè)定 MOV PCONMOV PCON,80H 80H ;取波特率為;取波特率為fosc/32fosc/32 MOV R0 MOV R0,30H30H MOV R7 MOV R7,10H 10H ;數(shù)據(jù)長度;數(shù)據(jù)長度10H10HLOOPLOOP:MOV AMOV A,R0 R0 ;取數(shù)據(jù)送;取數(shù)據(jù)送A A MOV C MOV C,PSW.0PSW.0; MOV TB8MOV TB8,C C M

40、OV SBUF MOV SBUF,A A ;數(shù)據(jù)送;數(shù)據(jù)送SBUFSBUF,啟動發(fā),啟動發(fā)送送WAITWAIT:JBC TIJBC TI,CONT CONT ;判斷發(fā)送結(jié)束否;判斷發(fā)送結(jié)束否 SJMP WAITSJMP WAITCONTCONT:INC R0INC R0 DJNZ R7 DJNZ R7,LOOPLOOP RET RET單元單元5 AT89S52 AT89S52串行通信串行通信 四、串行口通信應用舉例四、串行口通信應用舉例 (一)雙機通信應用舉例(一)雙機通信應用舉例1. 1. 通信雙方的協(xié)議通信雙方的協(xié)議(1)(1)通信雙方的波特率均為通信雙方的波特率均為96009600波特,

41、均工作在串口方式波特,均工作在串口方式1 1。甲。甲機發(fā)送,乙機接收。機發(fā)送,乙機接收。 (2)(2)甲機開始發(fā)送時,先發(fā)一個呼叫信號甲機開始發(fā)送時,先發(fā)一個呼叫信號“0FH”0FH”,乙機接收后,乙機接收后,若同意接收數(shù)據(jù)就發(fā)一個應答信號若同意接收數(shù)據(jù)就發(fā)一個應答信號“01H”01H”。(3)(3)當甲機接到當甲機接到“01H”01H”后,開始發(fā)送數(shù)據(jù)。假設(shè)發(fā)送的數(shù)據(jù)塊后,開始發(fā)送數(shù)據(jù)。假設(shè)發(fā)送的數(shù)據(jù)塊首地址是片內(nèi)首地址是片內(nèi)RAM 40HRAM 40H,數(shù)據(jù)塊長度,數(shù)據(jù)塊長度64H64H。數(shù)據(jù)塊發(fā)送結(jié)。數(shù)據(jù)塊發(fā)送結(jié)束后,發(fā)送累加校驗和。累加校驗和是指數(shù)據(jù)塊中每個字節(jié)束后,發(fā)送累加校驗和。累

42、加校驗和是指數(shù)據(jù)塊中每個字節(jié)的算術(shù)累加和。的算術(shù)累加和。單元單元5 AT89S52 AT89S52串行通信串行通信 (4)(4)乙機接收數(shù)據(jù)并存在數(shù)據(jù)緩沖區(qū)。假設(shè)乙機接收數(shù)據(jù)并存在數(shù)據(jù)緩沖區(qū)。假設(shè)數(shù)據(jù)緩沖區(qū)的首地址是片內(nèi)數(shù)據(jù)緩沖區(qū)的首地址是片內(nèi)RAM 40HRAM 40H。乙機在接收過程中對接收的數(shù)據(jù)塊也作算乙機在接收過程中對接收的數(shù)據(jù)塊也作算術(shù)累加和,并與甲機發(fā)送的累加和作比較,術(shù)累加和,并與甲機發(fā)送的累加和作比較,若相等則表示接收正確,給甲機發(fā)若相等則表示接收正確,給甲機發(fā)“00H”00H”;若不等則表示接收不正確,給甲機發(fā)若不等則表示接收不正確,給甲機發(fā)“FFH”FFH”,請求重發(fā)。,請

43、求重發(fā)。 (5)(5)甲機收到甲機收到“00H”00H”后,結(jié)束發(fā)送,否則后,結(jié)束發(fā)送,否則將數(shù)據(jù)重發(fā)一次。將數(shù)據(jù)重發(fā)一次。單元單元5 AT89S52 AT89S52串行通信串行通信 2 2查詢方式下的通信程序查詢方式下的通信程序甲機發(fā)送子程序:甲機發(fā)送子程序:ATXATX: MOV TMODMOV TMOD,#20H #20H ;設(shè);設(shè)T1T1為定時方式為定時方式2 2 MOV THl MOV THl,#0FDH #0FDH ;設(shè)定波特率為;設(shè)定波特率為9600bit9600bits s MOV TLl MOV TLl, #0FDH#0FDH MOV PCON MOV PCON,#00H#0

44、0H SETB TRl SETB TRl ;啟動定時器;啟動定時器T1T1 MOV SCON MOV SCON,#50H #50H ;串行口初始化;串行口初始化ATXlATXl: MOV AMOV A,#0FH #0FH ;發(fā)送呼叫信號;發(fā)送呼叫信號 MOV SUBFMOV SUBF,A AATWlATWl: JBC TIJBC TI, ATRlATRl SJMP ATWl SJMP ATWl ;等待發(fā)送出去;等待發(fā)送出去ATR1ATR1:JBC RIJBC RI,ATR2 ATR2 ;等待乙機應答;等待乙機應答 SJMP ATRlSJMP ATRl單元單元5 AT89S52 AT89S52串

45、行通信串行通信 ATR2ATR2: MOV MOV A A, SBUF SBUF ;接收應答信號;接收應答信號 XRL XRL A A, #01H#01H JNZ JNZ ATX1ATX1;乙機未準備好,繼續(xù)呼叫;乙機未準備好,繼續(xù)呼叫ATX2ATX2: MOV MOV R0R0,#40H #40H ;數(shù)據(jù)塊首地址送;數(shù)據(jù)塊首地址送R0R0 MOV MOV R2R2,#64H #64H ;數(shù)據(jù)塊長度送;數(shù)據(jù)塊長度送R2R2 MOV MOV R3 R3 ,#00H #00H ;清校驗和寄存器;清校驗和寄存器ATX3ATX3: MOV MOV A A,R0 R0 ;發(fā)送一個數(shù)據(jù)字節(jié);發(fā)送一個數(shù)據(jù)字

46、節(jié) MOV MOV SBUFSBUF, A A MOV MOV A A,R3R3 ADD ADD A A,R0 R0 ;求校驗和;求校驗和 MOV MOV R3R3,A A INC INC R0 R0 ;修改地址指針;修改地址指針 單元單元5 AT89S52 AT89S52串行通信串行通信 ATW2ATW2:JBC TIJBC TI,ATX4ATX4 SJMP ATW2 SJMP ATW2ATX4ATX4: DJNZ R2DJNZ R2,ATX3ATX3;判數(shù)據(jù)塊發(fā)送完否;判數(shù)據(jù)塊發(fā)送完否 MOV MOV A A,R3 R3 ;發(fā)送校驗和;發(fā)送校驗和 MOV MOV SBUFSBUF,A A

47、ATW3ATW3:JBC JBC TITI, ATR3ATR3 SJMP ATW3 SJMP ATW3ATR3ATR3: JBC JBC RIRI,ATR4 ATR4 ;等待乙機應答;等待乙機應答 SJMP ATR3SJMP ATR3ATR4ATR4: MOV MOV A A, SBUFSBUF JNZ ATX2 JNZ ATX2 ;若乙機回答出錯,則重發(fā);若乙機回答出錯,則重發(fā) RETRET 單元單元5 AT89S52 AT89S52串行通信串行通信 接收子程序:接收子程序:BRXDBRXD:MOV TMODMOV TMOD,#20H#20H ;設(shè);設(shè)T1T1為定時方式為定時方式2 2 MO

48、V THl MOV THl, #0FDH #0FDH ;設(shè)定波特率為;設(shè)定波特率為9600bit9600bits s MOV TLl MOV TLl, #0FDH#0FDH MOV PCON MOV PCON,#00H#00H SETB TRl SETB TRl ;啟動定時器;啟動定時器T1T1 MOV SCON MOV SCON,#50H #50H ;串行口設(shè)為方式;串行口設(shè)為方式1 1BRXlBRXl: JBC RIJBC RI, BRX2 BRX2 ;等待甲機呼叫信號;等待甲機呼叫信號 SJMP BRXlSJMP BRXlBRX2BRX2: MOV AMOV A,SBUFSBUF XRL

49、 A XRL A,#0FH#0FH JNZ BRXl JNZ BRXl ;判呼叫信號是否正確;判呼叫信號是否正確BTXlBTXl: MOV AMOV A, #01 H #01 H ;發(fā)應答信號;發(fā)應答信號 MOV SBUFMOV SBUF,A A單元單元5 AT89S52 AT89S52串行通信串行通信 BWlBWl: JBC TIJBC TI, BRX3BRX3 SJMP BWl SJMP BWlBRX3BRX3:MOV R0MOV R0, #40H#40H;R0R0指向接收數(shù)據(jù)緩沖區(qū)首址指向接收數(shù)據(jù)緩沖區(qū)首址 MOV R2MOV R2, #64H #64H ;數(shù)據(jù)塊長度送;數(shù)據(jù)塊長度送R2R2 MOV R3 MOV R3, #00H #00H ;校驗和單元清零;校驗和單元清零BRX4BRX4:JBC RIJBC RI, BRX5BRX5 SJMP BRX4 SJMP BRX4BRX5BRX5:MOV AMOV A, SBUFSBUF MOV R0 MOV R0, A A ;接收的數(shù)據(jù)轉(zhuǎn)存;接收的數(shù)據(jù)轉(zhuǎn)存 INC R0INC R0 ADD A ADD A, R3 R3 ;求校驗和;求校驗和 MOV R3MOV R3, A A DJNZ R2 DJNZ R2, BRX4 BRX4 ;

溫馨提示

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

評論

0/150

提交評論