第06章單片機(jī)串行通信系統(tǒng)_第1頁
第06章單片機(jī)串行通信系統(tǒng)_第2頁
第06章單片機(jī)串行通信系統(tǒng)_第3頁
第06章單片機(jī)串行通信系統(tǒng)_第4頁
第06章單片機(jī)串行通信系統(tǒng)_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

授課教師:左敬龍電話號:68012郵箱:oklong@單片機(jī)原理及應(yīng)用單片機(jī)串行通信系統(tǒng)串行通信接口概述1串行通信工作方式3串行通信波特率設(shè)置4串行通信應(yīng)用舉例5串行通信接口概述1串行通信接口2

串行通信優(yōu)點(diǎn):便于長距離傳送缺點(diǎn):傳送速度較慢計(jì)算機(jī)與外界信息交換稱為通信。通信的基本方式可分為并行通信和串行通信:并行通信是數(shù)據(jù)的各位同時(shí)發(fā)送或同時(shí)接收;串行通信是數(shù)據(jù)的各位依次逐位發(fā)送或接收。并行通信優(yōu)點(diǎn):傳送速度快缺點(diǎn):不便長距離傳送一、串行通信接口概述串行通信按同步方式可分為異步通信和同步通信。串行通信的通信方式異步通信方式:單片機(jī)的串行通信使用的是異步串行通信,異步通信是指發(fā)送方和接收方采用獨(dú)立的時(shí)鐘,即雙方?jīng)]有一個(gè)相同的參考時(shí)鐘作為基準(zhǔn)。在異步通信中數(shù)據(jù)一般以一個(gè)字符為單位進(jìn)行傳送。用一幀來表示一個(gè)字符,一幀信息由起始位(為0信號,占1位)、數(shù)據(jù)位(傳輸時(shí)低位在先,高位在后)、奇偶較驗(yàn)位(可要可不要)和停止位(為1信號,可1位、1位半或2位)組成。同步通信方式:在同步通信中,每個(gè)數(shù)據(jù)塊的開頭以同步字符SYN加以指示,使發(fā)送與接受雙方取得同步。數(shù)據(jù)塊的各字符之間沒有起始位和停止位,提高了通信的速度。但為了能保持同步傳送,在同步通信中須用一個(gè)時(shí)鐘來協(xié)調(diào)收發(fā)器的工作,這就增加了設(shè)備的復(fù)雜性。

1)字符格式

雙方要事先約定字符的編碼形式、奇偶校驗(yàn)形式及起始位和停止位的規(guī)定。例如用ASCII碼通信,有效數(shù)據(jù)為7位,加一個(gè)奇偶校驗(yàn)位、一個(gè)起始位和一個(gè)停止位共10位。2)波特率

波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進(jìn)制位數(shù),單位為位/秒。它與字符的傳送速率(字符/秒)之間有以下關(guān)系:

波特率=1個(gè)字符的二進(jìn)制編碼位數(shù)×字符/秒注:在異步通信中,通信雙方必須事先約定字符格式和波特率.3)串行通信的三種數(shù)據(jù)傳輸模式

(1)單工方式:數(shù)據(jù)僅按一個(gè)固定方向傳送。常用于串行口的打印數(shù)據(jù)傳輸與簡單系統(tǒng)間的數(shù)據(jù)采集。

(2)半雙工方式:使用同一根傳輸線,數(shù)據(jù)可雙向傳送,但不能同時(shí)進(jìn)行,實(shí)際應(yīng)用中采用某種協(xié)議實(shí)現(xiàn)收/發(fā)開關(guān)轉(zhuǎn)換。

(3)全雙工方式:數(shù)據(jù)的發(fā)送和接收可同時(shí)進(jìn)行,通信雙方都能在同一時(shí)刻進(jìn)行發(fā)送和接收操作,但一般全雙工傳輸方式的線路和設(shè)備比較復(fù)雜。

發(fā)送端接受端數(shù)據(jù)線地線單工知式發(fā)送/接收端接收/發(fā)送端數(shù)據(jù)線地線半雙工制式發(fā)送/接收器接收/發(fā)送端數(shù)據(jù)線地線全雙工方式單片機(jī)串行通信系統(tǒng)串行通信接口概述1串行通信工作方式3串行通信波特率設(shè)置4串行通信應(yīng)用舉例5串行通信接口2串行通信接口2

80C51系列單片機(jī)有一個(gè)全雙工的串行口,這個(gè)口既可以用于網(wǎng)絡(luò)通信,也可以實(shí)現(xiàn)串行異步通信,還可以作為同步移位寄存器使用。二、80C51串行通信接口指令清0RI/TI波特率發(fā)生器下降沿表示“0”起始位開始波特率因子:16波特率加倍80C51串行通信接口發(fā)送時(shí),只需將發(fā)送數(shù)據(jù)輸入SBUF,CPU將自動啟動和完成串行數(shù)據(jù)的發(fā)送;接收時(shí),CPU將自動把接收到的數(shù)據(jù)存入SBUF,用戶只需從SBUF中讀出接收數(shù)據(jù)。串行口特殊功能寄存器1、串行數(shù)據(jù)緩沖器SBUF在邏輯上只有一個(gè),既表示發(fā)送寄存器,又表示接收寄存器,具有同一個(gè)單元地址99H,用同一寄存器名SBUF。在物理上有兩個(gè),一個(gè)是發(fā)送緩沖寄存器,另一個(gè)是接收緩沖寄存器。2、串行控制寄存器SCONSCOND7D6D5D4D3D2D1D0位名稱SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式選擇多機(jī)通信控制接收允許發(fā)送第9位接收第9位發(fā)送中斷接收中斷①SM0SM1——串行口工作方式選擇位。②SM2——多機(jī)通信控制位。③REN——允許接收控制位。REN=1,允許接收。④TB8——方式2和方式3中要發(fā)送的第9位數(shù)據(jù)。⑤RB8——方式2和方式3中要接收的第9位數(shù)據(jù)。⑥TI——發(fā)送中斷標(biāo)志。⑦RI——接收中斷標(biāo)志。SM0、SM1:串行口工作方式選擇位。用于選擇四種工作方式SM0SM1方式功能波特率00方式0移位寄存器方式fosc/1201方式18位異步通信方式可變10方式29位異步通信方式fosc/32或fosc/6411方式39位異步通信方式可變3、電源控制寄存器PCONPCOND7D6D5D4D3D2D1D0位名稱SMOD———GF1GF0PDIDLSMOD=1,串行口波特率加倍。PCON寄存器不能進(jìn)行位尋址。一只蜘蛛和三個(gè)人雨后,一只蜘蛛艱難地向墻上已經(jīng)支離破碎的網(wǎng)爬去,由于墻壁潮濕,它爬到一定的高度,就會掉下來,它一次次地向上爬,一次次地又掉下來……第一個(gè)人看到了,他嘆了一口氣,自言自語:“我的一生不正如這只蜘蛛嗎?忙忙碌碌而無所得?!庇谑牵諠u消沉。第二個(gè)人看到了,他說:這只蜘蛛真愚蠢,為什么不從旁邊干燥的地方繞一下爬上去?我以后可不能像它那樣愚蠢。于是,他變得聰明起來。第三個(gè)人看到了,他立刻被蜘蛛屢敗屢戰(zhàn)的精神感動了。于是,他變得堅(jiān)強(qiáng)起來。秘訣:有成功心態(tài)者處處都能發(fā)覺成功的力量。優(yōu)秀是一種習(xí)慣單片機(jī)串行通信系統(tǒng)串行通信接口概述1串行通信工作方式3串行通信波特率設(shè)置4串行通信應(yīng)用舉例5串行通信工作方式3串行通信接口280C51串行通信共有4種工作方式,由串行控制寄存器SCON中SM0SM1決定。

1、串行工作方式0(同步移位寄存器工作方式)

以RXD(P3.0)端作為數(shù)據(jù)移位的輸入/輸出端,以TXD(P3.1)端輸出移位脈沖。移位數(shù)據(jù)的發(fā)送和接收以8位為一幀,不設(shè)起始位和停止位,無論輸入/輸出,均低位在前高位在后。其幀格式為:???D0D1D2D3D4D5D6D7???方式0可將串行輸入輸出數(shù)據(jù)轉(zhuǎn)換成并行輸入輸出數(shù)據(jù)。三、串行通信工作方式數(shù)據(jù)發(fā)送

將數(shù)據(jù)寫入發(fā)送緩沖器SBUF后,TXD端輸出移位脈沖,串行口把SBUF中的數(shù)據(jù)依次由低到高以fosc/12波特率從RXD端輸出,一幀數(shù)據(jù)發(fā)送完畢后硬件置發(fā)送中斷標(biāo)志位TI為1。若要再次發(fā)送數(shù)據(jù),必須用指令將TI清零。發(fā)送:

SBUF=0x55; //啟動發(fā)送

while(!TI); //等待發(fā)送結(jié)束TI=0; //清發(fā)送中斷標(biāo)志

……接收:

while(1){ //不停地等待接收

if(RI){ RI=0; //清接收中斷標(biāo)志 ACC=SBUF; //將接收數(shù)據(jù)送累加器A …… } }在RI=0的條件下,用指令置REN=1即可開始串行接收。TXD端輸出移位脈沖,數(shù)據(jù)依次由低到高以fosc/12波特率經(jīng)RXD端接收到SBUF中,一幀數(shù)據(jù)接收完成后硬件置接收中斷標(biāo)志位RI為1。若要再次接收一幀數(shù)據(jù),應(yīng)該用指令MOVA,SBUF將上一幀數(shù)據(jù)取走,并用指令將RI清零。用方式0通信時(shí),多用查詢方式。

數(shù)據(jù)接收接收:while(RI)

;等待接收

{ RI=0; ;清接收中斷標(biāo)志 table=SBUF ;將接收數(shù)據(jù)送累加器A …… }接收:

while(1){ //不停地等待接收

if(RI){ ACC=SBUF; //將接收數(shù)據(jù)送累加器A RI=0; //清接收中斷標(biāo)志 …… } }復(fù)位時(shí),SCON被清零,因此,工作方式的缺省值為方式0。接收前,務(wù)必先置位REN=1方允許接收數(shù)據(jù)。在RI=0的條件下,用指令置REN=1即可開始串行接收。TXD端輸出移位脈沖,數(shù)據(jù)依次由低到高以fosc/12波特率經(jīng)RXD端接收到SBUF中,一幀數(shù)據(jù)接收完成后硬件置接收中斷標(biāo)志位RI為1。若要再次接收一幀數(shù)據(jù),應(yīng)該用指令MOVA,SBUF將上一幀數(shù)據(jù)取走,并用指令將RI清零。用方式0通信時(shí),多用查詢方式。

數(shù)據(jù)接收2、串行工作方式1起始D0D1D2D3D4D5D6D7停止1)數(shù)據(jù)發(fā)送

發(fā)送時(shí)只要將數(shù)據(jù)寫入SBUF,在串行口由硬件自動加入起始位和停止位,構(gòu)成一個(gè)完整的幀格式。然后在移位脈沖的作用下,由TXD端串行輸出。一幀數(shù)據(jù)發(fā)送完畢后硬件自動置TI=1。再次發(fā)送數(shù)據(jù)前,用指令將TI清零。方式1是一幀10位的異步串行通信方式,包括1個(gè)起始位,8個(gè)數(shù)據(jù)位和一個(gè)停止位。波特率可變,由定時(shí)器/計(jì)數(shù)器T1的溢出率和SMOD(PCON.7)決定。其幀格式如下:2)數(shù)據(jù)接收接收時(shí),在REN=1前提下,當(dāng)采樣到RXD從1向0跳變狀態(tài)時(shí),就認(rèn)定為已接收到起始位。隨后在移位脈沖的控制下,數(shù)據(jù)從RXD端輸入。

在方式1接收數(shù)據(jù)時(shí),必須同時(shí)滿足以下兩個(gè)條件:RI=0,SM2=0或接收到的停止位=1。若有任一條件不滿足,則所接收的數(shù)據(jù)幀就會丟失。在滿足上述接收條件時(shí),接收到的8位數(shù)據(jù)位進(jìn)入接收緩沖器SBUF,停止位送入RB8,并置中斷標(biāo)志位RI=1。再次接收數(shù)據(jù)前,需用指令將RI清零。3、串行工作方式2起始位數(shù)據(jù)位停止位0D0D1D2D3D4D5D6D7TB811)數(shù)據(jù)發(fā)送:

發(fā)送數(shù)據(jù)前,由指令將TB8置位或清零,將數(shù)據(jù)寫入發(fā)送緩沖器SBUF后,在串行口由硬件自動加入起始位和停止位來構(gòu)成完整的字符幀,并在移位脈沖的作用下將其通過TXD端向外串行發(fā)送,發(fā)送完畢后硬件自動置TI=1。在工作方式2下,波特率只有二種:SMOD=0時(shí),波特率為f0SC/64;SMOD=1時(shí),波特率為f0SC/32。

串行接口工作方式2為9位異步通信接口,傳送一幀數(shù)據(jù)有11位。1位起始位(低電平信號),8位數(shù)據(jù)位(先低位后高位),1位可編程位,1位停止位(高電平信號)。其格式如下:2)數(shù)據(jù)接收

在REN=1的條件下,串行口采樣RXD端,當(dāng)檢測到有從1向0的狀態(tài)跳變的起始位時(shí),便在移位脈沖的控制下,從RXD端接收數(shù)據(jù)。在方式2的接收中,也必須同時(shí)滿足以下兩個(gè)條件:RI=0,SM2=0或接收到的停止位為1。若有任一條件不滿足,則所接收的數(shù)據(jù)幀就會被丟失。在滿足上述接收條件時(shí),接收到的8位數(shù)據(jù)位進(jìn)入接收緩沖器SBUF中,第9位數(shù)據(jù)位送入RB8中,并置RI=1。再次接收數(shù)據(jù)時(shí),需用指令將RI清零。

串行接口工作方式3也是9位異步通信接口,傳送一幀數(shù)據(jù)有11位。1位起始位(低電平信號),8位數(shù)據(jù)位(先低位后高位),1位可編程位,1位停止位(高電平信號)。但波特率與工作方式1相同,由定時(shí)器/計(jì)數(shù)器T1的溢出率和SMOD(PCON.7)決定。也就是說方式3的工作機(jī)制與方式2相同,波特率與方式1相同,它是方式1和方式2的綜合運(yùn)用。4、串行工作方式3串行口四種工作方式的比較四種工作方式的區(qū)別主要表現(xiàn)在幀格式及波特率兩個(gè)方面。表6-2四種工作方式比較工作方式幀格式波特率方式08位全是數(shù)據(jù)位,沒有起始位、停止位固定,即每個(gè)機(jī)器周期傳送一位數(shù)據(jù)方式110位,其中1位起始位,8位數(shù)據(jù)位,1位停止位不固定,取決于T1溢出率和SMOD方式211位,其中1位起始位,9位數(shù)據(jù)位,1位停止位固定,即2SMOD×fosc/64方式3同方式2同方式1單片機(jī)串行通信系統(tǒng)串行通信接口概述1串行通信工作方式3串行通信波特率設(shè)置4串行通信應(yīng)用舉例5串行通信波特率設(shè)置4串行通信接口2

MCS-51單片機(jī)的串行通信波特率是隨著串行口的工作方式不同而改變的。波特率除了與單片機(jī)系統(tǒng)的振蕩頻率fosc、電源控制寄存器PCON的SMOD位有關(guān)外,還與定時(shí)器T1的設(shè)置狀態(tài)有關(guān)。只有正確進(jìn)行波特率的設(shè)置才能使單片機(jī)正常工作。四、串行通信波特率設(shè)置1、四種工作方式下的波特率計(jì)算工作方式0:波特率固定不變,它與系統(tǒng)的振蕩頻率fosc的大小有關(guān),其值為fosc/12。工作方式1和方式3:波特率是可變的, 波特率=(2SMOD/32)×定時(shí)器T1的溢出率工作方式2:波特率有兩種固定值。當(dāng)SM0D=1時(shí),波特率=(2SM0D/64)×fosc=fosc/32當(dāng)SM0D=0時(shí),波特率=(2SM0D/64)×fosc=fosc/64定時(shí)器的溢出率是指在1秒鐘內(nèi)產(chǎn)生溢出的次數(shù)。 定時(shí)器的溢出率與定時(shí)器的工作模式有關(guān),可以改變單片機(jī)內(nèi)部的特殊功能寄存器TMOD中的T1方式字段中的M1、M0二位,即TM0D.5和TMOD.4位,選擇定時(shí)器工作的四種工作模式中的一種進(jìn)行工作。在串行口通信中,一般都使定時(shí)器T1工作在模式2。

在工作方式2時(shí),T1為8位自動裝入定時(shí)器,由TL1進(jìn)行計(jì)數(shù)。因此定時(shí)器T1的溢出與系統(tǒng)的時(shí)鐘頻率fosc有關(guān),也與每次溢出后TL1重新裝載值N有關(guān)。N值越大,定時(shí)器T1的溢出率也就越大。當(dāng)N=0FFH時(shí),每隔12個(gè)時(shí)鐘周期,定時(shí)器T1就溢出一次。一般情況下,定時(shí)器T1溢出一次所需要的時(shí)間為:

(28—N)×12×?xí)r鐘周期=(28—N)×12/fosc(秒)2、定時(shí)器T1的溢出率計(jì)算定時(shí)器每秒所溢出的次數(shù)為:

定時(shí)器T1的溢出率=fosc/(12×(28—N))。式中的N為時(shí)間常數(shù),即TH1的預(yù)置初值。例如:系統(tǒng)的時(shí)鐘頻率fosc=12MHz,TH1的預(yù)置值N=E6H,定時(shí)器T1在工作模式2下的溢出率為:

12×106/12/(28—E6H)≈38461.5次/秒。若SMOD=1,串口傳輸數(shù)據(jù)的波特率是多少?設(shè)波特率用B表示,計(jì)數(shù)初值用N表示,則波特率B與T1計(jì)數(shù)初值N之間的關(guān)系可以表示為:【例6-1】若fosc=6MHz,波特率為2400波特,設(shè)SMOD=1,則定時(shí)/計(jì)數(shù)器T1的計(jì)數(shù)初值為多少?

N=256-2SMOD×fosc/(2400×32×12)=242.98≈243=F3H將N=F3H帶入公式,反過來求B=2403.846,誤差率0.16%若fosc=11.0592MHz,波特率為2400,設(shè)SMOD=0,則N=F4H。3、波特率與計(jì)數(shù)初值的關(guān)系解決的方法只有調(diào)整單片機(jī)的時(shí)鐘頻率fosc,通常采用11.0592MHz晶振。常用波特率及其產(chǎn)生條件

常用波特率通常按規(guī)范取1200、2400、4800、9600、…,若采用晶振12MHz和6MHz,則計(jì)算得出的T1定時(shí)初值將不是一個(gè)整數(shù),產(chǎn)生波特率誤差而影響串行通信的同步性能。財(cái)富是一時(shí)的朋友,而朋友才是永久的財(cái)富;每個(gè)人都有五個(gè)不停旋轉(zhuǎn)的球:工作、健康、家庭、朋友和靈魂。工作是橡膠球,掉下去會彈起來;而另外四個(gè)都是玻璃球,掉了-----就碎了。單片機(jī)串行通信系統(tǒng)串行通信接口概述1串行通信工作方式3串行通信波特率設(shè)置4串行通信應(yīng)用舉例5串行通信應(yīng)用舉例5串行通信接口2五、串行通信應(yīng)用舉例1、串行口的編程串行口需初始化后,才能完成數(shù)據(jù)的輸入、輸出。初始化過程如下:按選定串行口的工作方式設(shè)定SCON的SM0、SM1;對于工作方式2或3,應(yīng)根據(jù)需要在TB8中寫入待發(fā)送的第9位數(shù)據(jù);若選定的工作方式不是模式0,還需設(shè)定接收/發(fā)送的波特率;設(shè)定SMOD的狀態(tài),以控制波特率是否加倍;若選定工作方式1或3,則應(yīng)對定時(shí)器T1進(jìn)行初始化操作,即設(shè)定T1的工作方式和初值,以設(shè)定其溢出率。電路如圖6-8所示,試編制程序輸入K1~K8的狀態(tài)信息,并存入內(nèi)RAM40H。圖6-8串行通訊方式0應(yīng)用。圖6-8串行通訊方式0應(yīng)用2、工作方式0應(yīng)用舉例

4014是一個(gè)并入串出轉(zhuǎn)換芯片,Q8端為串行數(shù)據(jù)輸出端,CLK為時(shí)鐘脈沖輸入端,P/S為操作控制端,P/S=1:鎖存并行輸入數(shù)據(jù),P/S=0:允許串行移位操作。要完成題目的要求,應(yīng)先將開關(guān)狀態(tài)鎖存,然后串行輸入單片機(jī)。

C語言參考程序:#include<reg51.h>sbitP1_0=P1^0;//定義P1.0口voidmain()//主函數(shù){ unsignedchari; P1_0=1;//鎖存并行輸入數(shù)據(jù) P1_0=0;//允許串行移位操作 SCON=0x00;//設(shè)定串行口為方式0 while(!RI){;}//等待接收完畢 i=SBUF;//存入K1~K8狀態(tài)數(shù)據(jù) RI=0;//清中斷標(biāo)志 ……}【例3】設(shè)甲乙兩機(jī)以串行方式1進(jìn)行數(shù)據(jù)傳送,fosc=11.0592MHz,波特率為1200b/s。甲機(jī)發(fā)送的16個(gè)字節(jié)數(shù)據(jù)存在內(nèi)RAM40H~4FH單元中,乙機(jī)接收后存在內(nèi)RAM50H為首的地址區(qū)域中。

T1初值=解: 串行方式1波特率取決于T1溢出率(設(shè)SMOD=0), 計(jì)算T1定時(shí)初值 3、工作方式1應(yīng)用舉例=232=E8HC語言參考程序:甲機(jī)發(fā)送程序:#include<reg51.h>//包含特殊功能寄存器庫#defineucharunsignedcharucharidatabuf[16];//要發(fā)送的16個(gè)數(shù)據(jù)uchari;//變量i,循環(huán)發(fā)送的次數(shù)記錄voidmain()//主函數(shù){ TMOD=0x20;//置T1定時(shí)器工作方式2 TL1=0xE8;TH1=0xE8;//置T1計(jì)數(shù)初值 PCON=0x00;//置SMOD=0 SCON=0x40;//工作在方式1,不允許接收 TR1=1;//T1啟動計(jì)數(shù) for(i=0;i<16;i++){//循環(huán)發(fā)送16個(gè)數(shù)據(jù) SBUF=buf[i];//發(fā)送數(shù)據(jù)

while(TI==0);//等待發(fā)送完畢 TI=0;//發(fā)送完后清中斷標(biāo)志 }}乙機(jī)接收程序如下:

#include<reg51.h>//包含特殊功能寄存器庫#defineucharunsignedchar//定義uchar為無符號字符數(shù)據(jù)類型uchari;//變量i,作為接收數(shù)據(jù)的次數(shù)記錄。voidmain()//主函數(shù){ unsignedchar*P;P=0x50;//定義指針變量并賦初值 TMOD=0x20;//置T1定時(shí)器工作方式2 TL1=0xE8;TH1=0xE8;//置T1計(jì)數(shù)初值 PCON=0x00;//置SMOD=0 SCON=0x50;//工作在方式1,允許接收 TR1=1;//T1啟動計(jì)數(shù) for(i=0;i<16;i++){//循環(huán)體(連續(xù)接收16個(gè)數(shù)據(jù)) while(RI==0);//等待接收數(shù)據(jù) *P=SBUF;//接收數(shù)據(jù),送指定單元 RI=0;//收完一個(gè)字節(jié)的數(shù)據(jù)后清中斷標(biāo)志

P++;//地址加1,準(zhǔn)備存放下一個(gè)數(shù)據(jù) }}【例6-4】設(shè)計(jì)一個(gè)串行方式2收發(fā)程序,設(shè)SMOD=1,波特率固定為fosc/32。甲機(jī)串行發(fā)送片內(nèi)RAM50H-5FH中的數(shù)據(jù),第9位數(shù)據(jù)作為奇偶校驗(yàn)位,接到接收方核對正確的回復(fù)信號(用FFH表示)后,再發(fā)送下一字節(jié)數(shù)據(jù),否則再重發(fā)一遍。乙機(jī)將接收到的數(shù)據(jù)存在首址為40H的內(nèi)RAM中,并核對奇偶校驗(yàn)位。核對正確,發(fā)出回復(fù)信號FFH;發(fā)現(xiàn)錯(cuò)誤,發(fā)出回復(fù)信號00H,并等待重新接收。4、工作方式2應(yīng)用舉例C語言參考程序:甲機(jī)發(fā)送:

#include<reg51.h>//包含特殊功能寄存器庫#defineucharunsignedchar//定義uchar為無符號字符數(shù)據(jù)類型ucharidatabuf[16];//發(fā)送的16個(gè)數(shù)據(jù)存放在buf數(shù)組中.uchardat;uchari;sbitP=PSW^0;//定義PSW^0位變量voidmain()//主函數(shù){ PCON=0x80;//置SMOD=1 SCON=0x90;//串行口工作在方式2,允許接收 do{ //循環(huán)體 for(i=0;i<16;i++){//連續(xù)發(fā)送16個(gè)數(shù)據(jù) dat=buf[i];//取要發(fā)送的數(shù)據(jù)

ACC=dat;//送累加器A,得奇偶位 TB8=P;//奇偶位作為第9位輸出

SBUF=dat;//發(fā)送數(shù)據(jù)

while(TI==0);//等待發(fā)送完畢

TI=0;//發(fā)送完后清中斷標(biāo)志

while(RI==0);//等待乙機(jī)應(yīng)答 if(SBUF!=0xff)break;//出錯(cuò)則跳出循環(huán)

RI=0;//收到后

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論