單片機(jī)原理第7章_第1頁
單片機(jī)原理第7章_第2頁
單片機(jī)原理第7章_第3頁
單片機(jī)原理第7章_第4頁
單片機(jī)原理第7章_第5頁
已閱讀5頁,還剩152頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Powerpoint 制作:制作:五邑大學(xué)信息工程學(xué)院五邑大學(xué)信息工程學(xué)院劉煥成劉煥成課程主講:劉煥成課程主講:劉煥成電話:電話O)內(nèi)容提要內(nèi)容提要通信的基本概念通信的基本概念 串行通信串行通信 串行口結(jié)構(gòu)及工作原理串行口結(jié)構(gòu)及工作原理 串行通信編程舉例串行通信編程舉例 多機(jī)通信原理及系統(tǒng)設(shè)計(jì)多機(jī)通信原理及系統(tǒng)設(shè)計(jì) RS-232-C接口標(biāo)準(zhǔn)接口標(biāo)準(zhǔn) RS-485接口接口 7.1 通信的基本概念通信的基本概念7.1.1通信的意義通信的意義 1.學(xué)習(xí)通信技術(shù)的意義學(xué)習(xí)通信技術(shù)的意義通信是當(dāng)代計(jì)算機(jī)應(yīng)用的核心。網(wǎng)絡(luò)和數(shù)據(jù)庫是計(jì)通信是當(dāng)代計(jì)算機(jī)應(yīng)用的核心。網(wǎng)絡(luò)和數(shù)據(jù)庫是計(jì)算

2、機(jī)兩大支柱。算機(jī)兩大支柱。通信是網(wǎng)絡(luò)研究的目的;通信是網(wǎng)絡(luò)研究的目的;網(wǎng)絡(luò)是通信架構(gòu)網(wǎng)絡(luò)是通信架構(gòu)通信思想的起源:通信思想的起源:由單個計(jì)算機(jī)構(gòu)成的封閉系統(tǒng)有由單個計(jì)算機(jī)構(gòu)成的封閉系統(tǒng)有很大的局限性:能力不足、系統(tǒng)復(fù)雜、實(shí)時性差、系統(tǒng)封很大的局限性:能力不足、系統(tǒng)復(fù)雜、實(shí)時性差、系統(tǒng)封閉,不易于產(chǎn)品兼容;信息不能被共享,重復(fù)而造成浪費(fèi)閉,不易于產(chǎn)品兼容;信息不能被共享,重復(fù)而造成浪費(fèi)等等?;谏鲜鲈?,多計(jì)算機(jī)系統(tǒng)出現(xiàn)。等等?;谏鲜鲈?,多計(jì)算機(jī)系統(tǒng)出現(xiàn)。 7.1.2 通信的定義及數(shù)據(jù)的傳輸通信的定義及數(shù)據(jù)的傳輸(1) 通信的定義通信的定義廣義上說,廣義上說,兩個以上智能體之間的信息交換的過

3、程兩個以上智能體之間的信息交換的過程就是就是“通信通信”。強(qiáng)調(diào)。強(qiáng)調(diào)“智能智能”的原因是通信的實(shí)體必須能的原因是通信的實(shí)體必須能理解通信內(nèi)容的含義理解通信內(nèi)容的含義。(2) 信息傳送的方式信息傳送的方式計(jì)算機(jī)通信從信息傳送方式可分為計(jì)算機(jī)通信從信息傳送方式可分為并行并行和和串行串行通信通信1) 并行通信并行通信兩通信設(shè)備一次交換多個兩通信設(shè)備一次交換多個bit的數(shù)據(jù)的通信方式的數(shù)據(jù)的通信方式。其。其傳輸?shù)乃俾视妹棵腌妭魉偷淖止?jié)數(shù)來表示(傳輸?shù)乃俾视妹棵腌妭魉偷淖止?jié)數(shù)來表示(b/s)。其特)。其特點(diǎn)是通信速率高,缺點(diǎn)是通信線路多,因?yàn)槊恳稽c(diǎn)是通信速率高,缺點(diǎn)是通信線路多,因?yàn)槊恳籦it的數(shù)的數(shù)據(jù)

4、都要有一條數(shù)據(jù)線與之對應(yīng),不適用于遠(yuǎn)程通信,據(jù)都要有一條數(shù)據(jù)線與之對應(yīng),不適用于遠(yuǎn)程通信,如圖如圖7-1所示所示。并行傳輸?shù)囊粋€例子是并行接口打印機(jī)。并行傳輸?shù)囊粋€例子是并行接口打印機(jī)。2)串行通信)串行通信兩通信設(shè)備一次交換一個兩通信設(shè)備一次交換一個bit的數(shù)據(jù)的通信方式,即的數(shù)據(jù)的通信方式,即字符數(shù)據(jù)(碼字)是逐位(碼元)傳送的,一個字符由若字符數(shù)據(jù)(碼字)是逐位(碼元)傳送的,一個字符由若干位組成。干位組成。特點(diǎn)是通信速率較低,但通信線路少,經(jīng)濟(jì),可靠,特點(diǎn)是通信速率較低,但通信線路少,經(jīng)濟(jì),可靠,適用于遠(yuǎn)程通信。適用于遠(yuǎn)程通信。如如圖圖7-2所示所示。注:串行通信不一定需。注:串行通信

5、不一定需要統(tǒng)一雙方的電位,也不一定需要控制或聯(lián)絡(luò)線。要統(tǒng)一雙方的電位,也不一定需要控制或聯(lián)絡(luò)線。電話網(wǎng)電話網(wǎng)是串行通信系統(tǒng)的一個典型例子。是串行通信系統(tǒng)的一個典型例子。 3 通信工作方式通信工作方式1)單工方式)單工方式數(shù)據(jù)只能從一方傳向另一方,而不能往反方向傳輸,數(shù)據(jù)只能從一方傳向另一方,而不能往反方向傳輸,如如圖圖7-2所示,數(shù)據(jù)只能從所示,數(shù)據(jù)只能從A到到B,這是根據(jù)應(yīng)用的特點(diǎn),這是根據(jù)應(yīng)用的特點(diǎn),簡化了通信雙方的軟、硬件造成的。單向傳輸設(shè)備,如并簡化了通信雙方的軟、硬件造成的。單向傳輸設(shè)備,如并行接口打印機(jī),單工就能勝任。行接口打印機(jī),單工就能勝任。2)半雙工方式)半雙工方式允許數(shù)據(jù)往

6、兩方傳向傳輸,但只能交替進(jìn)行,而不允許數(shù)據(jù)往兩方傳向傳輸,但只能交替進(jìn)行,而不能同時進(jìn)行的傳輸方式。能同時進(jìn)行的傳輸方式。如如圖圖7-3所示。所示。3)全雙工方式)全雙工方式數(shù)據(jù)可同時往兩方向傳輸?shù)膫鬏敺绞?。?shù)據(jù)可同時往兩方向傳輸?shù)膫鬏敺绞健H鐖D如圖7-4所示。所示。注:在多數(shù)情況下,單工、半雙工、全雙工都是對串行通注:在多數(shù)情況下,單工、半雙工、全雙工都是對串行通信而言的,若將其推廣到并行通信。信而言的,若將其推廣到并行通信。圖圖7-3的電路是半雙工的。電話是全雙工的典型例子,的電路是半雙工的。電話是全雙工的典型例子,但在實(shí)際通信時,我們往往用半雙工方式,否則,誰也得但在實(shí)際通信時,我們往往

7、用半雙工方式,否則,誰也得不到有用的信息。不到有用的信息。本章只討論串行通信,即下面的討論,對象默認(rèn)為本章只討論串行通信,即下面的討論,對象默認(rèn)為串行通信。串行通信。4信道及信號的調(diào)制和解調(diào)信道及信號的調(diào)制和解調(diào)1)信道)信道信道的狹義定義指信號的傳輸介質(zhì);廣義定義為:信道的狹義定義指信號的傳輸介質(zhì);廣義定義為:傳輸介質(zhì)加變換設(shè)備如調(diào)制解調(diào)器(傳輸介質(zhì)加變換設(shè)備如調(diào)制解調(diào)器(Modem)、基帶放)、基帶放大器等。計(jì)算機(jī)通信系統(tǒng)中采用有線和無線兩種信道。大器等。計(jì)算機(jī)通信系統(tǒng)中采用有線和無線兩種信道。2)傳輸介質(zhì))傳輸介質(zhì)有線傳輸介質(zhì)主要包括明線、同軸電纜、雙絞線、有線傳輸介質(zhì)主要包括明線、同軸

8、電纜、雙絞線、光纖等。光纖等。無線傳輸以大氣、水或太空等為介質(zhì)。無線傳輸以大氣、水或太空等為介質(zhì)。 5 計(jì)算機(jī)通信常用的幾種信道計(jì)算機(jī)通信常用的幾種信道1)基帶傳輸信道)基帶傳輸信道指計(jì)算機(jī)之間通過實(shí)線連接的數(shù)據(jù)傳輸通道。其特指計(jì)算機(jī)之間通過實(shí)線連接的數(shù)據(jù)傳輸通道。其特點(diǎn)是,信號不經(jīng)過任何變換,但通常要對信號進(jìn)行放大。點(diǎn)是,信號不經(jīng)過任何變換,但通常要對信號進(jìn)行放大。典型的基帶傳輸信道如兩臺計(jì)算機(jī)通過典型的基帶傳輸信道如兩臺計(jì)算機(jī)通過RS-232-C接口的接口的互聯(lián)。互聯(lián)。2)載波傳輸信道)載波傳輸信道計(jì)算機(jī)之間進(jìn)行遠(yuǎn)距離通信時,基帶傳輸不僅會降計(jì)算機(jī)之間進(jìn)行遠(yuǎn)距離通信時,基帶傳輸不僅會降低通

9、信質(zhì)量和速率,通信成本也會隨之增大。低通信質(zhì)量和速率,通信成本也會隨之增大。因此發(fā)送時因此發(fā)送時先用調(diào)制器將數(shù)字信號調(diào)制成音頻模擬信號再輸送到電話先用調(diào)制器將數(shù)字信號調(diào)制成音頻模擬信號再輸送到電話網(wǎng)上,接收時通過解調(diào)器將模擬信號變換為數(shù)字信號,再網(wǎng)上,接收時通過解調(diào)器將模擬信號變換為數(shù)字信號,再被計(jì)算機(jī)接收。被計(jì)算機(jī)接收。在通信的每一方均需要一個調(diào)制器和解調(diào)器,將他在通信的每一方均需要一個調(diào)制器和解調(diào)器,將他兩合在一個裝置中,就稱為兩合在一個裝置中,就稱為調(diào)制解調(diào)器調(diào)制解調(diào)器MODEM。圖圖7-5是調(diào)制解調(diào)過程的示意圖。調(diào)制解調(diào)被是調(diào)制解調(diào)過程的示意圖。調(diào)制解調(diào)被用于遠(yuǎn)距離數(shù)據(jù)通信,因此把他叫

10、做數(shù)據(jù)通信設(shè)用于遠(yuǎn)距離數(shù)據(jù)通信,因此把他叫做數(shù)據(jù)通信設(shè)備備DCE或數(shù)傳機(jī)(或數(shù)傳機(jī)(DATA SET)。)。調(diào)制解調(diào)器類型較多,有調(diào)制解調(diào)器類型較多,有振幅鍵控振幅鍵控(ASK)、)、頻移鍵控頻移鍵控(FSK)和)和相移鍵控相移鍵控(PSK)。)。FSK具有具有較好的抗干擾性,應(yīng)用最多。波特率可達(dá)較好的抗干擾性,應(yīng)用最多。波特率可達(dá)1200(baud)以上以上,如,如HT2012。7.2 串行通信串行通信7.2.1 串行通信協(xié)議串行通信協(xié)議通信系統(tǒng)是開放的。為使通信順利進(jìn)行,由通信雙通信系統(tǒng)是開放的。為使通信順利進(jìn)行,由通信雙方就如何交換信息所建立進(jìn)來的一套規(guī)定,稱為通信控制方就如何交換信息所

11、建立進(jìn)來的一套規(guī)定,稱為通信控制規(guī)程,網(wǎng)絡(luò)術(shù)語中稱為規(guī)程,網(wǎng)絡(luò)術(shù)語中稱為協(xié)議協(xié)議。另外,為統(tǒng)一接口和連接,規(guī)程中還有關(guān)于信號線另外,為統(tǒng)一接口和連接,規(guī)程中還有關(guān)于信號線功能、電氣特性、機(jī)械特性等明確的規(guī)定功能、電氣特性、機(jī)械特性等明確的規(guī)定,稱之為,稱之為接口標(biāo)接口標(biāo)準(zhǔn)準(zhǔn)。如。如RS-232C、RS-485接口標(biāo)準(zhǔn)等。接口標(biāo)準(zhǔn)等。通信協(xié)議和接口標(biāo)準(zhǔn)是串行通信的應(yīng)用指南。通信協(xié)議和接口標(biāo)準(zhǔn)是串行通信的應(yīng)用指南。通信協(xié)議也有開放協(xié)議和不開放協(xié)議之分。通信協(xié)議也有開放協(xié)議和不開放協(xié)議之分。開放協(xié)開放協(xié)議就是公開的、普遍認(rèn)可議就是公開的、普遍認(rèn)可(不被認(rèn)可,開放也沒用)、完(不被認(rèn)可,開放也沒用)、

12、完善的協(xié)議。開放協(xié)議使各廠商的產(chǎn)品可以互換,有利于用善的協(xié)議。開放協(xié)議使各廠商的產(chǎn)品可以互換,有利于用戶和產(chǎn)品市場競爭。如戶和產(chǎn)品市場競爭。如TCP/IP協(xié)議、協(xié)議、CANBUS協(xié)議、協(xié)議、Lonworks協(xié)議等。協(xié)議等。通信協(xié)議中除公共標(biāo)準(zhǔn)外,還有可根通信協(xié)議中除公共標(biāo)準(zhǔn)外,還有可根據(jù)實(shí)際應(yīng)用需要制定的擴(kuò)展協(xié)議部分,稱為應(yīng)用通信協(xié)議。據(jù)實(shí)際應(yīng)用需要制定的擴(kuò)展協(xié)議部分,稱為應(yīng)用通信協(xié)議。 7.2.2 串行通信的方式串行通信的方式1.同步方式同步方式是一種連續(xù)傳輸若干字符的串行通信方式。是一種連續(xù)傳輸若干字符的串行通信方式。通信時,通信時,收發(fā)雙方的碼字(字符或字節(jié))和碼元(位)有嚴(yán)格的時收發(fā)雙

13、方的碼字(字符或字節(jié))和碼元(位)有嚴(yán)格的時序關(guān)系。序關(guān)系。如圖如圖7-6所示所示在在圖圖7-6中,碼字中的各個碼元之間的同步稱為位同中,碼字中的各個碼元之間的同步稱為位同步;碼字之間的同步稱為群同步。步;碼字之間的同步稱為群同步。單片機(jī)常用的同步通信有單片機(jī)常用的同步通信有I2C、SPI等。等。2 異步方式異步方式異步通信時收發(fā)雙方在碼元和碼字上都不存在嚴(yán)格異步通信時收發(fā)雙方在碼元和碼字上都不存在嚴(yán)格的時序關(guān)系。的時序關(guān)系。其特點(diǎn)是:其特點(diǎn)是:字符(碼字)是一幀一幀的傳送,字符(碼字)是一幀一幀的傳送,每一幀的傳送由起始位開始,以停止位結(jié)束每一幀的傳送由起始位開始,以停止位結(jié)束。接收方通過。

14、接收方通過對起始位和停止位的檢測與發(fā)送方同步,因此也稱為起止對起始位和停止位的檢測與發(fā)送方同步,因此也稱為起止式異步通信。如式異步通信。如圖圖7-7所示。所示。與同步通信不同,異步通信中,與同步通信不同,異步通信中,發(fā)送方和接收方有發(fā)送方和接收方有各自的時鐘各自的時鐘,一幀傳輸一個字符。每幀由,一幀傳輸一個字符。每幀由起始位起始位(規(guī)定為(規(guī)定為邏輯邏輯0)、)、數(shù)據(jù)位數(shù)據(jù)位(58位)、位)、奇偶校驗(yàn)位奇偶校驗(yàn)位、停止位停止位(規(guī)(規(guī)定為)組成,起止位的作用是使通信雙方同步。定為)組成,起止位的作用是使通信雙方同步。(3)同步通信與異步通信方式的比較同步通信與異步通信方式的比較串行通信的兩種方

15、式相異之處列于串行通信的兩種方式相異之處列于表表7-1中中4異步串行通信中必須遵循的規(guī)定異步串行通信中必須遵循的規(guī)定1)字符格式的規(guī)定)字符格式的規(guī)定通信雙方傳輸字符的格式要按規(guī)定寫。在異步傳輸通信雙方傳輸字符的格式要按規(guī)定寫。在異步傳輸方式中,字符的方式中,字符的位位數(shù)、停止位的位數(shù)(數(shù)、停止位的位數(shù)(1位,位,1.5位,位,2位),是否使用奇、偶校驗(yàn)位等命令,要通過對通信控制位),是否使用奇、偶校驗(yàn)位等命令,要通過對通信控制器寫操作完成設(shè)置。器寫操作完成設(shè)置。2)傳輸速率必須相同)傳輸速率必須相同傳輸速率可用以下兩個單位來度量。傳輸速率可用以下兩個單位來度量。比特率:通信線路上每秒傳輸?shù)淖?/p>

16、符的位數(shù),單位比特率:通信線路上每秒傳輸?shù)淖址奈粩?shù),單位bit/s。波特率(波特率(Baudrate):通信線路上每秒傳輸波形的):通信線路上每秒傳輸波形的個數(shù),單位為個數(shù),單位為Baud(波特)。(波特)。 LRnRRbbp2log(7-1式)式)式(式(7-1)表示比特率總是大于或等于波特率。)表示比特率總是大于或等于波特率。PC和和51機(jī)的通信波形,只有高、低電平兩種碼元,機(jī)的通信波形,只有高、低電平兩種碼元,n = 1,L = 2,比特率等于波特率。,比特率等于波特率。傳輸速率的另一種表示叫位周期,它是波特率的倒傳輸速率的另一種表示叫位周期,它是波特率的倒數(shù)。數(shù)。波特率是表明傳輸速度

17、的標(biāo)準(zhǔn),國際上規(guī)定的一個波特率是表明傳輸速度的標(biāo)準(zhǔn),國際上規(guī)定的一個標(biāo)準(zhǔn)的波特率系列是:標(biāo)準(zhǔn)的波特率系列是:110,300,600,1200,1800,2400,4800,9600,19200。異步通信允許發(fā)送方和接收。異步通信允許發(fā)送方和接收方的時鐘誤差或波特率誤差在方的時鐘誤差或波特率誤差在23 7.2.3 通信控制器通信控制器計(jì)算機(jī)與外設(shè)的通信,使用一個類似于郵箱或秘書的器件,計(jì)算機(jī)與外設(shè)的通信,使用一個類似于郵箱或秘書的器件,幫助幫助CPU管理通信事務(wù)。該器件稱為管理通信事務(wù)。該器件稱為通信控制器通信控制器。獨(dú)立完成與外設(shè)。獨(dú)立完成與外設(shè)的數(shù)據(jù)通信管理工作,并在接收到有效數(shù)據(jù)或在數(shù)據(jù)發(fā)

18、送完成后,的數(shù)據(jù)通信管理工作,并在接收到有效數(shù)據(jù)或在數(shù)據(jù)發(fā)送完成后,通知通知CPU進(jìn)行處理。進(jìn)行處理。通信控制器一般有幾個主要功能:通信控制器一般有幾個主要功能:(1)將待發(fā)的數(shù)據(jù),轉(zhuǎn)換為協(xié)議規(guī)定的格式發(fā)送出去。)將待發(fā)的數(shù)據(jù),轉(zhuǎn)換為協(xié)議規(guī)定的格式發(fā)送出去。(2)在收到數(shù)據(jù)幀后,將信息翻譯、復(fù)原為原始數(shù)據(jù),并)在收到數(shù)據(jù)幀后,將信息翻譯、復(fù)原為原始數(shù)據(jù),并通知通知CPU讀取信息。讀取信息。(3)能有條件地屏蔽某些特定的信息,使)能有條件地屏蔽某些特定的信息,使CPU安心工作,安心工作,不受干擾。不受干擾。 7.3 串行口結(jié)構(gòu)及工作原理串行口結(jié)構(gòu)及工作原理51機(jī)內(nèi)置的通用異步接收機(jī)內(nèi)置的通用異步

19、接收/發(fā)送器發(fā)送器UART(Universal Asynchronous Receiver/Transmitter)電路,是實(shí)現(xiàn)串行通信的電路,是實(shí)現(xiàn)串行通信的通信控制器。控制器是全雙工的,其結(jié)構(gòu)如通信控制器??刂破魇侨p工的,其結(jié)構(gòu)如圖圖7-8所示。所示。51機(jī)波特率發(fā)生器的源是單片機(jī)定時器機(jī)波特率發(fā)生器的源是單片機(jī)定時器T1或或T2,T0沒有此功能,請記住沒有此功能,請記住。 在接口標(biāo)準(zhǔn)方面,在接口標(biāo)準(zhǔn)方面,51機(jī)的通信控制器與機(jī)的通信控制器與RS-232C的的接口標(biāo)準(zhǔn)(兼容),只是接口標(biāo)準(zhǔn)(兼容),只是51機(jī)是以機(jī)是以Vcc為高電平基準(zhǔn)的為高電平基準(zhǔn)的TTL電平。高電平代表邏輯電平。高電

20、平代表邏輯“1”,地電平代表邏輯,地電平代表邏輯“0”,51機(jī)的機(jī)的TTL電平信號,可通過一個電平信號,可通過一個TTL-232轉(zhuǎn)換器轉(zhuǎn)換器(如(如MAX232),),即可轉(zhuǎn)換為標(biāo)準(zhǔn)即可轉(zhuǎn)換為標(biāo)準(zhǔn)RS-232C信號,與信號,與RS-232C接口標(biāo)準(zhǔn)的系統(tǒng)進(jìn)行通信了。接口標(biāo)準(zhǔn)的系統(tǒng)進(jìn)行通信了。異步通信是本章討論的內(nèi)容。異步通信是本章討論的內(nèi)容。 7.3.1 串行口的工作方式串行口的工作方式 1.串行口的控制串行口的控制寄存器寄存器SCONSCON用來控制串行口的工作方式和狀態(tài),地址用來控制串行口的工作方式和狀態(tài),地址98H。復(fù)位值為。復(fù)位值為0。格式如。格式如表表7-2所示。各位意義如下:所示。

21、各位意義如下:SM0/FE,SM1:工作方式選擇位。工作方式選擇位。51共有共有4種工作種工作方式,每種方式的基本功能例于方式,每種方式的基本功能例于表表7-3中。中。SM2:多機(jī)通信控制位。在方式多機(jī)通信控制位。在方式2和方式和方式3中,中,如如SM2=1,則接收到的第,則接收到的第9位數(shù)據(jù)(位數(shù)據(jù)(RB8)為)為0時不啟動接收時不啟動接收中斷標(biāo)志中斷標(biāo)志RI(即保持(即保持RI=0不變),并且將接收到的前不變),并且將接收到的前8位位數(shù)據(jù)丟棄;只有在數(shù)據(jù)丟棄;只有在RB8為為1時,才將接收到的前時,才將接收到的前8位數(shù)據(jù)送位數(shù)據(jù)送入入SBUF,并置位,并置位RI,發(fā)出中斷請求。,發(fā)出中斷請

22、求。當(dāng)當(dāng)SM2=0時,則不時,則不論論RB8為為0或或1,都可有效接收數(shù)據(jù),并置中斷請求位,都可有效接收數(shù)據(jù),并置中斷請求位RI。工作于方式工作于方式0、1時,時,SM2須清須清0。REN:允許串行接收控制位允許串行接收控制位。REN = 0,禁止接收;,禁止接收;REN =1,允許接收。該位由軟件置位或復(fù)位。,允許接收。該位由軟件置位或復(fù)位。 TB8:發(fā)送數(shù)據(jù)位發(fā)送數(shù)據(jù)位8(第(第9位數(shù)據(jù))。在方式位數(shù)據(jù))。在方式2和方式和方式3時,時,TB8為所要發(fā)送的第為所要發(fā)送的第9位數(shù)據(jù)。在多機(jī)通信中,可利位數(shù)據(jù)。在多機(jī)通信中,可利用用TB8位的狀態(tài),表示發(fā)送數(shù)據(jù)的類型,如命令或數(shù)據(jù)等;位的狀態(tài),表

23、示發(fā)送數(shù)據(jù)的類型,如命令或數(shù)據(jù)等;在雙機(jī)通信時,也作為奇偶校驗(yàn)位使用。該位由軟件置位在雙機(jī)通信時,也作為奇偶校驗(yàn)位使用。該位由軟件置位或復(fù)位?;驈?fù)位。RB8:接收數(shù)據(jù)位接收數(shù)據(jù)位8(第(第9位數(shù)據(jù))。含義與位數(shù)據(jù))。含義與TB8對應(yīng),對應(yīng),由通信雙方在協(xié)議中定義它們的意義。由通信雙方在協(xié)議中定義它們的意義。TI:發(fā)送中斷標(biāo)志位。方式發(fā)送中斷標(biāo)志位。方式0下,在發(fā)送數(shù)據(jù)的第下,在發(fā)送數(shù)據(jù)的第8位后被置位;在其它方式下發(fā)送停止位后被置位。位后被置位;在其它方式下發(fā)送停止位后被置位。該標(biāo)志該標(biāo)志位需軟件清位需軟件清0。RI:接收中斷標(biāo)志位。方式接收中斷標(biāo)志位。方式0下,當(dāng)接收到數(shù)據(jù)的下,當(dāng)接收到數(shù)據(jù)

24、的第第8位后,由硬件使位后,由硬件使RI置位;在其它方式下,接收到停止置位;在其它方式下,接收到停止位后被置位。位后被置位。該標(biāo)志位需軟件清該標(biāo)志位需軟件清0。TI、RI這兩個標(biāo)志位也可供查詢使用。無論這兩個標(biāo)志位也可供查詢使用。無論CPU響響應(yīng)中斷與否,應(yīng)中斷與否,對通信中每一幀產(chǎn)生的請求標(biāo)志對通信中每一幀產(chǎn)生的請求標(biāo)志TI、RI,均必須用指令清零,均必須用指令清零,否則,通信將不再進(jìn)行。這是否則,通信將不再進(jìn)行。這是51通信通信控制器的特點(diǎn),是為了通信的可靠性而設(shè)計(jì)的??刂破鞯奶攸c(diǎn),是為了通信的可靠性而設(shè)計(jì)的。2 電源控制寄存器電源控制寄存器PCONPCON是為是為CHMOS單片機(jī)的電能控

25、制而設(shè)置的專單片機(jī)的電能控制而設(shè)置的專用寄存器用寄存器,單元地址為單元地址為87H,不能按位尋址。復(fù)位狀態(tài)為:,不能按位尋址。復(fù)位狀態(tài)為:00X10000。對。對標(biāo)準(zhǔn)標(biāo)準(zhǔn)51來說,除最高位來說,除最高位SMOD外,其它位外,其它位無意義。無意義。PCON的格式如的格式如表表7-4所示。所示。 SMOD(PCON.7):):串行口控制用的波持率倍增串行口控制用的波持率倍增位。位。SMOD=1,方式,方式1、2、3的波特率是的波特率是SMOD = 0時的時的2倍,倍,因此稱因此稱SMOD為波持率倍增位。為波持率倍增位。注:注:SCON的的FE,PCON的的SMOD0功能少用功能少用,為清,為清楚起

26、見,本書將不再討論,在用到時可查閱相關(guān)資料。楚起見,本書將不再討論,在用到時可查閱相關(guān)資料。7.3.2 串行口工作方式串行口工作方式串行口有串行口有4種工作方式,他們由種工作方式,他們由SCON中的中的SM0、SM1來定義的,見表來定義的,見表7-3。(1)方式)方式0(此部分根據(jù)進(jìn)度選講)(此部分根據(jù)進(jìn)度選講)串行口工作方式串行口工作方式0,為移位寄存器,為移位寄存器I/O方式。方式。發(fā)送狀發(fā)送狀態(tài)下,串行口相當(dāng)于態(tài)下,串行口相當(dāng)于“并入串出并入串出”,而,而在接收狀態(tài)下,則在接收狀態(tài)下,則相當(dāng)于相當(dāng)于“串入并出串入并出”的移位寄存器。的移位寄存器。其接口對象是具有移其接口對象是具有移位寄存

27、器結(jié)構(gòu)的邏輯器件,用于串行位寄存器結(jié)構(gòu)的邏輯器件,用于串行I/O擴(kuò)展。擴(kuò)展。 (1)方式)方式0輸出:輸出:8位數(shù)據(jù)位數(shù)據(jù)b0b7依次從依次從RXD 引腳引腳輸出,輸出, TXD輸出(移位)同步脈沖,輸出脈沖頻率固定輸出(移位)同步脈沖,輸出脈沖頻率固定為系統(tǒng)時鐘頻率為系統(tǒng)時鐘頻率fosc的的12 分頻,不可改變。當(dāng)分頻,不可改變。當(dāng)8位數(shù)據(jù)輸位數(shù)據(jù)輸出完后,中斷請求標(biāo)志出完后,中斷請求標(biāo)志TI被置被置1。(2)方式)方式0輸入:輸入:8位數(shù)據(jù)位數(shù)據(jù)b0b7依次從依次從RXD引腳引腳輸入,輸入, TXD 輸出同步脈沖,波特率輸出同步脈沖,波特率 = fosc/12,不可改變。,不可改變。當(dāng)當(dāng)8

28、位數(shù)據(jù)被接收后,中斷請求標(biāo)志位數(shù)據(jù)被接收后,中斷請求標(biāo)志RI被置被置1。2.方式方式1、2、3當(dāng)設(shè)置當(dāng)設(shè)置SCON中的中的SM0、SM1為為01、10、11時,串時,串行口工作在方式行口工作在方式1、2、3。串口。串口均為異步串行通信口均為異步串行通信口,其,其中中TXD是是發(fā)送端發(fā)送端,RXD是是接收端接收端。發(fā)送或接收幀信息包括發(fā)送或接收幀信息包括1位起始位(固定為位起始位(固定為0)、)、8(方式(方式1)或)或9位(方式位(方式2、3)串行數(shù)據(jù)()串行數(shù)據(jù)(低位在前,高位低位在前,高位在后在后)和一位)和一位停止位停止位(固定為(固定為1)共共10或或11位位。方式方式1、3的波特率是

29、可變的。的波特率是可變的。波特率與定時器波特率與定時器T1或或T2的溢出率、的溢出率、SMOD位有關(guān)。注意:位有關(guān)。注意:51機(jī)的機(jī)的T0不能作為不能作為波特率發(fā)生器用。波特率發(fā)生器用。方式方式1、方式、方式3波特率與定時器波特率與定時器T1溢出率、溢出率、SMOD位位關(guān)系如下:關(guān)系如下: (7-2)方式方式2的波特率固定為:的波特率固定為:(7-3) oscSMODf642Baud 的的溢溢出出率率1SMODT322Baud 7-3式中式中SMOD是是PCON的的SMOD位。當(dāng)位。當(dāng)SMOD位為位為1時,波特率是時,波特率是SMOD為為0時的兩倍。時的兩倍。因此,因此,PCON寄存器寄存器中

30、的中的SMOD位被稱為波特率倍增位。對方式位被稱為波特率倍增位。對方式1、2、3都成都成立。立。如前所述,波特率(這里等同于比特率)是每秒鐘如前所述,波特率(這里等同于比特率)是每秒鐘傳輸數(shù)據(jù)的傳輸數(shù)據(jù)的位位數(shù)。數(shù)。在異步串行數(shù)據(jù)傳輸時,雙方的同步是在異步串行數(shù)據(jù)傳輸時,雙方的同步是靠波特率(各自的時鐘)實(shí)現(xiàn)的。靠波特率(各自的時鐘)實(shí)現(xiàn)的。 7.3.3異步串行口通信的過程異步串行口通信的過程 1.方式方式1的發(fā)送的發(fā)送在在TI為為0情況下(表示串行口發(fā)送控制電路處于空情況下(表示串行口發(fā)送控制電路處于空閑狀態(tài)),閑狀態(tài)),任何寫緩沖器任何寫緩沖器SBUF指令指令(如(如MOV SBUF,A)

31、均均會觸發(fā)串行發(fā)送過程:會觸發(fā)串行發(fā)送過程:51 串行口自動在串行口自動在8個數(shù)據(jù)位的前、個數(shù)據(jù)位的前、后分別插入一個起始位和一個停止位,構(gòu)成后分別插入一個起始位和一個停止位,構(gòu)成10位信息幀位信息幀。當(dāng)當(dāng)8位數(shù)據(jù)發(fā)送結(jié)束后(即開始發(fā)送停止位)時,串行口位數(shù)據(jù)發(fā)送結(jié)束后(即開始發(fā)送停止位)時,串行口自動將發(fā)送中斷標(biāo)志自動將發(fā)送中斷標(biāo)志TI置置1。在中斷處于開放狀態(tài)下,。在中斷處于開放狀態(tài)下,TI有效時,將導(dǎo)致串行中斷。有效時,將導(dǎo)致串行中斷。 2. 方式方式1的接收過程的接收過程在接收中斷標(biāo)志在接收中斷標(biāo)志RI為為0(串行接收緩沖寄存器(串行接收緩沖寄存器SBUF處于空閑)情況下,當(dāng)處于空閑)

32、情況下,當(dāng)REN位為位為1時時,串行口處于接收狀,串行口處于接收狀態(tài)。此時,串行口態(tài)。此時,串行口發(fā)現(xiàn)發(fā)現(xiàn)RXD引腳由高電平變?yōu)榈碗娖胶?,引腳由高電平變?yōu)榈碗娖胶螅阕詣訂咏邮者^程。便自動啟動接收過程。按設(shè)定波特率順序讀出數(shù)據(jù)位和停按設(shè)定波特率順序讀出數(shù)據(jù)位和停止位。止位。 當(dāng)接收完一幀信息后,便將接收到的內(nèi)容裝入當(dāng)接收完一幀信息后,便將接收到的內(nèi)容裝入串行串行數(shù)據(jù)輸入緩沖寄存器數(shù)據(jù)輸入緩沖寄存器SBUF中中,并,并置置RI為為1。因此。因此RI可作可作為接收過程的查詢標(biāo)志用。在串口中斷及總中斷處于開放為接收過程的查詢標(biāo)志用。在串口中斷及總中斷處于開放狀態(tài)下,狀態(tài)下,RI有效時將觸發(fā)串行中斷

33、有效時將觸發(fā)串行中斷。值得注意是值得注意是CPU響應(yīng)串行中斷后,不會自動清除響應(yīng)串行中斷后,不會自動清除RI或或TI標(biāo)志位,需要用指令如標(biāo)志位,需要用指令如“CLR”等清除等清除RI或或TI標(biāo)志標(biāo)志。以便繼續(xù)進(jìn)行串口的收以便繼續(xù)進(jìn)行串口的收/發(fā)工作。發(fā)工作。 3.方式方式2和方式和方式3的幀數(shù)據(jù)格式與方式的幀數(shù)據(jù)格式與方式1的區(qū)別的區(qū)別串行口串行口方式方式2與方式與方式3都是都是9位位異步串行通信口,唯一異步串行通信口,唯一區(qū)別是方式區(qū)別是方式2的波特率固定為時鐘頻率的的波特率固定為時鐘頻率的32或或64分頻,分頻,不不可變??勺?。由于方式由于方式2的波特率與通用串行通信設(shè)備對不上,的波特率與

34、通用串行通信設(shè)備對不上,因此只用于因此只用于51機(jī)之間的通信,機(jī)之間的通信,方式方式2的波特率是所有方式的波特率是所有方式中最高的中最高的。方式方式3與方式與方式1在波特率方面沒有區(qū)別。在波特率方面沒有區(qū)別。區(qū)別在于幀區(qū)別在于幀格式上:方式格式上:方式2、方式、方式3是是9位數(shù)據(jù)格式。一幀信息為位數(shù)據(jù)格式。一幀信息為11位位,由由一位起始位一位起始位、9位串行數(shù)據(jù)位串行數(shù)據(jù)、一位停止位一位停止位。發(fā)送方在方式發(fā)送方在方式2、方式、方式3時,時,9位數(shù)據(jù)的構(gòu)成與寫入順位數(shù)據(jù)的構(gòu)成與寫入順序?yàn)椋盒驗(yàn)椋罕仨毾葘⒌诒仨毾葘⒌?位寫入位寫入SCON的的TB8位位,再將,再將8位數(shù)據(jù)位數(shù)據(jù)寫入寫入SBUF

35、,注意:一但執(zhí)行寫注意:一但執(zhí)行寫SBUF命令,發(fā)送過程便命令,發(fā)送過程便被啟動,不可取消了。被啟動,不可取消了。這就是為什么先寫第這就是為什么先寫第9位數(shù)據(jù)的原位數(shù)據(jù)的原因。因。由于方式由于方式3波特率可變,因此,串行口方式波特率可變,因此,串行口方式3比方式比方式2應(yīng)用范圍更廣。應(yīng)用范圍更廣。 方式方式2、方式、方式3中,接收的信息的中,接收的信息的第第9位在位在SCON寄存寄存器的器的RB8位位中。中。8位數(shù)據(jù)仍在位數(shù)據(jù)仍在SBUF中。中。方式方式2、方式、方式3是多機(jī)通信方式,在是多機(jī)通信方式,在應(yīng)用時要留意多應(yīng)用時要留意多機(jī)通信控制位機(jī)通信控制位SM2的含義的含義。7.4 串行通信及

36、編程舉例串行通信及編程舉例 7.4.1 雙機(jī)通信雙機(jī)通信雙機(jī)通信也稱為點(diǎn)對點(diǎn)通信。雙機(jī)通信也稱為點(diǎn)對點(diǎn)通信。是通信中最基本的形是通信中最基本的形式。顧名思義,雙機(jī)通信就是兩臺機(jī)的信息交換過程。式。顧名思義,雙機(jī)通信就是兩臺機(jī)的信息交換過程。若兩片若兩片51機(jī)相距很近,可以不需任何調(diào)制與電平轉(zhuǎn)機(jī)相距很近,可以不需任何調(diào)制與電平轉(zhuǎn)換而直接互聯(lián),換而直接互聯(lián),其通信電路如圖其通信電路如圖7-11所示。注意:圖中的所示。注意:圖中的地線是用于統(tǒng)一雙方的地線是用于統(tǒng)一雙方的“0”參考電位的。參考電位的。方式方式1、2、3都能進(jìn)行雙機(jī)通信,但要注意:都能進(jìn)行雙機(jī)通信,但要注意:在點(diǎn)對在點(diǎn)對點(diǎn)通信時,為避免

37、復(fù)雜操作,雙方都要將點(diǎn)通信時,為避免復(fù)雜操作,雙方都要將SM2置置“0”?!纠纠?-1】 兩個兩個51機(jī)進(jìn)行最高速率通信。要求使用機(jī)進(jìn)行最高速率通信。要求使用串口方式串口方式2,A機(jī)為發(fā)送方,不使用串口中斷;機(jī)為發(fā)送方,不使用串口中斷;B機(jī)接收,機(jī)接收,使用串口中斷。使用串口中斷。設(shè)兩機(jī)的設(shè)兩機(jī)的focs相同,發(fā)送方只將一個字節(jié)相同,發(fā)送方只將一個字節(jié)數(shù)據(jù),如數(shù)據(jù),如0AAH發(fā)向發(fā)向B機(jī)便結(jié)束。機(jī)便結(jié)束。分析:分析:本例最基本的一個通信程序范例。編寫通信本例最基本的一個通信程序范例。編寫通信程序程序主要主要考慮考慮是工作方式、是工作方式、focs等,等,以實(shí)現(xiàn)波特率匹配。以實(shí)現(xiàn)波特率匹配。此

38、外,還要制定通信協(xié)議(信息此外,還要制定通信協(xié)議(信息識別識別方法、數(shù)據(jù)方法、數(shù)據(jù)含義的解含義的解釋釋方法、通信方法、通信數(shù)據(jù)的個數(shù)數(shù)據(jù)的個數(shù)、一次通信過程的、一次通信過程的結(jié)束條件結(jié)束條件、要、要不要不要校驗(yàn)校驗(yàn)、用什么、用什么校驗(yàn)方式校驗(yàn)方式等)。等)。本例中本例中硬件條件:方式硬件條件:方式2、focs相等相等;協(xié)議簡單:收;協(xié)議簡單:收/發(fā)一個數(shù)據(jù),不要求校驗(yàn)和解釋。發(fā)一個數(shù)據(jù),不要求校驗(yàn)和解釋。解解 根據(jù)題目要求,發(fā)送方參考程序如下:根據(jù)題目要求,發(fā)送方參考程序如下:ORG0000HAJMPSTART ORG0040HSTART:MOVSP,#5FHMOV SCON,#90H;方式;

39、方式2,允許接收,允許接收SM2=0 MOVPCON,#80H;波特率加倍,最高速率;波特率加倍,最高速率MOV SBUF,#0AAHWAIT2:JBCTI,STOPSJMP WAIT2STOP:SJMPSTOPEND #include #define uchar unsigned char#define uint unsigned intuchar idata R5;main()R5 = 0 xaa;SCON=0 x80;/方式方式2不允許接收,不允許接收,SM2=0PCON = 0 x80;/PCON = 80加速加速SBUF = R5;while(TI != 1); TI=0;/等待發(fā)送

40、完成等待發(fā)送完成while (1);接收方參考程序如下:接收方參考程序如下:ORG0000HAJMPSTARTORG0023HLJMPSINT ; 串行中斷入口串行中斷入口ORG0040HSTART:MOV SCON,#90H;方式;方式2,允許接收,允許接收SM2=0 MOV PCON,#80H;波特率加倍;波特率加倍MOVIE,#90H;串口及總中斷開放;串口及總中斷開放CLRF0WAIT1:JBCF0,TRDATA ; F0由中斷服務(wù)程序置位由中斷服務(wù)程序置位SJMPWAIT1; 置位或清零置位或清零TRDATA:CLRES;關(guān)串口中斷,此為甲機(jī)的程序;關(guān)串口中斷,此為甲機(jī)的程序MOV

41、A,SBUF SJMP $SINT:JBCTI,BACKCLRRISETBF0;置成功接收標(biāo)志;置成功接收標(biāo)志BACK:RETI;中斷返回;中斷返回END#include #define uchar unsigned charuchar idata R5;bit getdata;void ssio(void)interrupt 4/串口中斷服務(wù)程序串口中斷服務(wù)程序 if(TI)TI = 0;return;elseRI = 0;getdata = 1;/置接收一幀數(shù)據(jù)標(biāo)志置接收一幀數(shù)據(jù)標(biāo)志main()/SP = 0 x5f;/堆棧設(shè)置,可根據(jù)編程習(xí)慣取舍堆棧設(shè)置,可根據(jù)編程習(xí)慣取舍getdata

42、 = 0;SCON=0 x90;/方式方式2允許接收,允許接收,SM2=0PCON = 0 x80;/PCON = 0為波特率為波特率9600ES = 1;/允許串口中斷允許串口中斷EA = 1;/開放總中斷開放總中斷while (getdata = 0);/等待數(shù)據(jù)幀到來等待數(shù)據(jù)幀到來R5 = SBUF;/保存數(shù)據(jù)保存數(shù)據(jù)getdata = 0;/數(shù)據(jù)收到,清除標(biāo)志數(shù)據(jù)收到,清除標(biāo)志 7.4.2 串行通信數(shù)據(jù)校驗(yàn)方法之一:奇偶校驗(yàn)串行通信數(shù)據(jù)校驗(yàn)方法之一:奇偶校驗(yàn)受串行通信的受串行通信的距離距離、通信速率通信速率、信息量信息量、通信線路通信線路、環(huán)境條件環(huán)境條件等因素的影響,可能會出現(xiàn)數(shù)據(jù)傳

43、輸錯誤問題。等因素的影響,可能會出現(xiàn)數(shù)據(jù)傳輸錯誤問題。 為保證通信的正確性,計(jì)算機(jī)中采用對通信數(shù)據(jù)的為保證通信的正確性,計(jì)算機(jī)中采用對通信數(shù)據(jù)的校對方法,校對方法,確認(rèn)數(shù)據(jù)傳輸?shù)恼_性。稱為校驗(yàn)。確認(rèn)數(shù)據(jù)傳輸?shù)恼_性。稱為校驗(yàn)。事實(shí)上,事實(shí)上,校驗(yàn)是手段,糾錯是目的。校驗(yàn)是手段,糾錯是目的。我們將這種利用我們將這種利用數(shù)據(jù)的奇偶性查錯的方法稱為奇偶數(shù)據(jù)的奇偶性查錯的方法稱為奇偶校驗(yàn)法校驗(yàn)法。這是本書討論的第一種校驗(yàn)法。這是本書討論的第一種校驗(yàn)法。 奇偶校驗(yàn)的實(shí)現(xiàn)過程如下:奇偶校驗(yàn)的實(shí)現(xiàn)過程如下:(1)發(fā)送方每發(fā)送一幀數(shù)據(jù)時,先將待發(fā)數(shù)據(jù)的奇)發(fā)送方每發(fā)送一幀數(shù)據(jù)時,先將待發(fā)數(shù)據(jù)的奇偶性作為第偶

44、性作為第9位(附加位)寫入位(附加位)寫入SCON的的TB8位,再將數(shù)位,再將數(shù)據(jù)寫入據(jù)寫入SBUF中,一個完整的數(shù)據(jù)幀發(fā)出。中,一個完整的數(shù)據(jù)幀發(fā)出。(2)接收方每收到一幀信息,就將所收數(shù)據(jù)的奇偶)接收方每收到一幀信息,就將所收數(shù)據(jù)的奇偶性,與信息幀的第性,與信息幀的第9位數(shù)據(jù)(在位數(shù)據(jù)(在RB8中)進(jìn)行比較,兩者中)進(jìn)行比較,兩者相等則可確定此數(shù)據(jù)幀傳輸無誤,否則,傳輸錯誤。相等則可確定此數(shù)據(jù)幀傳輸無誤,否則,傳輸錯誤。(3)校驗(yàn)結(jié)果,通信雙方)校驗(yàn)結(jié)果,通信雙方應(yīng)根據(jù)應(yīng)根據(jù)通信協(xié)議進(jìn)行相應(yīng)通信協(xié)議進(jìn)行相應(yīng)的處理,這里沒有通用方法。的處理,這里沒有通用方法。 使用奇偶校驗(yàn)應(yīng)注意的問題:使用

45、奇偶校驗(yàn)應(yīng)注意的問題:(1)51機(jī)只有在串口方式機(jī)只有在串口方式2、3時(時(9位數(shù)據(jù))且位數(shù)據(jù))且SM2位必須為位必須為“0” 才有條件進(jìn)行奇偶校驗(yàn);才有條件進(jìn)行奇偶校驗(yàn);(2)為測得數(shù)據(jù)的奇偶狀態(tài),用為測得數(shù)據(jù)的奇偶狀態(tài),用MOV A,SUBF指指令最方便;令最方便;(3)并不是所有的通信都要使用校驗(yàn),更不是都要并不是所有的通信都要使用校驗(yàn),更不是都要用奇偶校驗(yàn),校驗(yàn)與否通信雙方要在通信協(xié)議中確定。用奇偶校驗(yàn),校驗(yàn)與否通信雙方要在通信協(xié)議中確定。反反映在習(xí)題中,要認(rèn)真審題,要求校驗(yàn),才能寫校驗(yàn)的程序映在習(xí)題中,要認(rèn)真審題,要求校驗(yàn),才能寫校驗(yàn)的程序部分,避免犯畫蛇添足的錯誤。部分,避免犯畫

46、蛇添足的錯誤。【例【例7-2】 兩個兩個51機(jī)進(jìn)行雙機(jī)通信。要求使用串口機(jī)進(jìn)行雙機(jī)通信。要求使用串口方式方式2、奇偶校驗(yàn)、奇偶校驗(yàn)、使用工作寄存器組使用工作寄存器組2。A機(jī)作為發(fā)送方,機(jī)作為發(fā)送方,連續(xù)發(fā)送連續(xù)發(fā)送n個字節(jié)(片內(nèi)個字節(jié)(片內(nèi)RAM足夠使用足夠使用n256),),B機(jī)接機(jī)接收。設(shè)兩機(jī)的收。設(shè)兩機(jī)的focs相同。只要校驗(yàn)的結(jié)果相同。只要校驗(yàn)的結(jié)果分析:分析:本例是奇偶校驗(yàn)應(yīng)用問題。程序以例本例是奇偶校驗(yàn)應(yīng)用問題。程序以例7-1為基為基礎(chǔ),只需將奇偶校驗(yàn)部分加進(jìn)去即可。礎(chǔ),只需將奇偶校驗(yàn)部分加進(jìn)去即可。本例的特點(diǎn)是奇偶校驗(yàn)和多幀數(shù)據(jù)的收本例的特點(diǎn)是奇偶校驗(yàn)和多幀數(shù)據(jù)的收/發(fā)。另外還發(fā)

47、。另外還采用發(fā)送中斷編程,注意體會。至于采用發(fā)送中斷編程,注意體會。至于工作寄存器組工作寄存器組2只是只是附加的一個練習(xí)。附加的一個練習(xí)。發(fā)送方參考程序如下:發(fā)送方參考程序如下:ORG0000HAJMPSTART ORG0023HLJMPSINT ; 串行中斷入口串行中斷入口ORG0040HSTART:MOVSP,#5FHSETBPSW.4 ;工作區(qū)用工作區(qū)用2區(qū)區(qū)CLRPSW.3;非核心指令!非核心指令!MOVR7,# nMOVR0,# addr0 CLR01H 01H = 單個數(shù)據(jù)發(fā)送成功單個數(shù)據(jù)發(fā)送成功CLRF0;F0 = 1啟動發(fā)送啟動發(fā)送MOV SCON,#80H;方式;方式2,不允

48、許接收,不允許接收SM2=0 MOVPCON,#80H;波特率加速;波特率加速M(fèi)OV IE,#90H;串口及總中斷;串口及總中斷WAIT1:JBCF0,TRDATA; F0由過程設(shè)置由過程設(shè)置SJMPWAIT1; 置位或清零置位或清零TRDATA:MOV A,R0 MOVC,P;取奇偶位;取奇偶位MOV TB8,C;裝入;裝入TB8作為第作為第9位數(shù)據(jù)位數(shù)據(jù)MOV SBUF,AINC R0WAIT2:JBC 01H,AGAINSJMP WAIT2AGAIN:DJNZ R7,TRDATA;R7為發(fā)送字節(jié)數(shù)為發(fā)送字節(jié)數(shù)MOVR7,# n;重復(fù)初值;重復(fù)初值MOVR0,# addr0CLRES;禁止

49、串口中斷;禁止串口中斷SETBREN;現(xiàn)在才允許接收;現(xiàn)在才允許接收WAIT3:JBCRI,CON;等待接收校驗(yàn)結(jié)果;等待接收校驗(yàn)結(jié)果SJMP WAIT3 CON:SETBES;再次允許串口中斷;再次允許串口中斷CLRREN;再次禁止接收;再次禁止接收MOVR5,SBUF ;將校驗(yàn)結(jié)果存于;將校驗(yàn)結(jié)果存于R5 LJPMWAIT1SINT:CLRTISETB01HRETIEND接收方參考程序如下:接收方參考程序如下:ORG0000HAJMPSTART ORG0023HLJMPSINT ; 串行中斷入口串行中斷入口ORG0040HSTART:MOVSP,#5FHSETBPSW.4;CLRPSW.3

50、;工作區(qū)用;工作區(qū)用2區(qū)區(qū)MOVR1,# ADDR1MOVR6,# nCLR01H;01H = 0通信成功,通信成功,01H= 1通信錯誤通信錯誤CLRF0;F0=1表示數(shù)據(jù)組接收完成表示數(shù)據(jù)組接收完成MOVSCON,#90H;方式;方式2,允許接收,允許接收SM2=0 MOVPCON,#80H;波特率加倍;波特率加倍SETBESSETBEA;與;與MOV IE,#90H等價等價;CPU可進(jìn)行其他工作可進(jìn)行其他工作 WAIT1:JBCF0,USEDATA;數(shù)據(jù)組接收完成;數(shù)據(jù)組接收完成SJMP WAIT1;USEDATA: JNB01H,OK;轉(zhuǎn)通信正常;轉(zhuǎn)通信正常MOV A,#01H; 01

51、H= 1通信錯誤通信錯誤SJMP SENDMESOK:CLRASENDMES:CLR01H;清標(biāo)志;清標(biāo)志CLRES;禁止發(fā)送中斷;禁止發(fā)送中斷 MOVSBUF,A;發(fā)送通信信息的共同入口;發(fā)送通信信息的共同入口WAIT2:JBC TI,OTHER SJMPWAIT2;OTHER: ;CPU進(jìn)行的其它工作進(jìn)行的其它工作MOVR1,#ADDR1MOVR6,# nSETBESSJMPWAIT1 SINT:CLRRI;接收中斷服務(wù)程序;接收中斷服務(wù)程序MOVA,SBUFMOV R1,AINCR1DECR6JNBP,NOOP ;P為為0轉(zhuǎn)移轉(zhuǎn)移JNBRB8,ERR;P為為1,RB8為為0轉(zhuǎn)錯誤處理轉(zhuǎn)錯

52、誤處理SJMPCON1NOOP:JNBRB8,CON1ERR:SETB01H;置出錯標(biāo)志;置出錯標(biāo)志 CON1:CJNER6,#00H,CONJ;沒收完繼續(xù);沒收完繼續(xù)SETBF0;接收完成標(biāo)志;接收完成標(biāo)志CONJ:RETI;中斷返回;中斷返回END注意學(xué)習(xí)本題的編程方法:注意學(xué)習(xí)本題的編程方法:(1)發(fā)送程序中奇偶校驗(yàn)位的取法,傳遞方法。)發(fā)送程序中奇偶校驗(yàn)位的取法,傳遞方法。(2)接收程序中在做奇偶校驗(yàn)時轉(zhuǎn)移類指令的用法,)接收程序中在做奇偶校驗(yàn)時轉(zhuǎn)移類指令的用法,程序結(jié)構(gòu)。程序結(jié)構(gòu)。(3)接收程序中計(jì)數(shù)寄存器)接收程序中計(jì)數(shù)寄存器R6遞減方法。與發(fā)送遞減方法。與發(fā)送程序的處理方法不同。

53、程序的處理方法不同。 7.4.3 定時器定時器T1溢出率的計(jì)算溢出率的計(jì)算 串口方式串口方式1、3波特率可變,且與波特率可變,且與T1溢出率有關(guān)。串溢出率有關(guān)。串口方式口方式1、3波特率的計(jì)算式如下:波特率的計(jì)算式如下: (1)T1工作于方式工作于方式0 很少用,從略,可自學(xué)。很少用,從略,可自學(xué)。 (2)T1工作于方式工作于方式1方式方式1為為16位定時器,設(shè)位定時器,設(shè)T1的初值的初值Z(16位)則位)則T1的的溢出率(溢出率(m)為:)為: (7-5))2(12)2(1216116NRZfNRZfmoscosc的溢出率1SMOD322BaudT(7-4)式中:式中:NR為執(zhí)行為執(zhí)行T1溢

54、出到恢復(fù)初值的中斷服溢出到恢復(fù)初值的中斷服務(wù)的周期數(shù):務(wù)的周期數(shù):NR = N1+N2其中其中N1為為CPU從響應(yīng)中斷到轉(zhuǎn)入中斷服務(wù)程序所需從響應(yīng)中斷到轉(zhuǎn)入中斷服務(wù)程序所需的周期數(shù),一般的周期數(shù),一般N1=5;N2為執(zhí)行為定時器重裝初值的周為執(zhí)行為定時器重裝初值的周期數(shù),取期數(shù),取N2=4。所以:。所以:NR = 9。 (3)T1工作于方式工作于方式2方式方式2為自動恢復(fù)初值的為自動恢復(fù)初值的8位定時器,設(shè)位定時器,設(shè)T1的初值的初值Z(8位),則位),則T1的溢出率(的溢出率(m)為:)為:(7-6)因?yàn)橐驗(yàn)門1方式方式2不需要中斷處理,所以不需要中斷處理,所以NR=0。通常,用于波特率發(fā)生

55、器時,通常,用于波特率發(fā)生器時,T1選用方式選用方式2較好較好。最重要的理由是它的自動重裝特性,省去中斷服務(wù)程序,最重要的理由是它的自動重裝特性,省去中斷服務(wù)程序,節(jié)省了節(jié)省了CPU的開銷。只有對于非常低的波特率,定時器方的開銷。只有對于非常低的波特率,定時器方式式2不能用時,才選用定時器不能用時,才選用定時器T1方式方式1。Z)Z)(256(2561212f fNR)NR)Z Z(2(21212f fm moscosc1 18 8oscosc【例【例7-3】波特率計(jì)算方法與誤差分析。波特率計(jì)算方法與誤差分析。設(shè)串行口工設(shè)串行口工作于方式作于方式1或方式或方式3,波特率定為,波特率定為2400

56、,T1工作于方式工作于方式2系系統(tǒng)統(tǒng)fosc=6MHz。求。求T1的初值和波特率的誤差。的初值和波特率的誤差。解:綜合(解:綜合(7-2)、()、(7-5)式,得)式,得(7-7)本例中:整理(本例中:整理(7-7)式得)式得(7-8)Z)(25612f322的溢出率T322BaudoscSMOD1SMOD240012f322256ZoscSMOD取取SMOD=0得得Z=249.49,由于,由于Z只能取整數(shù),若取只能取整數(shù),若取Z=250時,波特率為時,波特率為波特率相對誤差為波特率相對誤差為同理若取同理若取Z=249則:波特率為則:波特率為2232,相對誤差為誤,相對誤差為誤差過大,不易使用

57、。實(shí)踐表明:當(dāng)兩個串行通信設(shè)備之間差過大,不易使用。實(shí)踐表明:當(dāng)兩個串行通信設(shè)備之間的波特率誤差超過的波特率誤差超過2.5%時,串行通信將無法進(jìn)行。時,串行通信將無法進(jìn)行。2 26 60 04 42 25 50 0) )( (2 25 56 61 12 21 10 06 63 32 21 1B Ba au ud d6 68 8. .5 5% %1 10 00 0% %2 24 40 00 02 24 40 00 02 26 60 04 4為此,取為此,取SMOD=1,計(jì)算得,計(jì)算得Z=242.98,取,取Z=243=F3H, 波特率波特率=2403.8,誤差為,誤差為0.16%,可滿足精,可滿

58、足精度要求。但誤差不能完全消除。度要求。但誤差不能完全消除。徹底消除波特率誤差的辦法徹底消除波特率誤差的辦法,選擇單片機(jī)系統(tǒng)的,選擇單片機(jī)系統(tǒng)的fOSC,當(dāng)其為,當(dāng)其為1.8432整數(shù)或半整數(shù)頻率均可以消除波特率整數(shù)或半整數(shù)頻率均可以消除波特率非整數(shù)誤差。非整數(shù)誤差。11.0592MHz則為最常用的一種常用的頻率,則為最常用的一種常用的頻率,因?yàn)橐驗(yàn)?1.0592 是是1.8432的的6倍,且與標(biāo)準(zhǔn)倍,且與標(biāo)準(zhǔn)51最高頻率最高頻率(12MHz)最接近的一個。這樣標(biāo)準(zhǔn)設(shè)備及)最接近的一個。這樣標(biāo)準(zhǔn)設(shè)備及PC常用的波常用的波特率在特率在51機(jī)上都可無誤差的產(chǎn)生出來。機(jī)上都可無誤差的產(chǎn)生出來。為使用

59、者提供方便。因此要學(xué)會波特率為使用者提供方便。因此要學(xué)會波特率-定時定時器初值查表的方法。常用波特率列于表器初值查表的方法。常用波特率列于表7-5中。中。在學(xué)習(xí)串行通信時常見錯誤:在學(xué)習(xí)串行通信時常見錯誤:混淆串行口工作方式混淆串行口工作方式和定時器工作方式。和定時器工作方式?!纠纠?-4】兩臺】兩臺51以串口方式以串口方式1進(jìn)行通信,約定波特進(jìn)行通信,約定波特率為率為9600。A機(jī)的機(jī)的focs為為11.0592MHz,B機(jī)的機(jī)的focs為為7.3728MHz,編寫,編寫A機(jī)為發(fā)送方,機(jī)為發(fā)送方,B機(jī)為接收方,只進(jìn)行機(jī)為接收方,只進(jìn)行一個字節(jié)數(shù)據(jù)通信的程序。一個字節(jié)數(shù)據(jù)通信的程序。解:本例

60、的目的是學(xué)習(xí)在解:本例的目的是學(xué)習(xí)在51機(jī)的開發(fā)系統(tǒng)下實(shí)現(xiàn)通機(jī)的開發(fā)系統(tǒng)下實(shí)現(xiàn)通信的編程與操作過程。信的編程與操作過程。第一步:第一步:設(shè)兩機(jī)相距不遠(yuǎn),不需要任何形式的調(diào)制設(shè)兩機(jī)相距不遠(yuǎn),不需要任何形式的調(diào)制與電平轉(zhuǎn)換,直接用導(dǎo)線作為通信線路,如圖與電平轉(zhuǎn)換,直接用導(dǎo)線作為通信線路,如圖7-11所示所示 第二步:第二步:確定定時器工作方式,計(jì)算定時器初值。確定定時器工作方式,計(jì)算定時器初值。作為波特率發(fā)生器用,用作為波特率發(fā)生器用,用T1方式方式2。初值的計(jì)算如下:。初值的計(jì)算如下:A機(jī)的初值機(jī)的初值Z直接從表直接從表7-5中查出,為中查出,為FDH(SMOD=0); B機(jī)的初值機(jī)的初值Z計(jì)算

溫馨提示

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

評論

0/150

提交評論