C單片微機(jī)的串行口原理及應(yīng)用PPT學(xué)習(xí)教案_第1頁(yè)
C單片微機(jī)的串行口原理及應(yīng)用PPT學(xué)習(xí)教案_第2頁(yè)
C單片微機(jī)的串行口原理及應(yīng)用PPT學(xué)習(xí)教案_第3頁(yè)
C單片微機(jī)的串行口原理及應(yīng)用PPT學(xué)習(xí)教案_第4頁(yè)
C單片微機(jī)的串行口原理及應(yīng)用PPT學(xué)習(xí)教案_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、會(huì)計(jì)學(xué)1 C單片微機(jī)的串行口原理及應(yīng)用單片微機(jī)的串行口原理及應(yīng)用PPT課件課件 第1頁(yè)/共90頁(yè) 通信:計(jì)算機(jī)與外界的數(shù)據(jù)傳送。通信:計(jì)算機(jī)與外界的數(shù)據(jù)傳送。 單臺(tái)儀器儀表或控制器往往會(huì)帶有不止一個(gè)的單片單臺(tái)儀器儀表或控制器往往會(huì)帶有不止一個(gè)的單片 微機(jī),微機(jī), 多個(gè)智能儀器儀表或控制器在單片微機(jī)應(yīng)用系統(tǒng)多個(gè)智能儀器儀表或控制器在單片微機(jī)應(yīng)用系統(tǒng) 中又常常會(huì)構(gòu)成一個(gè)分布式采集、控制系統(tǒng),上層由中又常常會(huì)構(gòu)成一個(gè)分布式采集、控制系統(tǒng),上層由 PC進(jìn)行集中管理等。進(jìn)行集中管理等。 第2頁(yè)/共90頁(yè) 傳送方式傳送方式 并行傳送方式并行傳送方式 在數(shù)據(jù)傳輸時(shí),一個(gè)數(shù)據(jù)編碼字符的所有各位在數(shù)據(jù)傳輸時(shí),一

2、個(gè)數(shù)據(jù)編碼字符的所有各位 都同時(shí)發(fā)送、并排傳輸,又同時(shí)被接收。都同時(shí)發(fā)送、并排傳輸,又同時(shí)被接收。 并行傳送方式要求物理信道為并行內(nèi)總線或者并行外并行傳送方式要求物理信道為并行內(nèi)總線或者并行外 總線。總線。 第3頁(yè)/共90頁(yè) 串行傳送方式串行傳送方式 在數(shù)據(jù)傳輸時(shí),一個(gè)數(shù)據(jù)編碼字符的所有各位在數(shù)據(jù)傳輸時(shí),一個(gè)數(shù)據(jù)編碼字符的所有各位 按一定順序,一位接著一位在信道中被發(fā)送和接收。按一定順序,一位接著一位在信道中被發(fā)送和接收。 串行傳送方式的物理信道為串行總線。串行傳送方式的物理信道為串行總線。 計(jì)算機(jī)與外界的數(shù)據(jù)傳送大多是串行的,其傳送計(jì)算機(jī)與外界的數(shù)據(jù)傳送大多是串行的,其傳送 距離可以從幾米直

3、到幾千公里。距離可以從幾米直到幾千公里。 第4頁(yè)/共90頁(yè) 單工方式、半雙工方式、全雙工方式單工方式、半雙工方式、全雙工方式 單工單工方式方式 信號(hào)信號(hào)(不包括聯(lián)絡(luò)信號(hào)不包括聯(lián)絡(luò)信號(hào)) 在信道中只能沿一個(gè)方向傳送。在信道中只能沿一個(gè)方向傳送。 半雙工半雙工方式方式 通信的雙方均具有發(fā)送和接收信息的能力,信道通信的雙方均具有發(fā)送和接收信息的能力,信道 也具有雙向傳輸性能,通信的任何一方在指定的時(shí)刻,也具有雙向傳輸性能,通信的任何一方在指定的時(shí)刻, 只能沿某一個(gè)方向傳送信息。只能沿某一個(gè)方向傳送信息。 全雙工全雙工方式方式 若信號(hào)在通信雙方之間沿兩個(gè)方向同時(shí)傳送,任何一若信號(hào)在通信雙方之間沿兩個(gè)方

4、向同時(shí)傳送,任何一 方在同一時(shí)刻既能發(fā)送又能接收信息。方在同一時(shí)刻既能發(fā)送又能接收信息。 第5頁(yè)/共90頁(yè) 異步異步傳輸和傳輸和同步同步傳輸傳輸 在數(shù)據(jù)通信中,要保證發(fā)送的信號(hào)在接收端能在數(shù)據(jù)通信中,要保證發(fā)送的信號(hào)在接收端能 被正確地接收,必須采用同步技術(shù)。被正確地接收,必須采用同步技術(shù)。 常用的同步技術(shù)有兩種方式,一種稱為異步傳常用的同步技術(shù)有兩種方式,一種稱為異步傳 輸也稱起止同步方式,另一種稱為同步傳輸也稱同步輸也稱起止同步方式,另一種稱為同步傳輸也稱同步 字符同步方式。字符同步方式。 第6頁(yè)/共90頁(yè) 異步傳輸異步傳輸 以字符為單位進(jìn)行數(shù)據(jù)傳輸,每個(gè)字符都用起以字符為單位進(jìn)行數(shù)據(jù)傳輸

5、,每個(gè)字符都用起 始位、停止位包裝起來(lái),在字符間允許有長(zhǎng)短不一的間始位、停止位包裝起來(lái),在字符間允許有長(zhǎng)短不一的間 隙。隙。 同步傳輸同步傳輸 對(duì)數(shù)據(jù)塊進(jìn)行傳輸,一個(gè)數(shù)據(jù)塊中包含著許多對(duì)數(shù)據(jù)塊進(jìn)行傳輸,一個(gè)數(shù)據(jù)塊中包含著許多 連續(xù)的字符,在字符之間沒(méi)有空閑。同步傳輸可以方便連續(xù)的字符,在字符之間沒(méi)有空閑。同步傳輸可以方便 地實(shí)現(xiàn)某一通信協(xié)議要求的幀格式。地實(shí)現(xiàn)某一通信協(xié)議要求的幀格式。 第7頁(yè)/共90頁(yè) 波特率波特率(BAUD RATE) 串行通信的傳送速率用于說(shuō)明數(shù)據(jù)傳送的快慢串行通信的傳送速率用于說(shuō)明數(shù)據(jù)傳送的快慢 ,“波特率波特率”表示每秒種傳輸離散信號(hào)事件的個(gè)數(shù),或表示每秒種傳輸離散信

6、號(hào)事件的個(gè)數(shù),或 每秒信號(hào)電平的變化次數(shù),單位為每秒信號(hào)電平的變化次數(shù),單位為band(波特)。(波特)?!?比特率比特率”是指每秒傳送二進(jìn)制數(shù)據(jù)的位數(shù),單位為比特是指每秒傳送二進(jìn)制數(shù)據(jù)的位數(shù),單位為比特 /秒,記作秒,記作bits/s或或b/s或或bps。 在二進(jìn)制的情況下,波特率與比特率數(shù)值相等在二進(jìn)制的情況下,波特率與比特率數(shù)值相等 。 第8頁(yè)/共90頁(yè) 串行通信常用的標(biāo)準(zhǔn)波特率在串行通信常用的標(biāo)準(zhǔn)波特率在RS-232C標(biāo)準(zhǔn)中已有規(guī)定,如波特率為標(biāo)準(zhǔn)中已有規(guī)定,如波特率為600、1200、2400、4800、9600、19200等等。等等。 假若數(shù)據(jù)傳送速率為假若數(shù)據(jù)傳送速率為120字符

7、字符/s,而每一個(gè)字符幀已規(guī)定為,而每一個(gè)字符幀已規(guī)定為10個(gè)數(shù)據(jù)位,則傳輸速率為個(gè)數(shù)據(jù)位,則傳輸速率為120101200bit/s,即波特率為,即波特率為1200,每一位數(shù)據(jù)傳送的時(shí)間為波特率的倒數(shù):,每一位數(shù)據(jù)傳送的時(shí)間為波特率的倒數(shù): T112000.833ms 第9頁(yè)/共90頁(yè) 串行數(shù)據(jù)通信主要有兩個(gè)技術(shù)問(wèn)題,一個(gè)是數(shù)據(jù)傳送,另一個(gè)是數(shù)據(jù)轉(zhuǎn)換。串行數(shù)據(jù)通信主要有兩個(gè)技術(shù)問(wèn)題,一個(gè)是數(shù)據(jù)傳送,另一個(gè)是數(shù)據(jù)轉(zhuǎn)換。 數(shù)據(jù)傳送主要解決傳送中的標(biāo)準(zhǔn)、數(shù)據(jù)幀格式及工作方式等。數(shù)據(jù)傳送主要解決傳送中的標(biāo)準(zhǔn)、數(shù)據(jù)幀格式及工作方式等。 數(shù)據(jù)轉(zhuǎn)換要解決把數(shù)據(jù)進(jìn)行串、并行的轉(zhuǎn)換,這種轉(zhuǎn)換通常由通用異步接收發(fā)

8、送器數(shù)據(jù)轉(zhuǎn)換要解決把數(shù)據(jù)進(jìn)行串、并行的轉(zhuǎn)換,這種轉(zhuǎn)換通常由通用異步接收發(fā)送器(UART) 電路來(lái)完成。數(shù)據(jù)發(fā)送端,要把并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),而在數(shù)據(jù)接收端,要把串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)。電路來(lái)完成。數(shù)據(jù)發(fā)送端,要把并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),而在數(shù)據(jù)接收端,要把串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)。 80C51中已集成有中已集成有UART。 8XC552中就增加了具有中就增加了具有I2C總線功能的串行口??偩€功能的串行口。 第10頁(yè)/共90頁(yè) 80C51中的串行口是一個(gè)全雙工的異步串行通信接口,它可作中的串行口是一個(gè)全雙工的異步串行通信接口,它可作UART(通用異步接收和發(fā)送器)用,也可作同步移位寄存器用。(通

9、用異步接收和發(fā)送器)用,也可作同步移位寄存器用。 口內(nèi)的接收緩沖器和發(fā)送緩沖器在物理上是隔離的??趦?nèi)的接收緩沖器和發(fā)送緩沖器在物理上是隔離的。 可以通過(guò)訪問(wèn)特殊功能寄存器可以通過(guò)訪問(wèn)特殊功能寄存器SBUF,來(lái)訪問(wèn)接收緩沖器和發(fā)送緩沖器。接收緩沖器具有雙緩沖的功能,即它在接收第一個(gè)數(shù)據(jù)字節(jié)后,能接收笫二個(gè)數(shù)據(jù)字節(jié)。但是在接收完第二個(gè)字節(jié)后,若笫一個(gè)數(shù)據(jù)字節(jié)還未取走,那么該數(shù)據(jù)字節(jié)將丟失。,來(lái)訪問(wèn)接收緩沖器和發(fā)送緩沖器。接收緩沖器具有雙緩沖的功能,即它在接收第一個(gè)數(shù)據(jù)字節(jié)后,能接收笫二個(gè)數(shù)據(jù)字節(jié)。但是在接收完第二個(gè)字節(jié)后,若笫一個(gè)數(shù)據(jù)字節(jié)還未取走,那么該數(shù)據(jù)字節(jié)將丟失。 80C51串行口基本結(jié)構(gòu)如

10、串行口基本結(jié)構(gòu)如圖圖71所示。所示。 第11頁(yè)/共90頁(yè) 波特率發(fā)生器波特率發(fā)生器 由由T1、T2 及內(nèi)部的一些控制開(kāi)關(guān)和分頻器所及內(nèi)部的一些控制開(kāi)關(guān)和分頻器所 組成。它提供串行口的時(shí)鐘信號(hào)為組成。它提供串行口的時(shí)鐘信號(hào)為 TXCLOCK和和 RXCLOCK。 控制波特率發(fā)生器的特殊功能寄存器控制波特率發(fā)生器的特殊功能寄存器: TMOD、TCON、T2CON、PCON、TL1、TH1、TL2 、TH2等。等。 第12頁(yè)/共90頁(yè) 串行口內(nèi)部串行口內(nèi)部 串行數(shù)據(jù)緩沖寄存器串行數(shù)據(jù)緩沖寄存器SBUF 有接收緩沖器有接收緩沖器SBUF和發(fā)送緩沖器和發(fā)送緩沖器SBUF,占,占 用同一個(gè)地址用同一個(gè)地址

11、(99H) 。 串行口控制寄存器串行口控制寄存器SCON 第13頁(yè)/共90頁(yè) 串行數(shù)據(jù)輸入輸出引腳串行數(shù)據(jù)輸入輸出引腳 接收方式下,串行數(shù)據(jù)從接收方式下,串行數(shù)據(jù)從RXD引腳輸入,串引腳輸入,串 行口內(nèi)部在接收緩沖器之前還有移位寄存器,從而構(gòu)行口內(nèi)部在接收緩沖器之前還有移位寄存器,從而構(gòu) 成了串行接收的雙緩沖結(jié)構(gòu),可以避免在數(shù)據(jù)接收過(guò)成了串行接收的雙緩沖結(jié)構(gòu),可以避免在數(shù)據(jù)接收過(guò) 程中出現(xiàn)幀重疊錯(cuò)誤。程中出現(xiàn)幀重疊錯(cuò)誤。 在發(fā)送方式下,串行數(shù)據(jù)通過(guò)在發(fā)送方式下,串行數(shù)據(jù)通過(guò)TXD引腳輸出。引腳輸出。 第14頁(yè)/共90頁(yè) 串行口控制邏輯串行口控制邏輯 接受來(lái)自波特率發(fā)生器的時(shí)鐘信號(hào)接受來(lái)自波特率

12、發(fā)生器的時(shí)鐘信號(hào) TXCLOCK和和RXCLOCK; 控制內(nèi)部的輸入移位寄存器將外部的串行數(shù)控制內(nèi)部的輸入移位寄存器將外部的串行數(shù) 據(jù)轉(zhuǎn)換為并行數(shù)據(jù);據(jù)轉(zhuǎn)換為并行數(shù)據(jù); 控制內(nèi)部的輸出移位寄存器將內(nèi)部的并行數(shù)控制內(nèi)部的輸出移位寄存器將內(nèi)部的并行數(shù) 據(jù)轉(zhuǎn)換為串行數(shù)據(jù)輸出;據(jù)轉(zhuǎn)換為串行數(shù)據(jù)輸出; 控制串行中斷(控制串行中斷(RI和和TI)。)。 第15頁(yè)/共90頁(yè) 串行口狀態(tài)控制寄存器串行口狀態(tài)控制寄存器 SCON 控制串行通信的方式選擇、接收,指示串行口控制串行通信的方式選擇、接收,指示串行口 的中斷狀態(tài)。的中斷狀態(tài)。 位地位地 址址 9FH 9EH 9DH9CH 9BH 9AH 99H 98H

13、 位功位功 能能 SM0SM1SM2R E N TB8 RB8 TI RI 第16頁(yè)/共90頁(yè) SM0、SM1:串行口工作方式選擇位。其功能見(jiàn):串行口工作方式選擇位。其功能見(jiàn)表表71。 SM2 :允許方式:允許方式2、3中的多處理機(jī)通信位。中的多處理機(jī)通信位。 方式方式0時(shí),時(shí),SM20。 方式方式1時(shí),若時(shí),若SM2l,只有接收到有效的停止位,接收中斷,只有接收到有效的停止位,接收中斷RI才置才置1。 方式方式2和方式和方式3時(shí),時(shí), SM21,則只有當(dāng)接收到的第,則只有當(dāng)接收到的第9位數(shù)據(jù)位數(shù)據(jù)RB8為為1時(shí),才將接收到的前時(shí),才將接收到的前8位數(shù)據(jù)送入緩沖器位數(shù)據(jù)送入緩沖器SBUF中,并

14、把中,并把RI置置1、同時(shí)向、同時(shí)向CPU申請(qǐng)中斷;如果接收到的第申請(qǐng)中斷;如果接收到的第9位數(shù)據(jù)位數(shù)據(jù)RB8為為0,RI置置0,將接收到的前,將接收到的前8位數(shù)據(jù)丟棄。位數(shù)據(jù)丟棄。 SM20時(shí),則不論接收到的笫時(shí),則不論接收到的笫9 9位數(shù)據(jù)是位數(shù)據(jù)是0 0或或1 1,都將前,都將前8 8位數(shù)據(jù)裝入位數(shù)據(jù)裝入SBUFSBUF中,并申請(qǐng)中斷。中,并申請(qǐng)中斷。 第17頁(yè)/共90頁(yè) REN :允許串行接收位。:允許串行接收位。 REN1時(shí),允許串行接收;時(shí),允許串行接收;REN0時(shí),禁止串行接收。時(shí),禁止串行接收。 TB8 :方式:方式2和方式和方式3中要發(fā)送的第中要發(fā)送的第9位數(shù)據(jù)。位數(shù)據(jù)。 在

15、通信協(xié)議中,常規(guī)定在通信協(xié)議中,常規(guī)定TB8作為奇偶校驗(yàn)位。在作為奇偶校驗(yàn)位。在80C51多機(jī)通信中,多機(jī)通信中,TB8=0用來(lái)表示數(shù)據(jù)幀;用來(lái)表示數(shù)據(jù)幀;TB8=1表示是地址幀。表示是地址幀。 RB8 :方式:方式2和方式和方式3中接收到的第中接收到的第9位數(shù)據(jù)。位數(shù)據(jù)。 方式方式1中接收到的是停止位。方式中接收到的是停止位。方式0中不使用這一位。中不使用這一位。 第18頁(yè)/共90頁(yè) TI :發(fā)送中斷標(biāo)志位。:發(fā)送中斷標(biāo)志位。 方式方式 0中,在發(fā)送第中,在發(fā)送第 8位末尾置位;在其它方位末尾置位;在其它方 式時(shí),在發(fā)送停止位開(kāi)始時(shí)設(shè)置。式時(shí),在發(fā)送停止位開(kāi)始時(shí)設(shè)置。 由硬件置位,用軟件清除

16、。由硬件置位,用軟件清除。 RI : 接收中斷標(biāo)志位。接收中斷標(biāo)志位。 方式方式 0中,在接收第中,在接收第 8位末尾置位;在其它方位末尾置位;在其它方 式時(shí),在接收停止位中間設(shè)置。式時(shí),在接收停止位中間設(shè)置。 由硬件置位,用軟件清除。由硬件置位,用軟件清除。 第19頁(yè)/共90頁(yè) 電源控制及波特率選擇寄存器電源控制及波特率選擇寄存器 PCON 最高位最高位SMOD與串行口控制有關(guān),其它位與低與串行口控制有關(guān),其它位與低 功耗工作方式有關(guān)。功耗工作方式有關(guān)。 D7 D6 D5 D4 D3 D2 D1 D0 S M O D WLF GF1 GF0 PD IDL SMOD:串行通信波特率系數(shù)控制位。

17、:串行通信波特率系數(shù)控制位。 當(dāng)當(dāng)SMOD1時(shí),使波特率加倍。時(shí),使波特率加倍。 復(fù)位后,復(fù)位后,SMOD0。 第20頁(yè)/共90頁(yè) 串行數(shù)據(jù)寄存器串行數(shù)據(jù)寄存器SBUF 包含在物理上是隔離的兩個(gè)包含在物理上是隔離的兩個(gè)8位寄存器:發(fā)送位寄存器:發(fā)送 數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器,它們共用一個(gè)地址數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器,它們共用一個(gè)地址99H 。 D7 D6 D5 D4 D3 D2 D1 D0 SD7 SD6 SD5 SD4 SD3 SD2 SD1 SD0 讀讀SBUF(MOVA,SBUF),則訪問(wèn)接收),則訪問(wèn)接收 數(shù)據(jù)寄存器;數(shù)據(jù)寄存器; 寫寫SBUF(MOV SBUF,A),則訪問(wèn)發(fā)送)

18、,則訪問(wèn)發(fā)送 數(shù)據(jù)寄存器。數(shù)據(jù)寄存器。 第21頁(yè)/共90頁(yè) 在串行口控制寄存器在串行口控制寄存器SCON中,中,SM0和和SM1位位 決定串行口的工作方式。決定串行口的工作方式。80C51串行口共有串行口共有4 4種工作方種工作方 式。式。 第22頁(yè)/共90頁(yè) SM00、SM10。同步移位寄器方式。同步移位寄器方式。 數(shù)據(jù)傳輸波特率固定為(數(shù)據(jù)傳輸波特率固定為(112)fosc。 由由RXD引腳輸入或輸出數(shù)據(jù),引腳輸入或輸出數(shù)據(jù), 由由TXD引腳輸出同步移位時(shí)鐘。引腳輸出同步移位時(shí)鐘。 接收發(fā)送的是接收發(fā)送的是8位數(shù)據(jù),傳輸時(shí)低位在前。位數(shù)據(jù),傳輸時(shí)低位在前。 幀格式如幀格式如圖圖72所示。所

19、示。 方式方式0 0時(shí)工作原理圖的如時(shí)工作原理圖的如圖圖73所示。所示。 第23頁(yè)/共90頁(yè) 發(fā)送發(fā)送 當(dāng)執(zhí)行任何一條寫當(dāng)執(zhí)行任何一條寫SBUF的指令(的指令(MOV SBUF,A)時(shí),就啟動(dòng)串行數(shù)據(jù)的發(fā)送。)時(shí),就啟動(dòng)串行數(shù)據(jù)的發(fā)送。 在執(zhí)行寫入在執(zhí)行寫入SBUF的指令時(shí),選通內(nèi)部的指令時(shí),選通內(nèi)部D觸發(fā)器置觸發(fā)器置1 ,構(gòu)成發(fā)送移位寄存器的第,構(gòu)成發(fā)送移位寄存器的第9位,位,并使發(fā)送控制器開(kāi)始發(fā)送。當(dāng)發(fā)送脈沖有效之后,移位寄存器的內(nèi)容由并使發(fā)送控制器開(kāi)始發(fā)送。當(dāng)發(fā)送脈沖有效之后,移位寄存器的內(nèi)容由RXD引腳串行移位輸出;移位脈沖由引腳串行移位輸出;移位脈沖由TXD引腳輸出。引腳輸出。 在發(fā)

20、送有效的期間,每個(gè)機(jī)器周期,發(fā)送移位寄存器右移一位,在其左邊補(bǔ)在發(fā)送有效的期間,每個(gè)機(jī)器周期,發(fā)送移位寄存器右移一位,在其左邊補(bǔ)0。當(dāng)數(shù)據(jù)最高位移到移位寄存器的輸出位時(shí),原寫入第。當(dāng)數(shù)據(jù)最高位移到移位寄存器的輸出位時(shí),原寫入第9位的位的 l正好移到最高位的左邊一位,由此向左的所有位均為正好移到最高位的左邊一位,由此向左的所有位均為 0,零檢測(cè)器通知發(fā)送控制器要進(jìn)行最后一次移位,并撤銷發(fā)送有效,同時(shí)使發(fā)送中斷標(biāo)志,零檢測(cè)器通知發(fā)送控制器要進(jìn)行最后一次移位,并撤銷發(fā)送有效,同時(shí)使發(fā)送中斷標(biāo)志TI置位,若置位,若CPU響應(yīng)中斷,則執(zhí)行從響應(yīng)中斷,則執(zhí)行從0023H開(kāi)始的串行口發(fā)送中斷服務(wù)程序。開(kāi)始的

21、串行口發(fā)送中斷服務(wù)程序。 第24頁(yè)/共90頁(yè) 接收接收 當(dāng)當(dāng)REN1 且且RI位清除時(shí),就會(huì)啟動(dòng)一次接收過(guò)程。位清除時(shí),就會(huì)啟動(dòng)一次接收過(guò)程。 在下一機(jī)器周期的在下一機(jī)器周期的S6P2時(shí)刻,接收控制器將時(shí)刻,接收控制器將1111 1110寫入接收移位寄存器,并在下一時(shí)鐘周期寫入接收移位寄存器,并在下一時(shí)鐘周期S1P1使接收控制器的接收有效,打開(kāi)使接收控制器的接收有效,打開(kāi)“與非門與非門” ,同時(shí)由,同時(shí)由TXD引腳輸出移位脈沖。在移位脈沖控制下,接收移位寄存器的內(nèi)容每一個(gè)機(jī)器周期左移一位,同時(shí)由引腳輸出移位脈沖。在移位脈沖控制下,接收移位寄存器的內(nèi)容每一個(gè)機(jī)器周期左移一位,同時(shí)由RXD引腳接收

22、一位輸入信號(hào)。引腳接收一位輸入信號(hào)。 每當(dāng)接收移位寄存器左移一位,原寫入的每當(dāng)接收移位寄存器左移一位,原寫入的1111 1110也左移一位。當(dāng)最右邊的也左移一位。當(dāng)最右邊的0移到最左邊時(shí),標(biāo)志著接收控制器要進(jìn)行最后一次移位。在最后一次移位即將結(jié)束時(shí),接收移位寄存器的內(nèi)容送入接收數(shù)據(jù)緩沖寄存器移到最左邊時(shí),標(biāo)志著接收控制器要進(jìn)行最后一次移位。在最后一次移位即將結(jié)束時(shí),接收移位寄存器的內(nèi)容送入接收數(shù)據(jù)緩沖寄存器SBUF,然后在啟動(dòng)接收的第,然后在啟動(dòng)接收的第10個(gè)機(jī)器周期的個(gè)機(jī)器周期的S1P1時(shí),清除接收信號(hào),置位時(shí),清除接收信號(hào),置位SCON中的中的RI,發(fā)出中斷申請(qǐng)。完成一幀數(shù)據(jù)的接收過(guò)程。若

23、,發(fā)出中斷申請(qǐng)。完成一幀數(shù)據(jù)的接收過(guò)程。若CPU響應(yīng)中斷,則執(zhí)行從響應(yīng)中斷,則執(zhí)行從0023H開(kāi)始的串行口接收中斷服務(wù)程序開(kāi)始的串行口接收中斷服務(wù)程序 第25頁(yè)/共90頁(yè) SM00、SM1l。 數(shù)據(jù)傳輸波特率由數(shù)據(jù)傳輸波特率由T1和和T2的溢出決定,可用的溢出決定,可用 程序設(shè)定。當(dāng)程序設(shè)定。當(dāng)T2CON寄存器中的寄存器中的RCLK和和TCLK置位置位 時(shí),采用時(shí),采用T2作為串行口接收和發(fā)送的波特率發(fā)生器。作為串行口接收和發(fā)送的波特率發(fā)生器。 而當(dāng)而當(dāng)RCLK和和TCLK都為零時(shí),采用都為零時(shí),采用T1作為串行口接收作為串行口接收 和發(fā)送的波特率發(fā)生器。和發(fā)送的波特率發(fā)生器。 由由 TXD引

24、腳發(fā)送數(shù)據(jù)。引腳發(fā)送數(shù)據(jù)。 由由 RXD引腳接收數(shù)據(jù)。引腳接收數(shù)據(jù)。 第26頁(yè)/共90頁(yè) 發(fā)送或接收一幀信息為發(fā)送或接收一幀信息為10位:位:1位起始位(位起始位(0)、)、 8位數(shù)據(jù)位位數(shù)據(jù)位(低位在前低位在前)和和l位停止位(位停止位(1)。)。 幀格式如幀格式如圖圖74所示。所示。 第27頁(yè)/共90頁(yè) 發(fā)送:方式發(fā)送:方式1時(shí),發(fā)送的工作原理圖如時(shí),發(fā)送的工作原理圖如圖圖75所示。所示。 當(dāng)執(zhí)行任何一條寫當(dāng)執(zhí)行任何一條寫 SBUF的指令時(shí),就啟動(dòng)串行數(shù)據(jù)的發(fā)送。在執(zhí)行寫入的指令時(shí),就啟動(dòng)串行數(shù)據(jù)的發(fā)送。在執(zhí)行寫入SBUF的指令時(shí),也將的指令時(shí),也將1寫入發(fā)送移位寄存器的第寫入發(fā)送移位寄存

25、器的第9位位(由由SBUF和和1個(gè)獨(dú)立的個(gè)獨(dú)立的D觸發(fā)器構(gòu)成觸發(fā)器構(gòu)成),并通知發(fā)送控制器有發(fā)送請(qǐng)求。,并通知發(fā)送控制器有發(fā)送請(qǐng)求。 第28頁(yè)/共90頁(yè) 開(kāi)始發(fā)送后的一個(gè)位周期,發(fā)送信號(hào)有效,開(kāi)始將起始位送開(kāi)始發(fā)送后的一個(gè)位周期,發(fā)送信號(hào)有效,開(kāi)始將起始位送TXD引腳。一位時(shí)間后,數(shù)據(jù)信號(hào)有效。發(fā)送移位寄存器將數(shù)據(jù)由低位到高位順序輸出至引腳。一位時(shí)間后,數(shù)據(jù)信號(hào)有效。發(fā)送移位寄存器將數(shù)據(jù)由低位到高位順序輸出至TXD引腳。一位時(shí)間后,第一個(gè)移位脈沖出現(xiàn)將最低數(shù)據(jù)位從右邊移出,同時(shí)引腳。一位時(shí)間后,第一個(gè)移位脈沖出現(xiàn)將最低數(shù)據(jù)位從右邊移出,同時(shí)0從左邊擠入。當(dāng)最高數(shù)據(jù)位移至發(fā)送移位寄存器的出端時(shí),

26、先前裝入的第從左邊擠入。當(dāng)最高數(shù)據(jù)位移至發(fā)送移位寄存器的出端時(shí),先前裝入的第9位的位的l,正好在最高數(shù)據(jù)位的左邊,而它的右邊全部為,正好在最高數(shù)據(jù)位的左邊,而它的右邊全部為0。這種狀態(tài)被零檢測(cè)器檢測(cè)到,在第。這種狀態(tài)被零檢測(cè)器檢測(cè)到,在第10個(gè)位周期(個(gè)位周期(16分頻計(jì)數(shù)器回分頻計(jì)數(shù)器回0時(shí)),發(fā)送控制器進(jìn)行最后一次移位,清除發(fā)送信號(hào),同時(shí)使時(shí)),發(fā)送控制器進(jìn)行最后一次移位,清除發(fā)送信號(hào),同時(shí)使SCON寄存器中寄存器中TI置位,完成了一幀數(shù)據(jù)發(fā)送的全過(guò)程。置位,完成了一幀數(shù)據(jù)發(fā)送的全過(guò)程。 若若CPU響應(yīng)中斷,則執(zhí)行從響應(yīng)中斷,則執(zhí)行從0023H開(kāi)始的串行口發(fā)送中斷服務(wù)程序。開(kāi)始的串行口發(fā)送

27、中斷服務(wù)程序。 第29頁(yè)/共90頁(yè) 接收接收 方式方式1時(shí),接收的工作原理圖如時(shí),接收的工作原理圖如圖圖76所示。所示。 當(dāng)當(dāng)REN1且清除且清除RI后,若在后,若在RXD引腳上檢測(cè)到一個(gè)引腳上檢測(cè)到一個(gè)1到到0的跳變,立即啟動(dòng)一次接收。同時(shí),復(fù)位的跳變,立即啟動(dòng)一次接收。同時(shí),復(fù)位16分頻計(jì)數(shù)器,使輸入位的邊沿與時(shí)鐘對(duì)齊,并將分頻計(jì)數(shù)器,使輸入位的邊沿與時(shí)鐘對(duì)齊,并將1FFH(即(即9個(gè)個(gè)l)寫入接收移位寄存器。接收控制器以波特率的)寫入接收移位寄存器。接收控制器以波特率的16倍的速率繼續(xù)對(duì)倍的速率繼續(xù)對(duì)RXD引腳進(jìn)行檢測(cè),引腳進(jìn)行檢測(cè), 計(jì)數(shù)器的計(jì)數(shù)器的16個(gè)狀態(tài)把每一位的時(shí)間分為個(gè)狀態(tài)把

28、每一位的時(shí)間分為16份,對(duì)每一位時(shí)間的第份,對(duì)每一位時(shí)間的第7、8、9個(gè)計(jì)數(shù)狀態(tài),位檢測(cè)器對(duì)個(gè)計(jì)數(shù)狀態(tài),位檢測(cè)器對(duì)RXD端的值采樣,這端的值采樣,這3 3個(gè)狀態(tài)理論上對(duì)應(yīng)于每一位的中央值。若發(fā)送端與接收端的波特率有差異,就會(huì)發(fā)生偏移,只要這種差異在允許范圍內(nèi),就不至于發(fā)生錯(cuò)位或漏碼。在上述個(gè)狀態(tài)理論上對(duì)應(yīng)于每一位的中央值。若發(fā)送端與接收端的波特率有差異,就會(huì)發(fā)生偏移,只要這種差異在允許范圍內(nèi),就不至于發(fā)生錯(cuò)位或漏碼。在上述3 3個(gè)狀態(tài)下,取得個(gè)狀態(tài)下,取得3 3個(gè)采樣值,其中至少有兩個(gè)值是一致的,即采用個(gè)采樣值,其中至少有兩個(gè)值是一致的,即采用3取取2的多數(shù)表決法,可抑制噪聲。的多數(shù)表決法,可

29、抑制噪聲。 第30頁(yè)/共90頁(yè) 如果在第如果在第1個(gè)時(shí)鐘周期中接收到的不是個(gè)時(shí)鐘周期中接收到的不是0,說(shuō)明它不是一幀數(shù)據(jù)的起始位,則復(fù)位接收電路,繼續(xù)檢測(cè),說(shuō)明它不是一幀數(shù)據(jù)的起始位,則復(fù)位接收電路,繼續(xù)檢測(cè)RXD引腳上引腳上l到到0的跳變。如果接收到的是起始位,就將其移入接收移位寄存器,然后接收該幀的其它位。接收到的位從右邊移入,原來(lái)寫入的的跳變。如果接收到的是起始位,就將其移入接收移位寄存器,然后接收該幀的其它位。接收到的位從右邊移入,原來(lái)寫入的1,從左邊移出,當(dāng)起始位移到最左邊時(shí),接收控制器將控制進(jìn)行最后一次移位,把接收到的,從左邊移出,當(dāng)起始位移到最左邊時(shí),接收控制器將控制進(jìn)行最后一次

30、移位,把接收到的9位數(shù)據(jù)送入接收數(shù)據(jù)緩沖器位數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和和RB8,而且置位,而且置位RI。 在進(jìn)行最后一次移位時(shí),能將數(shù)據(jù)送入接收數(shù)據(jù)緩沖器在進(jìn)行最后一次移位時(shí),能將數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和和RB8,而且置位,而且置位RI的條件是:的條件是: RI0 即上一幀數(shù)據(jù)接收完成時(shí)發(fā)出的中斷請(qǐng)求已被響應(yīng),即上一幀數(shù)據(jù)接收完成時(shí)發(fā)出的中斷請(qǐng)求已被響應(yīng),SBUF中數(shù)據(jù)已被取走。中數(shù)據(jù)已被取走。 SM20或接收到的停止位或接收到的停止位1。 若以上兩個(gè)條件中有一個(gè)不滿足,將不可恢復(fù)地丟失接收到的這一幀信息。若以上兩個(gè)條件中有一個(gè)不滿足,將不可恢復(fù)地丟失接收到的這一幀信息。 第31

31、頁(yè)/共90頁(yè) SM01、SM10,選擇方式,選擇方式2; SM11、SM01,選擇方式,選擇方式3。 由由TXD引腳發(fā)送數(shù)據(jù)。引腳發(fā)送數(shù)據(jù)。 由由RXD引腳接收數(shù)據(jù)。引腳接收數(shù)據(jù)。 發(fā)送或接收一幀信息為發(fā)送或接收一幀信息為11位:位:1位起始位(位起始位(0) 、8位數(shù)據(jù)位位數(shù)據(jù)位(低位在前低位在前) 、1位可編程位和位可編程位和1位停止位(位停止位(l )。發(fā)送時(shí)可編程位)。發(fā)送時(shí)可編程位TB8可設(shè)置為可設(shè)置為1或或0,接收時(shí)可編程,接收時(shí)可編程 位進(jìn)入位進(jìn)入SCON寄存器的寄存器的RB8位。位。 方式方式2的波特率是固定的,為振蕩器頻率的的波特率是固定的,為振蕩器頻率的1/32或或1/64

32、 。. .方式方式3的波特率則由的波特率則由T1和和T2的溢出決定,可用程序的溢出決定,可用程序 設(shè)定。設(shè)定。 第32頁(yè)/共90頁(yè) 幀格式如幀格式如如如圖圖 7-7所示。所示。 方式方式 2時(shí)的工作原理圖如時(shí)的工作原理圖如圖圖 7-8所示。所示。 第33頁(yè)/共90頁(yè) 在進(jìn)行最后一次移位時(shí),能將數(shù)據(jù)送入接收數(shù)據(jù)緩沖器在進(jìn)行最后一次移位時(shí),能將數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和和RB8,而且置位,而且置位RI的條件是:的條件是: RI0; SM20或接收到的停止位或接收到的停止位1。 若以上兩個(gè)條件中有一個(gè)不滿足,將不可恢復(fù)地丟失接收到的這一幀信息。若以上兩個(gè)條件中有一個(gè)不滿足,將不可恢復(fù)地丟失接收

33、到的這一幀信息。 第34頁(yè)/共90頁(yè) SM2:多處理機(jī)通信位。:多處理機(jī)通信位。 當(dāng)串行口以方式當(dāng)串行口以方式2或方式或方式3接收時(shí),若接收時(shí),若SM21,只有當(dāng)接收到的第,只有當(dāng)接收到的第9位數(shù)據(jù)位數(shù)據(jù)RB8為為1時(shí),才將數(shù)據(jù)送入接收緩沖器時(shí),才將數(shù)據(jù)送入接收緩沖器SBUF,并使,并使RI置置1,申請(qǐng)中斷,否則數(shù)據(jù)將丟失;若,申請(qǐng)中斷,否則數(shù)據(jù)將丟失;若SM20,則無(wú)論第,則無(wú)論第9位數(shù)據(jù)位數(shù)據(jù)RB8是是1還是還是0,都能將數(shù)據(jù)裝入,都能將數(shù)據(jù)裝入SBUF,并且發(fā)中斷。,并且發(fā)中斷。 利用這一特性,便可實(shí)現(xiàn)主機(jī)與多個(gè)從機(jī)之間的串行通信。利用這一特性,便可實(shí)現(xiàn)主機(jī)與多個(gè)從機(jī)之間的串行通信。圖圖

34、79為多機(jī)通信連線示意圖,系統(tǒng)中左邊的為多機(jī)通信連線示意圖,系統(tǒng)中左邊的80C51為主機(jī),其余的為為主機(jī),其余的為1n號(hào)從機(jī),并保證每臺(tái)從機(jī)在系統(tǒng)中的編號(hào)是惟一的。號(hào)從機(jī),并保證每臺(tái)從機(jī)在系統(tǒng)中的編號(hào)是惟一的。 第35頁(yè)/共90頁(yè) 系統(tǒng)初始化時(shí),將所有從機(jī)中的系統(tǒng)初始化時(shí),將所有從機(jī)中的SM2位均設(shè)置為位均設(shè)置為1,并處于允許串行口中斷接收狀態(tài)。,并處于允許串行口中斷接收狀態(tài)。 主機(jī)欲與某從機(jī)通信,先向所有從機(jī)發(fā)出所選從機(jī)的地址,從機(jī)地址符合后,接著才發(fā)送命令或數(shù)據(jù)。主機(jī)欲與某從機(jī)通信,先向所有從機(jī)發(fā)出所選從機(jī)的地址,從機(jī)地址符合后,接著才發(fā)送命令或數(shù)據(jù)。 在主機(jī)發(fā)地址時(shí),置第在主機(jī)發(fā)地址時(shí),

35、置第9位數(shù)據(jù)(位數(shù)據(jù)(RB8)為)為1,表示主機(jī)發(fā)送的是地址幀;,表示主機(jī)發(fā)送的是地址幀; 當(dāng)主機(jī)呼叫某從機(jī)聯(lián)絡(luò)正確后,主機(jī)發(fā)送命令或數(shù)據(jù)幀時(shí),將第當(dāng)主機(jī)呼叫某從機(jī)聯(lián)絡(luò)正確后,主機(jī)發(fā)送命令或數(shù)據(jù)幀時(shí),將第9位數(shù)據(jù)(位數(shù)據(jù)(RB8)清)清0。 第36頁(yè)/共90頁(yè) 各從機(jī)由于各從機(jī)由于SM2置置1,將響應(yīng)主機(jī)發(fā)來(lái)的第,將響應(yīng)主機(jī)發(fā)來(lái)的第9位數(shù)據(jù)(位數(shù)據(jù)(RB8)為)為1的地址信息。從機(jī)響應(yīng)中斷后,有兩種不同的操作:的地址信息。從機(jī)響應(yīng)中斷后,有兩種不同的操作: 若從若從機(jī)的地址與主機(jī)點(diǎn)名的地址不相同,則該從機(jī)將繼續(xù)維持機(jī)的地址與主機(jī)點(diǎn)名的地址不相同,則該從機(jī)將繼續(xù)維持SM2為為l,從而拒絕接收主機(jī)

36、后面發(fā)來(lái)的命令或數(shù)據(jù)信息,等待主機(jī)的下一次點(diǎn)名。,從而拒絕接收主機(jī)后面發(fā)來(lái)的命令或數(shù)據(jù)信息,等待主機(jī)的下一次點(diǎn)名。 若從機(jī)的地址與主機(jī)點(diǎn)名的地址相同,該從機(jī)將本機(jī)的若從機(jī)的地址與主機(jī)點(diǎn)名的地址相同,該從機(jī)將本機(jī)的SM2清清0,繼續(xù)接收主機(jī)發(fā)來(lái)的命令或數(shù)據(jù),響應(yīng)中斷。,繼續(xù)接收主機(jī)發(fā)來(lái)的命令或數(shù)據(jù),響應(yīng)中斷。 第37頁(yè)/共90頁(yè) 串行口的波特率發(fā)生器如串行口的波特率發(fā)生器如圖圖7-10所示。所示。 方式方式0時(shí)的波特率由振蕩器的頻率(時(shí)的波特率由振蕩器的頻率(fosc)所確定:波特率為)所確定:波特率為fosc/12。 方式方式2時(shí)的波特率由振蕩器的頻率(時(shí)的波特率由振蕩器的頻率(fosc)和)

37、和SMOD位確定:位確定: 當(dāng)當(dāng)SMOD位位1時(shí),波特率時(shí),波特率fosc/32;當(dāng);當(dāng)SMOD0時(shí),波特率時(shí),波特率fosc/64。 方式方式1和和3時(shí)的波特率由定時(shí)器時(shí)的波特率由定時(shí)器T1和和T2的溢出率和的溢出率和SMOD確定。確定。 第38頁(yè)/共90頁(yè) (1)用定時(shí)器)用定時(shí)器T1(0)產(chǎn)生波特率)產(chǎn)生波特率 定時(shí)器定時(shí)器T1工作于方式工作于方式0: T1為為13位計(jì)數(shù)器。位計(jì)數(shù)器。 式中:式中:TC13位計(jì)數(shù)器初值;位計(jì)數(shù)器初值; X中斷服務(wù)程序的機(jī)器周期數(shù),在中斷服務(wù)程序中重新對(duì)定時(shí)器置數(shù)。中斷服務(wù)程序的機(jī)器周期數(shù),在中斷服務(wù)程序中重新對(duì)定時(shí)器置數(shù)。 第39頁(yè)/共90頁(yè) 定時(shí)器定時(shí)

38、器T1工作于方式工作于方式1: T1為為16位的計(jì)數(shù)器。位的計(jì)數(shù)器。 式中:式中:TC16位計(jì)數(shù)器初值;位計(jì)數(shù)器初值; X中斷服務(wù)程序的機(jī)器周期數(shù),在中斷服務(wù)程序中重新對(duì)定時(shí)器置數(shù)。中斷服務(wù)程序的機(jī)器周期數(shù),在中斷服務(wù)程序中重新對(duì)定時(shí)器置數(shù)。 定時(shí)器定時(shí)器Tl工作于方式工作于方式2: T1為為8位可重裝的方式,用位可重裝的方式,用TL1計(jì)數(shù),用計(jì)數(shù),用TH1裝初值。裝初值。 第40頁(yè)/共90頁(yè) 例:例: 使用使用74LS164的并行輸出端接的并行輸出端接8只發(fā)光二只發(fā)光二 極管,利用它的串入并出功能,把發(fā)光二極管從左向極管,利用它的串入并出功能,把發(fā)光二極管從左向 右依次點(diǎn)亮,并不斷循環(huán)之。右

39、依次點(diǎn)亮,并不斷循環(huán)之。發(fā)光二極管擴(kuò)展連接路發(fā)光二極管擴(kuò)展連接路 如如圖圖7-11所示所示。 第41頁(yè)/共90頁(yè) MOVSCON,#00H;設(shè)串行口為方式;設(shè)串行口為方式0,CLRES ;禁止串行口中斷;禁止串行口中斷 MOVA,#80H;先顯示最左邊發(fā)光二極管;先顯示最左邊發(fā)光二極管 LED:MOVSBUF,A;串行輸出;串行輸出 JNBTI,$;輸出等待;輸出等待 CLRTI ;軟件清中斷標(biāo)志;軟件清中斷標(biāo)志 ACALLDELAY;輪顯間隔;輪顯間隔 RRA;發(fā)光右移;發(fā)光右移 AJMPLED;循環(huán);循環(huán) DELAY:;延時(shí)子程序;延時(shí)子程序 RET 第42頁(yè)/共90頁(yè) 例:試編寫雙機(jī)通信

40、程序。甲、乙雙機(jī)均為串行口方式例:試編寫雙機(jī)通信程序。甲、乙雙機(jī)均為串行口方式1,并以定時(shí)器,并以定時(shí)器T1的方式的方式2為波特率發(fā)生器,波特率為為波特率發(fā)生器,波特率為2400。 波特率的計(jì)算:這里使用波特率的計(jì)算:這里使用6MHz晶振,以晶振,以T1的方式的方式2制定波特率。制定波特率。 計(jì)算定時(shí)器計(jì)算定時(shí)器T1的計(jì)數(shù)初值:的計(jì)數(shù)初值: 波特率波特率= 2smod = 2smod fosc fosc 1 1 32 1232 12 2 28 8 TH1TH1 TH1=2TH1=28 8(2(2SMODSMODf fosc)osc)( (波特率波特率323212)12) =256 =256(2

41、(20 06 610106 6) )(2400(2400323212)12) =256 =2566.5=249.5=FAH6.5=249.5=FAH 第43頁(yè)/共90頁(yè) 甲機(jī)發(fā)送:甲機(jī)發(fā)送: 將以片內(nèi)將以片內(nèi)RAM的的78H及及77H的內(nèi)容為首地址、以的內(nèi)容為首地址、以76H及及75H的內(nèi)容減的內(nèi)容減1為末地址的數(shù)據(jù)塊內(nèi)容,通過(guò)串行口傳至乙機(jī)。為末地址的數(shù)據(jù)塊內(nèi)容,通過(guò)串行口傳至乙機(jī)。 例:例:(78H) 20H;首地址高位;首地址高位 (77H)00H (76H)20H;末地址高位;末地址高位 (75H)20H 即要求程序?qū)⑵饧匆蟪绦驅(qū)⑵釸AM的的2000H20lFH中的內(nèi)容輸出到串行

42、口。對(duì)數(shù)據(jù)塊首、末地址的傳送以查詢方式進(jìn)行,而數(shù)據(jù)的傳送以中斷方式進(jìn)行。中的內(nèi)容輸出到串行口。對(duì)數(shù)據(jù)塊首、末地址的傳送以查詢方式進(jìn)行,而數(shù)據(jù)的傳送以中斷方式進(jìn)行。 第44頁(yè)/共90頁(yè) ORG0000H SJMPTRANS ORG 0023H ;串行口中斷入口;串行口中斷入口 AJMP SINT ORG0030H TRANS:MOV TMOD,20H;置;置T1為定時(shí)器方式為定時(shí)器方式2 MOVTL1,0FAH ;置;置T1定時(shí)常數(shù)定時(shí)常數(shù)(波特率為波特率為 ;2400) MOV TH1,0FAH SETB EA ;允許中斷;允許中斷 CLR ES ;關(guān)串行口中斷;關(guān)串行口中斷 第45頁(yè)/共90

43、頁(yè) MOVPCON,#00H;波特率不倍增;波特率不倍增 CLR TI ;清發(fā)送中斷;清發(fā)送中斷 MOV SCON,40H ;置串行口方式;置串行口方式1 MOV SBUF,78H ;輸出首地址;輸出首地址 WAIT1:JNB TI,WAITI ;查詢等待發(fā)送結(jié)束;查詢等待發(fā)送結(jié)束 CLR TI MOVSBUF,77H WAIT2:JNB TI,WAIT2 ;查詢等待發(fā)送結(jié)束;查詢等待發(fā)送結(jié)束 CLR TI 第46頁(yè)/共90頁(yè) MOV SBUF,76H ;輸出末地址;輸出末地址 WAIT3:JNB TI,WAIT3 CLR TI MOV SBUF,75H WAIT4:JNB TI,WAIT4

44、CLR TI SETB ES ;允許串行口中斷;允許串行口中斷 第47頁(yè)/共90頁(yè) MOV DPH,78H;輸出數(shù)據(jù)塊中第;輸出數(shù)據(jù)塊中第1個(gè)數(shù)據(jù)個(gè)數(shù)據(jù) MOV DPL,77H MOVX A,DPTR CLR TI MOV SBUF,A SJMP$;中斷等待;中斷等待 第48頁(yè)/共90頁(yè) ORG0200H;串行口中斷服務(wù)程序;串行口中斷服務(wù)程序 SINT:PUSH DPL ;保護(hù)現(xiàn)場(chǎng);保護(hù)現(xiàn)場(chǎng) PUSH DPH PUSH A INC77H;地址加;地址加1 MOVA,77H JNZJP1 INC78H 第49頁(yè)/共90頁(yè) JP1:MOV A,78H CJNE A,76H,END1 ;判數(shù)據(jù)傳送

45、是否結(jié)束,未;判數(shù)據(jù)傳送是否結(jié)束,未 ;結(jié)束則轉(zhuǎn);結(jié)束則轉(zhuǎn)END1 MOV A,77H CJNE A,75H,END1 CLR ES ;結(jié)束,關(guān)串行口中斷;結(jié)束,關(guān)串行口中斷 第50頁(yè)/共90頁(yè) ESCOM:POP A;恢復(fù)現(xiàn)場(chǎng);恢復(fù)現(xiàn)場(chǎng) POP DPH POP DPL RETI END1:MOV DPH,78H;數(shù)據(jù)輸出未結(jié)束,則繼續(xù)發(fā)送;數(shù)據(jù)輸出未結(jié)束,則繼續(xù)發(fā)送 MOV DPL,77H MOVX A,DPTR CLR TI MOV SBUF,A RETI 第51頁(yè)/共90頁(yè) 乙機(jī)接收乙機(jī)接收 乙機(jī)通過(guò)乙機(jī)通過(guò)RXD引腳接收甲機(jī)發(fā)來(lái)的數(shù)據(jù),接收波特率與甲機(jī)一樣。接收的第引腳接收甲機(jī)發(fā)來(lái)的數(shù)

46、據(jù),接收波特率與甲機(jī)一樣。接收的第1、2 2字節(jié)是數(shù)據(jù)塊的首地址,第字節(jié)是數(shù)據(jù)塊的首地址,第3 3、4 4字節(jié)是數(shù)據(jù)塊的末地址減字節(jié)是數(shù)據(jù)塊的末地址減1,第,第5 5字節(jié)開(kāi)始是數(shù)據(jù),接收到的數(shù)據(jù)依次存入數(shù)據(jù)塊首地址開(kāi)始的存儲(chǔ)器中。字節(jié)開(kāi)始是數(shù)據(jù),接收到的數(shù)據(jù)依次存入數(shù)據(jù)塊首地址開(kāi)始的存儲(chǔ)器中。 ORG0000H SJMPRECEIVE;乙機(jī)接收;乙機(jī)接收 ORG0023H AJMPRSINT;串行口中斷入口;串行口中斷入口 第52頁(yè)/共90頁(yè) ORG0030H RECEIVE:MOV TMOD,#20H;設(shè);設(shè)T1T1為定時(shí)器方式為定時(shí)器方式2 2 MOVTL1,0FAH ;置;置T1定時(shí)常數(shù)

47、定時(shí)常數(shù) MOV TH1,0FAH SETB EA ;允許中斷;允許中斷 SETB ES ;允許串行口中斷;允許串行口中斷 CLR TI ;清發(fā)送中斷;清發(fā)送中斷 MOV SCON,50H ;置串行口方式;置串行口方式1、接收、接收 CLR 20H ;置地址標(biāo)志;置地址標(biāo)志(20H0,為,為 ;地址;地址;20H1,為數(shù)據(jù),為數(shù)據(jù)) 第53頁(yè)/共90頁(yè) MOV 70H,78H SJMP$;中斷等待;中斷等待 ORG0200H RSINT:PUSH DPL ;保護(hù)現(xiàn)場(chǎng);保護(hù)現(xiàn)場(chǎng) PUSH DPH PUSH ACC MOV A,R0 PUSH ACC JB 20H,DATA ;判別接收的是地址還是

48、數(shù)據(jù),;判別接收的是地址還是數(shù)據(jù), ;是數(shù)據(jù),轉(zhuǎn)移;是數(shù)據(jù),轉(zhuǎn)移 第54頁(yè)/共90頁(yè) MOV R0,70H ;是地址,分別送入;是地址,分別送入78H75H中去中去 MOV A,SBUF MOV R0,A DEC 70H CLR RI MOV A, 74H CJNE A,70H,RETURN ;是地址,轉(zhuǎn)結(jié)束;是地址,轉(zhuǎn)結(jié)束 SETB 20H;地址已接收完,置接收數(shù)據(jù)標(biāo)志;地址已接收完,置接收數(shù)據(jù)標(biāo)志 第55頁(yè)/共90頁(yè) RETURN:POP ACC ;恢復(fù)現(xiàn)場(chǎng);恢復(fù)現(xiàn)場(chǎng) MOV R0,A POP ACC POP DPH POP DPL RETI DATA:MOV DPH,78H;接收數(shù)據(jù);接

49、收數(shù)據(jù) MOV DPL,77H 第56頁(yè)/共90頁(yè) MOV A,SBUF MOVX DPTR,A ;將數(shù)據(jù)送入片外;將數(shù)據(jù)送入片外RAM CLR RI INC 77H ;地址加;地址加 1 MOV A,77H JNZ DATA1 INC 78H 第57頁(yè)/共90頁(yè) DATA1 MOV A,76H CJNZ A,78H,RETURN MOVA,75H CJNE A,77H,RETURN CLR ES ;結(jié)束,關(guān)串行口中斷;結(jié)束,關(guān)串行口中斷 AJMP RETURN 第58頁(yè)/共90頁(yè) ASCII碼由碼由7位組成,其最高位可作為奇偶校驗(yàn)位用。數(shù)據(jù)塊通過(guò)串行口發(fā)送和接收,采用位組成,其最高位可作為奇

50、偶校驗(yàn)位用。數(shù)據(jù)塊通過(guò)串行口發(fā)送和接收,采用8位異步通信,波特率為位異步通信,波特率為1200,已知,已知fosc11.0592MHz。 從內(nèi)部從內(nèi)部RAM單元單元20H3FH中取出中取出ASCII碼加上奇偶校驗(yàn)位之后發(fā)出。設(shè)串行口為方式碼加上奇偶校驗(yàn)位之后發(fā)出。設(shè)串行口為方式1,T1為方式為方式2作為串行口的波特率發(fā)生器。作為串行口的波特率發(fā)生器。 SMOD0TH1232E8H 第59頁(yè)/共90頁(yè) ORG0000H MOVTMOD,#20H;設(shè);設(shè)T1為方式為方式2 MOVTL1,#0E8H;T1定時(shí)常數(shù)定時(shí)常數(shù) MOVTH1,#0E8H MOVSCON,#01000000B;設(shè)串行口為方式

51、;設(shè)串行口為方式1 MOVR0,#20H;設(shè)發(fā)送數(shù)據(jù)區(qū)首址;設(shè)發(fā)送數(shù)據(jù)區(qū)首址 MOVR7,#32;發(fā)送;發(fā)送32個(gè)個(gè)ASCII碼數(shù)據(jù)碼數(shù)據(jù) 第60頁(yè)/共90頁(yè) LOOP:MOV A,R0;??;取ASCII碼數(shù)據(jù)碼數(shù)據(jù) ACALLSP-OUT;調(diào)用串行口發(fā)送子程序;調(diào)用串行口發(fā)送子程序 INCR0;未發(fā)送完,則繼續(xù);未發(fā)送完,則繼續(xù) DJNZR7,LOOP 第61頁(yè)/共90頁(yè) 串行口發(fā)送子程序串行口發(fā)送子程序 SP-OUT:MOV C,P;設(shè)奇校驗(yàn)位;設(shè)奇校驗(yàn)位CPLC MOVACC.7,C MOVSBUF,A;帶校驗(yàn)位發(fā)送;帶校驗(yàn)位發(fā)送 JNBTI,$;發(fā)送等待;發(fā)送等待 CLRTI RET

52、第62頁(yè)/共90頁(yè) 把接收到的把接收到的32個(gè)字節(jié)數(shù)據(jù)存放到個(gè)字節(jié)數(shù)據(jù)存放到20H3FH中,波特率為中,波特率為1200,若奇校驗(yàn)出錯(cuò),將進(jìn)位標(biāo)志,若奇校驗(yàn)出錯(cuò),將進(jìn)位標(biāo)志C置置1 。 ORG0000H MOVTMOD,#20H;設(shè);設(shè)T1為定時(shí)器方式為定時(shí)器方式2 MOVTL1,#0E8H ;設(shè);設(shè)T1時(shí)間常數(shù)時(shí)間常數(shù) MOVTH1,#0E8H MOVR0,#20H;接收緩沖區(qū)首址;接收緩沖區(qū)首址 MOVR7,#32;接收字節(jié)計(jì)數(shù)器;接收字節(jié)計(jì)數(shù)器 第63頁(yè)/共90頁(yè) LOOP:ACALLSP-IN;調(diào)用帶奇校驗(yàn)的串行口接;調(diào)用帶奇校驗(yàn)的串行口接 ; 收子程序收子程序 JCERROR;校驗(yàn)錯(cuò)

53、,轉(zhuǎn)出錯(cuò)處理;校驗(yàn)錯(cuò),轉(zhuǎn)出錯(cuò)處理 MOVR0,A;存入;存入 INCR0 DJNZR7,LOOP;未接收完,則繼續(xù);未接收完,則繼續(xù) ERROR:;校驗(yàn)錯(cuò),處理;校驗(yàn)錯(cuò),處理 第64頁(yè)/共90頁(yè) SP-IN:MOV SCON,#01010000B;設(shè)串行口為方式;設(shè)串行口為方式; 1,啟動(dòng)接收,啟動(dòng)接收 JNBRI,$ CLRRI MOV A,SBUF;接收一個(gè)字節(jié);接收一個(gè)字節(jié) MOV C,P;檢查奇校驗(yàn)位,若出錯(cuò),;檢查奇校驗(yàn)位,若出錯(cuò),C=1 CPLC ANLA,#7FH;去掉校驗(yàn)位后的;去掉校驗(yàn)位后的ASCII碼數(shù)據(jù)碼數(shù)據(jù) RET 第65頁(yè)/共90頁(yè) 方式方式2接收發(fā)送的一幀信息是接收

54、發(fā)送的一幀信息是11位:第位:第0位位 是起始位(是起始位(0);第);第18位是數(shù)據(jù)位;第位是數(shù)據(jù)位;第9位是程控位位是程控位 ,可由用戶置,可由用戶置TB8決定;第決定;第10位是停止位。位是停止位。 方式方式2的波特率為:的波特率為: 波特率振蕩器頻率波特率振蕩器頻率/n 其中:當(dāng)其中:當(dāng) SMOD0時(shí),時(shí),n64 ; 當(dāng)當(dāng) SMODl時(shí),時(shí),n32。 方式方式2和方式和方式3基本一樣,僅波特率設(shè)置不同?;疽粯?,僅波特率設(shè)置不同。 第66頁(yè)/共90頁(yè) 工作方式工作方式2發(fā)送的一幀信息為發(fā)送的一幀信息為11位:位:1位起始位,位起始位,8位數(shù)位數(shù) 據(jù)位,據(jù)位,1位可編程為位可編程為1或或

55、0的第的第9位(可用作奇偶校驗(yàn)位位(可用作奇偶校驗(yàn)位 或數(shù)據(jù)地址標(biāo)志位)和或數(shù)據(jù)地址標(biāo)志位)和1位停止位。位停止位。 奇偶校驗(yàn)位的發(fā)送是在將發(fā)送數(shù)據(jù)寫入發(fā)送緩沖器奇偶校驗(yàn)位的發(fā)送是在將發(fā)送數(shù)據(jù)寫入發(fā)送緩沖器 SBUF之前,先將奇偶標(biāo)志寫入之前,先將奇偶標(biāo)志寫入SCON的的TB8位。位。 第67頁(yè)/共90頁(yè) ORG0023H AJMPSPINT SPINT:CLR EA;關(guān)中斷;關(guān)中斷 PUSH PSW ;保護(hù)現(xiàn)場(chǎng);保護(hù)現(xiàn)場(chǎng) PUSH ACC SETB EA ;開(kāi)中斷;開(kāi)中斷 SETB PSW.4 ;切換寄存器工作組;切換寄存器工作組 CLR TI ;清除發(fā)送中斷請(qǐng)求標(biāo)志;清除發(fā)送中斷請(qǐng)求標(biāo)志 MOV A,R0 ;取數(shù)據(jù),置奇偶標(biāo)志位;取數(shù)據(jù),置奇偶標(biāo)志位 第68頁(yè)/共90頁(yè) MOV C,P ;奇偶標(biāo)志位;奇偶標(biāo)志位P送送TB8 MOV TB8,C MOV SBUF,A;數(shù)據(jù)寫入發(fā)送緩沖器,啟動(dòng)發(fā)送;數(shù)據(jù)寫入發(fā)送緩沖器,啟動(dòng)發(fā)送 INC R0;數(shù)據(jù)地址指針加;數(shù)據(jù)地址指針加1 CLR 0AFH;恢復(fù)現(xiàn)場(chǎng);恢復(fù)現(xiàn)場(chǎng) POP ACC POP PSW SETB 0AFH CLR PSW .4 ;切換寄存器工作組;切換寄存器工作組 RETI ;中斷

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論