版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、6、 MCS-51單片機(jī)的串行通信,教 學(xué) 目 的,掌握串行通信基礎(chǔ)知識(shí)。 了解常用的串行通信總線標(biāo)準(zhǔn)。 掌握MCS-51單片機(jī)的串行通信的基本原理。,學(xué)習(xí) 重點(diǎn) 和 難點(diǎn),MCS-51單片機(jī)串行通信的基本原理。 單片機(jī)串行通信的應(yīng)用。,串行通信主要內(nèi)容,1)串行通信概述,2)常用的串行通信總線 略,3)MCS-51的串行接口,4)MCS-51單片機(jī)之間的通信,本節(jié)小結(jié),應(yīng)用舉例,1)串行通信概述,單片機(jī)除了需要控制外圍器件完成特定的功能外,在很多應(yīng)用中還要完成單片機(jī)與單片機(jī)之間、單片機(jī)和外圍器件之間、單片機(jī)與計(jì)算機(jī)之間的數(shù)據(jù)交換和指令的傳輸,稱(chēng)為單片機(jī)的通信。,1)串行通信概述,在計(jì)算機(jī)系統(tǒng)
2、中,CPU與外部通信的基本方式有兩種: A、并行通信 數(shù)據(jù)的各位同時(shí)傳送。 B、串行通信 數(shù)據(jù)一位一位順序傳送。 下面分別看看這兩種通信方式的特點(diǎn),并行通信的特點(diǎn):各數(shù)據(jù)位同時(shí)傳送,傳送速度快、效率高。但有多少數(shù)據(jù)位就需要有多少根數(shù)據(jù)線,因此傳送成本高。 在集成電路芯片的內(nèi)部、同一插件板上各部件之間、同一機(jī)箱內(nèi)各插件板之間等的數(shù)據(jù)傳送都是并行的。并行數(shù)據(jù)傳送的距離通常小于30米。,串行通信的特點(diǎn):數(shù)據(jù)傳送按位順序進(jìn)行,最少只需一根傳輸線即可完成,成本低,但速度慢。 計(jì)算機(jī)與遠(yuǎn)程終端或終端與終端之間的數(shù)據(jù)傳送通常都是串行的。串行數(shù)據(jù)傳送的距離可以從幾米到幾千公里。 串行通信又有同步通信和異步通信
3、兩種基本方式。,基本 通信方式 示意圖,下面分別看看串行通信的異步通信和同步通信,A. 異步通信方式(Asynchronous Communication) 在異步通信中,數(shù)據(jù)通常是以字符(或字節(jié))為單位組成字符幀傳送的。 字符幀由發(fā)送端一幀一幀地發(fā)送,通過(guò)傳輸線被接收設(shè)備一幀一幀地接收。 發(fā)送端和接收端可以有各自的時(shí)鐘來(lái)控制數(shù)據(jù)的發(fā)送和接收。兩個(gè)時(shí)鐘源彼此獨(dú)立,互不同步。,A. 異步通信方式(Asynchronous Communication) 在異步通信中,接收端是依靠字符幀格式來(lái)判斷發(fā)送端是何時(shí)開(kāi)始發(fā)送及何時(shí)結(jié)束發(fā)送。如下: 不發(fā)送數(shù)據(jù)時(shí),發(fā)送線為高電平(邏輯“1”); 當(dāng)接收端檢測(cè)到
4、傳輸線上發(fā)送過(guò)來(lái)的低電平邏輯“0”(字符幀起始位)時(shí),就知道發(fā)送端已開(kāi)始發(fā)送; 每當(dāng)接收端接收到字符幀中的停止位時(shí),就知道一幀字符信息己發(fā)送完畢。,(1) 字符幀(Character Frame) 字符幀也叫數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位四部分組成。各部分結(jié)構(gòu)和功能如下: 起始位:位于字符幀開(kāi)頭,占一位,為邏輯“0”,用于向接收設(shè)備表示發(fā)送端開(kāi)始發(fā)送一幀信息 數(shù)據(jù)位:緊跟起始位之后,用戶(hù)根據(jù)情況可取5位、6位、7位或8位,低位在前高位在后。若所傳數(shù)據(jù)為ASCII字符,則常取7位。,(1) 字符幀(Character Frame) 奇偶校驗(yàn)位:位于數(shù)據(jù)位后,僅占一位,表征串行通信中
5、采用奇校驗(yàn)還是偶校驗(yàn),由用戶(hù)根據(jù)需要決定。 停止位:位于字符幀末尾,為邏輯“1”(高電平),通??扇?位、1.5位或2位,用于向接收端表示一幀字符信息已發(fā)送完畢,也為發(fā)送下一幀字符作準(zhǔn)備。,(1) 字符幀(Character Frame)-空閑位 在串行通信中,發(fā)送端一幀一幀發(fā)送信息,接收端一幀一幀接收信息。兩相鄰字符幀之間可以無(wú)空閑位,也可以有若干空閑位,這由用戶(hù)根據(jù)需要決定。,異步通信的字符幀格式,異步通信,下頁(yè)為同步通信的知識(shí),(2) 波特率(baud rate) 波特率的定義為每秒鐘傳送二進(jìn)制數(shù)碼的位數(shù)(亦稱(chēng)比特?cái)?shù)),單位是bit/s,即位/秒。 波特率是串行通信的重要指標(biāo),用于表征數(shù)
6、據(jù)傳輸?shù)乃俣取?波特率越高,數(shù)據(jù)傳輸速度越快,但和字符的實(shí)際傳輸速率不同。字符的實(shí)際傳輸速率是指每秒內(nèi)所傳字符幀的幀數(shù),和字符幀格式有關(guān)。 看下面的例子,例如:波特率為1200 bit/s的通信系統(tǒng),若采用上 圖(a)的字符幀,則字符的實(shí)際傳輸速率為 1200/11=109.09幀/秒 若改用上圖(b)的字符幀,則字符的實(shí)際傳輸速率為 1200/14=85.71幀/秒,(2) 波特率(baud rate) 每位的傳輸時(shí)間定義為波特率的倒數(shù)。例如:波特率為1200 bit/s的通信系統(tǒng),其每位的傳輸時(shí)間應(yīng)為: 波特率還和信道的頻帶有關(guān)。波特率越高,信道頻帶越寬。因此,波特率也是衡量通道頻寬的重要
7、指標(biāo),通常,異步通信的波特率在50bit/s9600bit/s之間。波特率不同于發(fā)送時(shí)鐘和接收時(shí)鐘,它通常是時(shí)鐘頻率的1/16或1/64。,異步通信 - 小結(jié),圖2.18 串行異步傳送的字符格式 (a) 字符格式;(b) 有空閑位的字符格式,在串行異步傳送中,通信雙方必須事先約定: (1) 字符格式。雙方要事先約定字符的編碼形式、奇偶校驗(yàn)形式及起始位和停止位的規(guī)定。例如用ASCII碼通信,有效數(shù)據(jù)為7位,加一個(gè)奇偶校驗(yàn)位、一個(gè)起始位和一個(gè)停止位共10位。當(dāng)然停止位也可以大于1位。 (2) 波特率(Baud rate)。要求發(fā)送端與接收端的波特率必須一致。 異步串行通信的傳送速率一般為50960
8、0波特,常用于計(jì)算機(jī)到CRT終端和字符打印機(jī)之間的通信等。,下面看看同步通信,2. 同步通信(Synchronous Communication) 同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳送一幀信息。這里的信息幀和異步通信中的字符幀不同,通常有若干個(gè)數(shù)據(jù)字符,如下圖所示。,同步字符幀由同步字符、數(shù)據(jù)字符和校驗(yàn)字符三部分組成。,同步通信 的字符幀格式,同步字符位于幀結(jié)構(gòu)開(kāi)頭,用于確認(rèn)數(shù)據(jù)字符的開(kāi)始 (接收端不斷對(duì)傳輸線采樣,并把采到的字符和雙方約定的同步字符比較,只有比較成功后才會(huì)把后面接收到的字符加以存儲(chǔ));,同步通信 的字符幀格式,數(shù)據(jù)字符在同步字符之后,個(gè)數(shù)不受限制,由所需傳
9、輸?shù)臄?shù)據(jù)塊長(zhǎng)度決定; 校驗(yàn)字符有12個(gè),位于幀結(jié)構(gòu)末尾,用于接收端對(duì)接收到的數(shù)據(jù)字符的正確性的校驗(yàn)。,同步通信 的字符幀格式,2. 同步通信(Synchronous Communication) 在同步通信中,同步字符可以采用統(tǒng)一標(biāo)準(zhǔn)符式,也可由用戶(hù)約定。 在單同步字符幀結(jié)構(gòu)中,同步字符常采用ASCII碼中規(guī)定的SYN(即16H)代碼; 在雙同步字符幀結(jié)構(gòu)中,同步字符一般采用國(guó)際通用標(biāo)準(zhǔn)代碼EB90H。,同步通信 的字符幀格式,2.異步通信與同步通信的特點(diǎn) 異步通信的優(yōu)點(diǎn)是不需要傳送同步脈沖,字符幀長(zhǎng)度也不受限制,故所需設(shè)備簡(jiǎn)單。 異步通信的缺點(diǎn)是字符幀中因包含有起始位和停止位而降低了有效數(shù)據(jù)
10、的傳輸速率。 同步通信的優(yōu)點(diǎn)是傳輸速率較高,通常可達(dá)56000bit/s或更高。 同步通信的缺點(diǎn)是要求發(fā)送時(shí)鐘和接收時(shí)鐘保持嚴(yán)格同步,故發(fā)送時(shí)鐘除應(yīng)和發(fā)送波特率保持一致外,還要求把它同時(shí)傳送到接收端去。,串行通信的制式,在串行通信中,數(shù)據(jù)是在兩個(gè)站之間傳送的。按照數(shù)據(jù)傳送方向,串行通信可分為以下三種傳送方式:,單工方式: 通信線的一端接發(fā)送器,另一端接接收器,它們形成單向連接,只允許數(shù)據(jù)按照一個(gè)固定的方向傳送。數(shù)據(jù)只能單方向傳送。,半雙工方式: 系統(tǒng)中的每個(gè)通信設(shè)備都由一個(gè)發(fā)送器和一個(gè)接收器組成,通過(guò)收發(fā)開(kāi)關(guān)接到通信線上。數(shù)據(jù)能夠?qū)崿F(xiàn)雙方向傳送,但任何時(shí)刻只能由其中的一方發(fā)送數(shù)據(jù),另一方接收數(shù)
11、據(jù)。 其收發(fā)開(kāi)關(guān)并不是實(shí)際的物理開(kāi)關(guān),而是由軟件控制的電子開(kāi)關(guān),通信線兩端通過(guò)半雙工協(xié)議進(jìn)行功能切換。,半雙工方式:,全雙工方式: 系統(tǒng)的每端都含有發(fā)送器和接收器,數(shù)據(jù)可以同時(shí)在兩個(gè)方向上傳送。,盡管許多串行通信接口電路具有全雙工功能,但在實(shí)際應(yīng)用中,大多數(shù)情況下只工作于半雙工方式,即兩個(gè)工作站通常并不同時(shí)收發(fā)。這種用法并無(wú)害處,雖然沒(méi)有充分發(fā)揮效率,但簡(jiǎn)單、實(shí)用。,2)常用的串行通信總線,3)MCS-51的串行接口,80C51串行口的結(jié)構(gòu),*,(99H),(99H),有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一地址99H ;接收器是雙緩沖結(jié)構(gòu) ;發(fā)送緩沖器,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)
12、的,不會(huì)產(chǎn)生重疊錯(cuò)誤。,串行發(fā)送時(shí),通過(guò)“MOV SBUF,A”寫(xiě)指令,把A的內(nèi)容送入發(fā)送緩沖寄存器SBUF,再由TxD引腳一位一位地向外發(fā)送。,(99H),(99H),串行接收時(shí),接收端從RxD一位一位地接收數(shù)據(jù),直到收到一個(gè)完整的字符數(shù)據(jù)后通知CPU,再通過(guò)“MOV A,SBUF”讀指令,CPU從接收緩沖寄存器SBUF讀出數(shù)據(jù)。發(fā)送和接收可采用中斷方式。,(99H),(99H),SCON 是一個(gè)特殊功能寄存器,用以設(shè)定串行口的工作方式、接收/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志:,80C51串行口的控制寄存器,SM0和SM1為工作方式選擇位,可選擇四種工作方式:,同步,SM2,多機(jī)通信控制位,主要用于
13、方式2和方式3。當(dāng)接收機(jī)的SM2=1時(shí)可以利用收到的RB8來(lái)控制是否激活RI(RB80時(shí)不激活RI,收到的信息丟棄;RB81時(shí)收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI,進(jìn)而在中斷服務(wù)中將數(shù)據(jù)從SBUF讀走)。當(dāng)SM2=0時(shí),不論收到的RB8為0和1,均可以使收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI(即此時(shí)RB8不具有控制RI激活的功能)。通過(guò)控制SM2,可以實(shí)現(xiàn)多機(jī)通信。 在方式0時(shí),SM2必須是0。在方式1時(shí),若SM2=1,則只有接收到有效停止位時(shí),RI才置1。, REN,允許串行接收位。由軟件置REN=1,則啟動(dòng)串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收。,TB8,在方式2或方式3中,是發(fā)送數(shù)據(jù)的
14、第九位,可以用軟件規(guī)定其作用??梢杂米鲾?shù)據(jù)的奇偶校驗(yàn)位,或在多機(jī)通信中,作為地址幀/數(shù)據(jù)幀的標(biāo)志位。 TB8=0表示發(fā)送地址幀。 在方式0和方式1中,該位未用。 RB8,在方式2或方式3中,是接收到數(shù)據(jù)的第九位,作為奇偶校驗(yàn)位或地址幀/數(shù)據(jù)幀的標(biāo)志位。在方式1時(shí),若SM2=0,則RB8是接收到的停止位。,TI,發(fā)送中斷標(biāo)志位。在方式0時(shí),當(dāng)串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行發(fā)送停止位的開(kāi)始時(shí),由內(nèi)部硬件使TI置1,向CPU發(fā)中斷申請(qǐng)。在中斷服務(wù)程序中,必須用軟件將其清0,取消此中斷申請(qǐng)。 RI,接收中斷標(biāo)志位。在方式0時(shí),當(dāng)串行接收第8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行接收停止位的中間
15、時(shí),由內(nèi)部硬件使RI置1,向CPU發(fā)中斷申請(qǐng)。也必須在中斷服務(wù)程序中,用軟件將其清0,取消此中斷申請(qǐng)。,PCON中只有一位SMOD與串行口工作有關(guān) :,SMOD(PCON.7) 波特率倍增位。在串行口方式1、方式2、方式3時(shí),波特率與SMOD有關(guān),當(dāng)SMOD=1時(shí),波特率提高一倍。復(fù)位時(shí),SMOD=0。,(99H),(99H),SMOD(PCON.7) 波特率倍增位。在串行口方式1、方式2、方式3時(shí),波特率與SMOD有關(guān),當(dāng)SMOD=1時(shí),波特率提高一倍。復(fù)位時(shí),SMOD=0。,下面具體看看串行口的工作方式,80C51串行口的工作方式,一、方式0 方式0時(shí),串行口為同步移位寄存器的輸入輸出方式
16、。主要用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。,8位串入并出的移位寄存器,方式0發(fā)送和接收電路,下面具體看看,1、方式0輸出:,(P3.0),(P3.1),低位在先,高位在后。波特率固定為fosc/12,8位串入并出的移位寄存器,方式0發(fā)送和接收電路,串行數(shù)據(jù)通過(guò)RXD引腳輸出,而在TXD引腳輸出移位時(shí)鐘,作移位脈沖輸出端。,1、方式0輸出:,(P3.0),(P3.1),低位在先,高位在后。波特率固定為fosc/12,8位串入并出的移位寄存器,方式0發(fā)送和
17、接收電路,當(dāng)一個(gè)數(shù)據(jù)寫(xiě)入串行口數(shù)據(jù)緩沖器時(shí),就開(kāi)始發(fā)送。 在此期間,發(fā)送控制器送出移位信號(hào),使發(fā)送移位寄存器的內(nèi)容右移一位。直至最高位(D7位)數(shù)字移出后,停止發(fā)送數(shù)據(jù)和移位時(shí)鐘脈沖,完成了發(fā)送一幀數(shù)據(jù)的過(guò)程,并置TI為1,就申請(qǐng)中斷。 若CPU響應(yīng)中斷,則從0023H單元開(kāi)始執(zhí)行串行口中斷服務(wù)程序。,2、方式0輸入,方式0發(fā)送和接收電路,8位并入串出的移位寄存器,REN,允許串行接收位。由軟件置REN=1,則啟動(dòng)串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收。,看方式0的例子 下面看看方式1,(P3.0),(P3.1),方式0輸入(接收): RXD端為數(shù)據(jù)輸入端,TXD端為同步脈沖信號(hào)輸出端
18、。 接收器以振蕩頻率的l/12的波特率接收RXD端輸入的數(shù)據(jù)信息。,二、方式1 方式1是10位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中1位起始位,8位數(shù)據(jù)位,1位停止位。,1、方式1輸出,下面看看方式1輸入,2、方式1輸入,用軟件置REN為1時(shí),接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測(cè)到RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說(shuō)明起始位有效,將其移入輸入移位寄存器,并開(kāi)始接收這一幀信息的其余位。,REN,允許串行接收位。由軟件置REN=1,則啟動(dòng)串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收。,P3.0,繼續(xù),(99H),接收過(guò)程
19、中,數(shù)據(jù)從輸入移位寄存器右邊移入,當(dāng)起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的停止位為1)時(shí),將接收到的9位數(shù)據(jù)的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向CPU請(qǐng)求中斷。,注意,注意: 在方式1的接收器中設(shè)置有數(shù)據(jù)辨識(shí)功能,當(dāng)同時(shí)滿(mǎn)足以下條件時(shí),接收的數(shù)據(jù)才有效。接收控制器再次采樣RxD的負(fù)跳變,以便接收下一幀數(shù)據(jù)。,(99H), RI=0; 接收到的停止位為 1 或 SM2=0。,多機(jī)通信控制位,下面看看方式2和方式3,三、方式2和方式3 方式2或方式3時(shí)為11位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RX
20、D為數(shù)據(jù)接收引腳 。,方式2和方式3時(shí)起始位1位,數(shù)據(jù)9位(含1位附加的第9位,發(fā)送時(shí)為SCON中的TB8,接收時(shí)為RB8),停止位1位,一幀數(shù)據(jù)為11位。 方式2的波特率固定為晶振頻率的1/64或1/32,方式3的波特率由定時(shí)器T1的溢出率決定。,下面看看方式2和方式3輸出,1、方式2和方式3輸出,發(fā)送開(kāi)始時(shí),先把起始位0輸出到TXD引腳,然后發(fā)送移位寄存器的輸出位(D0)到TXD引腳。每一個(gè)移位脈沖都使輸出移位寄存器的各位右移一位,并由TXD引腳輸出。 第一次移位時(shí),停止位“1”移入輸出移位寄存器的第9位上 ,以后每次移位,左邊都移入0。當(dāng)停止位移至輸出位時(shí),左邊其余位全為0,檢測(cè)電路檢測(cè)
21、到這一條件時(shí),使控制電路進(jìn)行最后一次移位,并置TI=1,向CPU請(qǐng)求中斷。,下面看看方式2和方式3輸入,2、方式2和方式3輸入,接收時(shí),數(shù)據(jù)從右邊移入輸入移位寄存器,在起始位0移到最左邊時(shí),控制電路進(jìn)行最后一次移位。 當(dāng)RI=0,且SM2=0(或接收到的第9位數(shù)據(jù)為1)時(shí),接收到的數(shù)據(jù)裝入接收緩沖器SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,向CPU請(qǐng)求中斷。如果條件不滿(mǎn)足,則數(shù)據(jù)丟失,且不置位RI,繼續(xù)搜索RXD引腳的負(fù)跳變。,下面看看方式2和方式3輸入注意的問(wèn)題,裝入 SBUF和 RB8以及置位 RI的信號(hào)只有在產(chǎn)生最后一個(gè)移位脈沖且同滿(mǎn)足下列兩個(gè)條件, 才會(huì)產(chǎn)生: RI=0; SM
22、2 =0 或接收到的第 9 位數(shù)據(jù)為“1”。 上述兩個(gè)條件中任一個(gè)不滿(mǎn)足, 所接收的數(shù)據(jù)幀就會(huì)丟失, 不再恢復(fù)。 兩者都滿(mǎn)足時(shí), 第 9 位數(shù)據(jù)裝入 TB8, 前 8 位數(shù)據(jù)裝入 SBUF。 請(qǐng)注意: 與模式1不同, 模式2和3中裝入RB8的是第 9位數(shù)據(jù), 而不是停止位。所接收的停止位的值與SBUF、 RB8和RI都沒(méi)有關(guān)系, 利用這一特點(diǎn)可用于多機(jī)通信中。,下面看看波特率的計(jì)算,四、波特率的計(jì)算 在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收數(shù)據(jù)的速率要有約定。 通過(guò)軟件可對(duì)單片機(jī)串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來(lái)決定
23、。,串行口的四種工作方式對(duì)應(yīng)三種波特率。各種方式的波特率計(jì)算公式如下 方式0的波特率 = fosc/12 方式2的波特率 =(2SMOD/64) fosc 方式1的波特率 =(2SMOD/32)(T1溢出率) 方式3的波特率 =(2SMOD/32)(T1溢出率),當(dāng)T1作為波特率發(fā)生器時(shí),最典型的用法是使T1工作在自動(dòng)再裝入的8位定時(shí)器方式(即方式2,且TCON的TR1=1,以啟動(dòng)定時(shí)器)。這時(shí)溢出率取決于TH1中的計(jì)數(shù)值。 T1 溢出率 = fosc /12256 (TH1) 在單片機(jī)的應(yīng)用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的波特率也相對(duì)固定。常用的串行口波特
24、率以及各參數(shù)的關(guān)系如表所示。,下面總結(jié)一下串行口的初始化,串行口工作之前,應(yīng)對(duì)其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時(shí)器1、串行口控制和中斷控制。具體步驟如下: 確定T1的工作方式(編程TMOD寄存器);方式1方式3 計(jì)算T1的初值,裝載TH1、TL1; 啟動(dòng)T1(編程TCON中的TR1位); 確定串行口控制(編程SCON寄存器); 串行口在中斷方式工作時(shí),要進(jìn)行中斷設(shè)置(編程IE、IP寄存器)。,6.3 單片機(jī)串行口應(yīng)用舉例,在計(jì)算機(jī)分布式測(cè)控系統(tǒng)中,經(jīng)常要利用串行通信方式進(jìn)行數(shù)據(jù)傳輸。80C51單片機(jī)的串行口為計(jì)算機(jī)間的通信提供了極為便利的條件。 利用單片機(jī)的串行口還可以方便地?cái)U(kuò)展鍵盤(pán)和顯
25、示器,對(duì)于簡(jiǎn)單的應(yīng)用非常便利。,6.3.1 單片機(jī)與單片機(jī)的通信,一、點(diǎn)對(duì)點(diǎn)的通信 1、硬件連接,二、應(yīng)用程序,設(shè)1號(hào)機(jī)是發(fā)送方,2號(hào)機(jī)是接收方。當(dāng)1號(hào)機(jī)發(fā)送時(shí),先發(fā)送一個(gè)“E1”聯(lián)絡(luò)信號(hào),2號(hào)機(jī)收到后回答一個(gè)“E2”應(yīng)答信號(hào),表示同意接收。當(dāng)1號(hào)機(jī)收到應(yīng)答信號(hào)“E2”后,開(kāi)始發(fā)送數(shù)據(jù),每發(fā)送一個(gè)數(shù)據(jù)字節(jié)都要計(jì)算“校驗(yàn)和”,假定數(shù)據(jù)塊長(zhǎng)度為16個(gè)字節(jié),起始地址為40H,一個(gè)數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送“校驗(yàn)和”。2號(hào)機(jī)接收數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)緩沖區(qū),起始地址也為40H,每接收到一個(gè)數(shù)據(jù)字節(jié)便計(jì)算一次“校驗(yàn)和”,當(dāng)收到一個(gè)數(shù)據(jù)塊后,再接收1號(hào)機(jī)發(fā)來(lái)的“校驗(yàn)和”,并將它與2號(hào)機(jī)求出的校驗(yàn)和進(jìn)行比較。若兩者
26、相等,說(shuō)明接收正確,2號(hào)機(jī)回答00H;若兩者不相等,說(shuō)明接收不正確,2號(hào)機(jī)回答0FFH,請(qǐng)求重發(fā)。1號(hào)機(jī)接到00H后結(jié)束發(fā)送。若收到的答復(fù)非零,則重新發(fā)送數(shù)據(jù)一次。雙方約定采用串行口方式1進(jìn)行通信,一幀信息為10位,其中有1個(gè)起始位、8個(gè)數(shù)據(jù)位和一個(gè)停止位;波特率為2400波特,T1工作在定時(shí)器方式2,振蕩頻率選用11.0592MHZ,查表可得TH1=TL1=0F4H,PCON寄存器的SMOD位為0。,發(fā)送程序清單如下: ASTART:CLR EA MOV TMOD,#20H ;定時(shí)器1置為方式2 MOV TH1,#0F4H ;裝載定時(shí)器初值,波特率2400 MOV TL1,#0F4H MOV
27、 PCON,#00H SETB TR1 ;啟動(dòng)定時(shí)器 MOV SCON,#50H ;設(shè)定串口方式1,且準(zhǔn)備接收應(yīng)答信號(hào) ALOOP1:MOV SBUF,#0E1H ;發(fā)聯(lián)絡(luò)信號(hào) JNB TI,$ ;等待一幀發(fā)送完畢 CLR TI ;允許再發(fā)送 JNB RI,$ ;等待2號(hào)機(jī)的應(yīng)答信號(hào) CLR RI ;允許再接收 MOV A,SBUF ;2號(hào)機(jī)應(yīng)答后,讀至A XRL A,#0E2H ;判斷2號(hào)機(jī)是否準(zhǔn)備完畢 JNZ ALOOP1 ;2號(hào)機(jī)未準(zhǔn)備好,繼續(xù)聯(lián)絡(luò) ALOOP2:MOV R0,#40H ;2號(hào)機(jī)準(zhǔn)備好,設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7,#10H ;設(shè)定數(shù)據(jù)塊長(zhǎng)度初值 MOV R6,#
28、00H ;清校驗(yàn)和單元,ALOOP3:MOV SBUF,R0 ;發(fā)送一個(gè)數(shù)據(jù)字節(jié) MOV A,R6 ADD A,R0 ;求校驗(yàn)和 MOV R6,A ;保存校驗(yàn)和 INC R0 JNB TI,$ CLR TI DJNZ R7,ALOOP3 ;整個(gè)數(shù)據(jù)塊是否發(fā)送完畢 MOV SBUF,R6 ;發(fā)送校驗(yàn)和 JNB TI,$ CLR TI JNB RI,$ ;等待2號(hào)機(jī)的應(yīng)答信號(hào) CLR RI MOV A,SBUF ;2號(hào)機(jī)應(yīng)答,讀至A JNZ ALOOP2 ;2號(hào)機(jī)應(yīng)答“錯(cuò)誤”,轉(zhuǎn)重新發(fā)送 RET ;2號(hào)機(jī)應(yīng)答“正確”,返回,接收程序清單如下: BSTART:CLR EA MOV TMOD,#20H
29、 MOV TH1,#0F4H MOV TL1,#0F4H MOV PCON,#00H SETB TR1 MOV SCON,#50H ;設(shè)定串口方式1,且準(zhǔn)備接收 BLOOP1:JNB RI,$ ;等待1號(hào)機(jī)的聯(lián)絡(luò)信號(hào) CLR RI MOV A,SBUF ;收到1號(hào)機(jī)信號(hào) XRL A,#0E1H ;判是否為1號(hào)機(jī)聯(lián)絡(luò)信號(hào) JNZ BLOOP1 ;不是1號(hào)機(jī)聯(lián)絡(luò)信號(hào),再等待 MOV SBUF,#0E2H ;是1號(hào)機(jī)聯(lián)絡(luò)信號(hào),發(fā)應(yīng)答信號(hào) JNB TI,$ CLR TI MOV R0,#40H ;設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7,#10H ;設(shè)定數(shù)據(jù)塊長(zhǎng)度初值 MOV R6,#00H ;清校驗(yàn)和單
30、元,BLOOP2:JNB RI,$ CLR RI MOV A,SBUF MOV R0,A ;接收數(shù)據(jù)轉(zhuǎn)儲(chǔ) INC R0 ADD A,R6 ;求校驗(yàn)和 MOV R6,A DJNZ R7,BLOOP2 ;判數(shù)據(jù)塊是否接收完畢 JNB RI,$ ;完畢,接收1號(hào)機(jī)發(fā)來(lái)的校驗(yàn)和 CLR RI MOV A,SBUF XRL A,R6 ;比較校驗(yàn)和 JZ END1 ;校驗(yàn)和相等,跳至發(fā)正確標(biāo)志 MOV SBUF,#0FFH ;校驗(yàn)和不相等,發(fā)錯(cuò)誤標(biāo)志 JNB TI,$ ;轉(zhuǎn)重新接收 CLR TI END1:MOV SBUF,#00H RET,二、多機(jī)通信 1、硬件連接 單片機(jī)構(gòu)成的多機(jī)系統(tǒng)常采用總線型主從式結(jié)構(gòu)。所謂主從式,即在數(shù)個(gè)單片機(jī)中,有一個(gè)是主機(jī),其余的是從機(jī),從機(jī)要服從主機(jī)的調(diào)度、支配。80C31單片機(jī)的串行口方式2和方式3適于這種主從式的通信結(jié)構(gòu)。當(dāng)然采用不同的通信標(biāo)準(zhǔn)時(shí),還需進(jìn)行相應(yīng)的電平轉(zhuǎn)換,有時(shí)還要對(duì)信號(hào)進(jìn)行光電隔離。在實(shí)際的多機(jī)應(yīng)用系統(tǒng)中,常采用RS-485串行標(biāo)準(zhǔn)總線進(jìn)行數(shù)據(jù)傳輸。,2、通信協(xié)議 所有
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)鎮(zhèn)定期培訓(xùn)制度
- 化妝品工廠培訓(xùn)制度
- 建筑學(xué)習(xí)培訓(xùn)制度
- 風(fēng)險(xiǎn)預(yù)控管理培訓(xùn)制度
- 合同培訓(xùn)制度
- 興趣培訓(xùn)教學(xué)管理制度
- 幼兒園培訓(xùn)工作管理制度
- 檢察院培訓(xùn)班制度
- 火電廠檢修培訓(xùn)管理制度
- 工會(huì)工作室培訓(xùn)制度
- 電石生產(chǎn)安全技術(shù)規(guī)程
- 2025-2026學(xué)年統(tǒng)編版(2024)七年級(jí)道德與法治下冊(cè)全冊(cè)教案(教學(xué)設(shè)計(jì))
- 智能制造車(chē)間SCADA系統(tǒng)設(shè)計(jì)方案
- 自考勞動(dòng)法2025年10月真題及答案
- hsk標(biāo)準(zhǔn)教程教學(xué)課件
- CD20單抗治療免疫性疾病
- 三角債三方協(xié)議合同范本
- 醫(yī)保年度工作匯報(bào)
- 創(chuàng)傷性腎靜脈破裂的護(hù)理課件
- 2025年廣東省中考道德與法治真題(原卷版)
- 2025年重慶市中考地理試卷真題(含標(biāo)準(zhǔn)答案及解析)
評(píng)論
0/150
提交評(píng)論