版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)第七章串行口第1頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月1串行傳送方式和并行傳送方式1)串行傳送方式:?jiǎn)挝恍畔⒌母魑灰晃灰晃坏匕错樞蛞来蝹魉?。串行傳送方式的物理信道為串行總線。串行數(shù)據(jù)傳送方式的特點(diǎn)是成本低,但速度慢。2)并行傳送方式:?jiǎn)挝恍畔ⅲㄍ橐粋€(gè)字節(jié))的各位數(shù)據(jù)同時(shí)傳送。所傳送數(shù)據(jù)的各位同時(shí)發(fā)送或接收。
第2頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月2單工方式、半雙工方式、全雙工方式第3頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⒊異步傳輸和同步傳輸 ⑴異步傳輸
以字符為單位進(jìn)行數(shù)據(jù)傳輸,每個(gè)字符都用起始位、停止位包裝起來(lái),組成一幀數(shù)據(jù)。收、發(fā)方采用各自獨(dú)立的時(shí)鐘,發(fā)送和接收沒(méi)有同步時(shí)鐘同步,傳送過(guò)程中字符之間允許有長(zhǎng)短不一的間隔。傳送中數(shù)據(jù)幀之間的空閑時(shí)間插入停止位。當(dāng)接收設(shè)備檢測(cè)到數(shù)據(jù)信號(hào)線有起始位到來(lái),才開(kāi)始接收數(shù)據(jù)。異步通信的傳送速率較慢,但硬件的要求較低。
第4頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
⑵同步傳輸發(fā)送和接收同步進(jìn)行,從而實(shí)現(xiàn)數(shù)據(jù)的不間斷傳送。為了實(shí)現(xiàn)同步,發(fā)送設(shè)備與接收設(shè)備之間不僅連有數(shù)據(jù)線,還連接同步時(shí)鐘信號(hào)線,由主設(shè)備發(fā)出同步時(shí)鐘信號(hào),以達(dá)到發(fā)送與接收同步進(jìn)行。每個(gè)數(shù)據(jù)塊的開(kāi)頭以同步字符加以指示,使發(fā)送與接收雙方取得同步。數(shù)據(jù)塊的各字符之間沒(méi)有起始位和停止位,由于同步通信可以實(shí)現(xiàn)數(shù)據(jù)的不間斷傳送,所以傳送速率較快,但硬件要求能夠發(fā)送同步時(shí)鐘信號(hào)和能夠發(fā)送、檢測(cè)同步字符等功能。第5頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
⒋波特率
波特率表示每秒鐘傳送離散事件的個(gè)數(shù),或每秒信號(hào)電平的變化次數(shù),單位為band(波特)。比特率指每秒傳送二進(jìn)制數(shù)據(jù)的位數(shù),單位為比特/秒(bit/s或bps)。二進(jìn)制的情況下,波特率與比特率數(shù)值相等。 假若數(shù)據(jù)傳送速率為120字符/s,而每一個(gè)字符幀已規(guī)定為10個(gè)數(shù)據(jù)位,則傳輸速率為120×10=1200bit/s,即波特率為1200。每一位數(shù)據(jù)傳送的時(shí)間為波特率的倒數(shù):T=1÷1200=0.833ms第6頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
7.280C51串行口及控制
7.2.180C51串行口結(jié)構(gòu)
80C51中的串行口是一個(gè)全雙工的異步串行通信接口,它可作UART(通用異步接收和發(fā)送器)用,也可作同步移位寄存器用。 所謂全雙工的異步串行通信接口,是說(shuō)該接口可以同時(shí)進(jìn)行接收和發(fā)送數(shù)據(jù)。
80C51串行口基本結(jié)構(gòu)如圖7–1所示。主要由兩大部分組成。
第7頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
⒈波特率發(fā)生器:
它提供串行口的時(shí)鐘信號(hào):發(fā)送時(shí)鐘和接收時(shí)鐘
⒉串行口的內(nèi)部
⑴串行數(shù)據(jù)緩沖寄存器SBUF
有接收緩沖器SBUF和發(fā)送緩沖器SBUF,在物理上是隔離的,但是占用同一個(gè)地址(99H)。 ⑵串行口控制寄存器SCON ⑶串行數(shù)據(jù)輸入/輸出引腳通常,接收方式下,串行數(shù)據(jù)從RXD(P3.0)引腳輸入通常,發(fā)送方式下,串行數(shù)據(jù)通過(guò)TXD(P3.1)引腳輸出。
第8頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
⑷串行口控制邏輯
·接收來(lái)自波特率發(fā)生器的時(shí)鐘信號(hào)——TXCLOCK(發(fā)送時(shí)鐘)和RXCLOCK(接收時(shí)鐘)
·控制內(nèi)部的輸入移位寄存器將外部的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù);
·控制內(nèi)部的輸出移位寄存器將內(nèi)部的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)輸出;
·控制串行中斷(RI和TI)。
第9頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月7.2.280C51串行口控制
⒈串行口狀態(tài)控制寄存器SCON
字節(jié)地址為98H,位地址為98H~9FH。其格式如下:位地址
9FH
9EH9DH9CH
9BH9AH99H
98H位功能SM0SM1SM2REN
TB8
RB8
TI
RI第10頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⑴SM0,SM1——串行口工作方式選擇位。功能見(jiàn)表7–1⑵SM2(SCON.5)—方式2、3中的多機(jī)通信控制位。方式0時(shí),SM2=0。方式1時(shí),若SM2=l,只有接收到有效的停止位,接收中斷RI才置1。第11頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月方式2和方式3時(shí),
1)若SM2=1,則只有當(dāng)接收到的第9位數(shù)據(jù)(RB8)為1時(shí),才將接收到數(shù)據(jù)送入緩沖器SBUF中,并把RI置1、同時(shí)向CPU申請(qǐng)中斷;如果接收到的第9位數(shù)據(jù)(RB8)為0,RI置0,將接收到的數(shù)據(jù)丟棄。
2)當(dāng)SM2=0時(shí),則不論接收到的笫9位數(shù)據(jù)是0或1,都將接收的數(shù)據(jù)裝入SBUF中,并申請(qǐng)中斷。第12頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⑶REN——允許串行接收位。REN=1時(shí),允許串行接收;REN=0時(shí),禁止串行接收。用軟件置位/清除。⑷TB8——方式2和方式3中要發(fā)送的第9位數(shù)據(jù)。 在通信協(xié)議中,常規(guī)定TB8作為奇偶校驗(yàn)位。在80C51多機(jī)通信中,TB8=0用來(lái)表示數(shù)據(jù)幀;TB8=1表示是地址幀。 用軟件置位/清除。第13頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⑸RB8(SCON.2)——方式2和方式3中接收到的第9位數(shù)據(jù)。方式1中接收到的是停止位。方式0中不使用這一位。
⑹TI(SCON.1)——發(fā)送中斷標(biāo)志位。方式0中,在發(fā)送第8位末尾置位;在其它方式時(shí),在發(fā)送停止位開(kāi)始時(shí)設(shè)置。由硬件置位,用軟件清除。⑺RI(SCON.0)——接收中斷標(biāo)志位。 方式0中,在接收第8位末尾置位;在其它方式時(shí),在接收停止位中間設(shè)置。 由硬件置位,用軟件清除。第14頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⒉電源控制寄存器PCON
其中最高位SMOD與串行口控制有關(guān),其它位與掉電方式有關(guān)。其格式如下:
D7
D6
D5
D4
D3
D2
D1
D0SMOD———
GF1
GF0
PDIDL
SMOD(PCON.7)——串行通信波特率系數(shù)控制位。當(dāng)SMOD=1時(shí),使波特率加倍。復(fù)位后,SMOD=0。
第15頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⒊串行數(shù)據(jù)寄存器SBUF
包含在物理上是隔離的兩個(gè)8位寄存器:發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器,它們共用一個(gè)地址——99H。讀SBUF(MOV A,SBUF),訪問(wèn)接收數(shù)據(jù)寄存器;寫SBUF(MOVSBUF,A),訪問(wèn)發(fā)送數(shù)據(jù)寄存器。
第16頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月7.3串行口的工作方式
在串行口控制寄存器SCON中,SM0和SM1位決定串行口的工作方式。80C51串行口共有四種工作方式。
第17頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月7.3.1串行口方式0—同步移位寄存器方式
當(dāng)SM0=0、SM1=0時(shí),串行口選擇方式0。這種工作方式實(shí)質(zhì)上是一種同步移位寄器方式。
·數(shù)據(jù)傳輸波特率固定為(1/12)fosc。
·由RXD(P3.0)引腳輸入或輸出數(shù)據(jù),
·由TXD(P3.1)引腳輸出同步移位時(shí)鐘。
·接收/發(fā)送的是8位數(shù)據(jù),傳輸時(shí)低位在前。第18頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⑴發(fā)送當(dāng)執(zhí)行任何一條寫SBUF的指令(MOVSBUF,A)時(shí),就啟動(dòng)串行數(shù)據(jù)的發(fā)送。串行口以fosc/12的波特率將要發(fā)送的8位數(shù)據(jù)由RXD(P3.0)引腳串行移位輸出;移位脈沖由TXD(P3.l)輸出。每個(gè)移位時(shí)鐘對(duì)應(yīng)一個(gè)輸出的數(shù)據(jù)位。
8位數(shù)據(jù)發(fā)送完畢,使發(fā)送中斷標(biāo)志TI置位,申請(qǐng)中斷。至此,完成了一幀數(shù)據(jù)發(fā)送的全過(guò)程。若CPU響應(yīng)中斷,則執(zhí)行從0023H開(kāi)始的串行口發(fā)送中斷服務(wù)程序。
第19頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⑵接收 當(dāng)軟件設(shè)置REN=1且RI位清除時(shí),就會(huì)啟動(dòng)一次接收過(guò)程。TXD引腳輸出移位脈沖。同時(shí)由RXD引腳以fosc/12的波特率接收輸入信號(hào)。當(dāng)接收到8位數(shù)據(jù)時(shí),將數(shù)據(jù)送入接收緩沖器SBUF,并置位SCON中的RI,發(fā)出中斷申請(qǐng),通知CPU取走數(shù)據(jù)。完成一幀數(shù)據(jù)的接收過(guò)程。若CPU響應(yīng)中斷,則執(zhí)行從0023H開(kāi)始的串行口接收中斷服務(wù)程序第20頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月7.3.2串行口方式1
當(dāng)SM0=0、SM1=l時(shí),串行口選擇方式1?!?shù)據(jù)傳輸波特率由T1的溢出決定,可用程序設(shè)定。 ·由TXD(P3.1)引腳發(fā)送數(shù)據(jù)?!び蒖XD(P3.0)引腳接收數(shù)據(jù)。
·發(fā)送或接收一幀信息為10位:1位起始位(0)、8位數(shù)據(jù)位(低位在前)和l位停止位(1)。幀格式如下:起始D0
D1D2D3D4D5D6D7停止第21頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⑴發(fā)送:
當(dāng)執(zhí)行任何一條寫SBUF的指令時(shí),就啟動(dòng)串行數(shù)據(jù)的發(fā)送。數(shù)據(jù)以指定的波特率從TXD引腳輸出(1位起始位,8位數(shù)據(jù)位,1位停止位),發(fā)送完一幀數(shù)據(jù)后把TI置1,申請(qǐng)中斷,通知CPU發(fā)送下一幀數(shù)據(jù)。在未發(fā)送下一幀數(shù)據(jù)時(shí),TXD引腳始終為高電平。第22頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⑵接收 當(dāng)REN=1且清除RI后,若在RXD引腳上檢測(cè)到一個(gè)1到0的負(fù)跳變,開(kāi)始接收一幀數(shù)據(jù)。串行口以指定的波特率,從RXD引腳串行輸入8位數(shù)據(jù)(低位在前)、1位停止位。
當(dāng)數(shù)據(jù)接收完畢,必須滿足一定條件時(shí),才能將8位數(shù)據(jù)送入接收緩沖器SBUF保存,并置位RI,申請(qǐng)中斷;否則不可恢復(fù)地丟失接收到的數(shù)據(jù),也不置位RI。
第23頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月兩個(gè)條件均滿足時(shí),將數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和停止位送入RB8,將RI置1。
·RI=0即上一幀數(shù)據(jù)接收完成時(shí)發(fā)出的中斷請(qǐng)求已被響應(yīng),SBUF中數(shù)據(jù)已被取走?!?/p>
SM2=0或接收到的停止位=1。若以上兩個(gè)條件有一個(gè)不滿足,將不可恢復(fù)地丟失接收到的這一幀信息。
第24頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月7.3.3串行口方式2和3—9位UART
當(dāng)SM0=1、SM1=0時(shí),串行口選擇方式2;當(dāng)SM1=1、SM0=1時(shí),串行口選擇方式3。
·由TXD(P3.l)引腳發(fā)送數(shù)據(jù)。
·由RXD(P3.0)引腳接收數(shù)據(jù)。
·發(fā)送或接收一幀信息為11位:1位起始位(0)、8位數(shù)據(jù)位(低位在前)、1位可編程位和1位停止位(l)。發(fā)送時(shí)TB8提供第9位數(shù)據(jù),TB8可軟件設(shè)置為1或0,接收時(shí)第9位數(shù)據(jù)進(jìn)入SCON寄存器的RB8位。
第25頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月幀格式如下:
起始D0D1D2D3D4D5D6D7D8
停止⑴發(fā)送 發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置TB8,然后將要發(fā)送的數(shù)據(jù)寫入SBUF,就啟動(dòng)串行數(shù)據(jù)的發(fā)送。發(fā)送移位寄存器將數(shù)據(jù)由低位到高位順序輸出至
TXD引腳。發(fā)送完一幀數(shù)據(jù)后,TI置位?!し绞?的波特率是固定的,為振蕩器頻率的1/32或1/64。方式3的波特率和方式1相同,由定時(shí)器/計(jì)數(shù)器的溢出率決定。第26頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月⑵接收 當(dāng)REN=l且清除RI后,若在RXD引腳上檢測(cè)到一個(gè)l到0的跳變,立即啟動(dòng)一次接收。當(dāng)以下兩個(gè)條件都滿足時(shí):
·RI=0;
·SM2=0或接收到的第9位=1。
把接收到的9位數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和RB8,而且置位RI。若以上兩個(gè)條件中有一個(gè)不滿足,將不可恢復(fù)地丟失接收到的這一幀信息。
第27頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月7.4多處理機(jī)通信方式
主從式多機(jī)通信系統(tǒng)如圖7-6
:當(dāng)從機(jī)發(fā)送、主機(jī)接收時(shí),可以很容易實(shí)現(xiàn)一對(duì)一通信;當(dāng)主機(jī)發(fā)送、從機(jī)接收時(shí),必須通過(guò)相應(yīng)的控制,才能實(shí)現(xiàn)一對(duì)一通信;當(dāng)兩個(gè)從機(jī)之間相互通信時(shí),必須通過(guò)主機(jī)完成。下面分析當(dāng)主機(jī)發(fā)送、從機(jī)接收時(shí),如何實(shí)現(xiàn)一對(duì)一通信。首先,通信前作一些約定,給每個(gè)從機(jī)一個(gè)固定的地址,主機(jī)發(fā)送時(shí),先發(fā)送要通信的從機(jī)地址,再發(fā)送數(shù)據(jù)。設(shè)計(jì)中采用方式2或3的11位異步通信方式,第9位作為標(biāo)志位,1—地址信息;0—數(shù)據(jù)信息。第28頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月多機(jī)通信過(guò)程如下:1初始化階段:設(shè)置所有從機(jī)為方式2或3接收,并設(shè)置SM2=1,允許串行口中斷。2通信階段1)主機(jī)發(fā)送要通信的從機(jī)地址,第9位為1;由于所有的從機(jī)的SM2=1,則所有從機(jī)都接收,并置位RI=12)所有從機(jī)響應(yīng)中斷,在中斷服務(wù)程序中,首先判斷接收的地址是否為本機(jī)地址,若是,則設(shè)置本機(jī)的SM2=0,中斷返回;若不是,則不做任何處理,直接中斷返回。第29頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月3)主機(jī)發(fā)出數(shù)據(jù)信息,第9位為0,只有SM2=0的從機(jī)接收數(shù)據(jù),并置位RI=1,而SM2=1的從機(jī)對(duì)接收的數(shù)據(jù)不予理睬4)通信的從機(jī)通過(guò)中斷方式,將接收的數(shù)據(jù)保存。通信結(jié)束恢復(fù)所有從機(jī)的SM2=1。第30頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月7.5串行口的應(yīng)用
7.5.1串行口的波特率及波特率計(jì)算
串行口的波特率發(fā)生器如圖7-7所示?!し绞?時(shí)的波特率由振蕩器的頻率(fosc)所確定:波特率為fosc/12?!し绞?時(shí)的波特率由振蕩器的頻率(fosc)和SMOD位(PCON.7)所確定:
·方式1和3時(shí)的波特率由定時(shí)器的溢出率和SMOD(PCON.7)所確定。
第31頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
(1)用定時(shí)器T1(=0)產(chǎn)生波特率
定時(shí)器T1的溢出率與它的工作方式有關(guān):
·定時(shí)器Tl工作于方式2:此時(shí)定時(shí)器T1工作于一個(gè)8位可重裝的方式,用TL1計(jì)數(shù),用TH1裝初值。
第32頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月第33頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月7.5.2方式0的編程和應(yīng)用
應(yīng)用方式0可以擴(kuò)展并行I/O口。
例:
使用74LS164的并行輸出端接8只發(fā)光二極管,利用它的串入并出功能,把發(fā)光二極管從左向右依次點(diǎn)亮,并不斷循環(huán)之。電路連接圖見(jiàn)圖7-8。
第34頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
MOV SCON,#00H ;設(shè)串行口為方式0, CLR ES ;禁止串行口中斷
MOV A,#80H ;先顯示最左邊發(fā)光二極管LED: MOV SBUF,A ;串行輸出
JNB TI,$ ;輸出等待
CLR TI ACALL DELAY ;輪顯間隔
RR A ;發(fā)光右移
AJMP LED ;循環(huán)第35頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月7.5.3方式1的編程和應(yīng)用
例:試編寫雙機(jī)通信程序。甲、乙雙機(jī)均為串行口方式1,并以定時(shí)器T1的方式2為波特率發(fā)生器,波特率為2400。 波特率的計(jì)算:這里使用6MHz晶振,以T1的方式2制定波特率。此時(shí)T1相當(dāng)于一個(gè)8位的計(jì)數(shù)器。 計(jì)算定時(shí)器T1的計(jì)數(shù)初值:
2SMODfosc1
波特率= ×
×
3212 28-TH1
TH1=28-(2SMOD×fosc)÷(波特率×32×12) =256-(20×6×106)÷(2400×32×12) =256-6.5=249.5=FAH
第36頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
⑴甲機(jī)發(fā)送: 將以片內(nèi)RAM的78H及77H的內(nèi)容為首地址、以76H及75H的內(nèi)容減1為末地址的數(shù)據(jù)塊內(nèi)容,通過(guò)串行口傳至乙機(jī)。 例:(78H)=20H ;首地址高位 (77H)=00H
(76H)=20H ;末地址高位 (75H)=20H
即要求程序?qū)⑵釸AM的2000H~20lFH中的內(nèi)容輸出到串行口。對(duì)數(shù)據(jù)塊首、末地址的傳送以查詢方式進(jìn)行,而數(shù)據(jù)的傳送以中斷方式進(jìn)行。
第37頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
ORG 0000H SJMP TRANS ORG 0023H ;串行口中斷入口
AJMPSINT ORG 0030HTRANS:MOVTMOD,#20H;置T1為定時(shí)器方式2MOV TL1,#0FAH;置T1定時(shí)常數(shù)
MOVTH1,#0FAH
第38頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
SETBEA ;允許中斷
CLRES ;關(guān)串行口中斷
MOV PCON,#00H ;波特率不倍增
MOVSCON,#40H ;置串行口方式1
第39頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月MOVSBUF,78H;輸出首地址WAIT1:JNBTI,WAITI;查詢等待發(fā)送結(jié)束
CLR TI
MOV SBUF,77HWAIT2:JNBTI,WAIT2;查詢等待發(fā)送結(jié)束
CLRTI MOVSBUF,76H ;輸出末地址WAIT3:JNBTI,WAIT3 CLRTI MOVSBUF,75HWAIT4:JNBTI,WAIT4 CLRTI
第40頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月 SETBES ;允許串行口中斷
MOVDPH,78H ;輸出數(shù)據(jù)塊中第1個(gè)數(shù)據(jù)
MOVDPL,77H MOVXA,@DPTR CLRTI MOVSBUF,A SJMP $ ;中斷等待
第41頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月ORG 0200H ;串行口中斷服務(wù)程序SINT:PUSH DPL ;保護(hù)現(xiàn)場(chǎng)
PUSH DPH PUSH A
INC 77H ;地址加1 MOV A,77H JNZ JP1 INC 78HJP1:MOVA,78H;判數(shù)據(jù)傳送是否結(jié)束,
CJNEA,76H,END1;未結(jié)束則轉(zhuǎn)END1MOVA,77HCJNEA,75H,END1
第42頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月CLRES;結(jié)束,關(guān)串行口中斷POPA ;恢復(fù)現(xiàn)場(chǎng)POPDPHPOPDPLRETI第43頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月;數(shù)據(jù)輸出未結(jié)束,則繼續(xù)發(fā)送
END1:MOVDPH,78H MOVDPL,77H MOVXA,@DPTR CLRTI MOVSBUF,A RETI第44頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
⑵乙機(jī)接收
乙機(jī)通過(guò)RXD引腳接收甲機(jī)發(fā)來(lái)的數(shù)據(jù),接收波特率與甲機(jī)一樣。接收的第1、2字節(jié)是數(shù)據(jù)塊的首地址,第3、4字節(jié)是數(shù)據(jù)塊的末地址減1,第5字節(jié)開(kāi)始是數(shù)據(jù),接收到的數(shù)據(jù)依次存入數(shù)據(jù)塊首地址開(kāi)始的存儲(chǔ)器中。
ORG 0000H SJMP RECEIVE ;乙機(jī)接收
ORG 0023H AJMP RSINT ;串行口中斷入口 第45頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
ORG 0030HRECEIVE:MOVTMOD,#20H
;設(shè)T1為定時(shí)器方式2 MOV TL1,#0FAH ;置T1定時(shí)常數(shù)
MOVTH1,#0FAH
SETBEA ;允許中斷
CLRES ;關(guān)串行口中斷
CLRTI ;清發(fā)送中斷
MOVSCON,#50H ;置串行口方式1、接收
CLR20H ;置地址標(biāo)志(20H=0,為 ;地址;20H=1,為數(shù)據(jù))
第46頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
MOV70H,#78H SJMP $ ;中斷等待
ORG 0200HRSINT:PUSHDPL;保護(hù)現(xiàn)場(chǎng)
PUSHDPH PUSHACC MOVA,R0 PUSHACC JB20H,DATA;判別接收的是地址還是數(shù)據(jù),是數(shù) ;據(jù),轉(zhuǎn)移
第47頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
MOVR0,70H ;是地址,分別送入78H~75H中去
MOVA,SBUFMOV@R0,A DEC70H CLRRI MOVA,#74H CJNEA,70H,RETURN;是地址,轉(zhuǎn)結(jié)束
SETB20H ;地址已接收完,置接收數(shù)據(jù)標(biāo)志
第48頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月RETURN:POPACC;恢復(fù)現(xiàn)場(chǎng)
MOVR0,A POPACC POPDPH POPDPL RETI
DATA:MOVDPH,78H ;接收數(shù)據(jù)
MOVDPL,77H
第49頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月 MOVA,SBUF MOVX@DPTR,A ;將數(shù)據(jù)送入片外RAM CLRRI INC77H ;地址加1 MOVA,77H JNZDATA1 INC78H
第50頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月DATA1∶MOVA,76H CJNZA,78H,RETURN MOV A,75H CJNEA,77H,RETURN CLRES ;結(jié)束,關(guān)串行口中斷
AJMPRETURN第51頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
例:通過(guò)串行口發(fā)送帶奇偶校驗(yàn)位的數(shù)據(jù)塊
ASCII碼由7位組成,其最高位可作為奇偶校驗(yàn)位用。數(shù)據(jù)塊通過(guò)串行口發(fā)送和接收,采用8位異步通信,波特率為1200,已知fosc=11.0592MHz。 從內(nèi)部RAM單元20H~3FH中取出ASCII碼加上奇偶校驗(yàn)位之后發(fā)出。設(shè)串行口為方式1,定時(shí)器/計(jì)數(shù)器T1為方式2作為串行口的波特率發(fā)生器?!逽MOD=0 ∴TH1=232=E8H第52頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
ORG 0000H MOV TMOD,#20H ;設(shè)T1為方式2 MOV TL1,#0E8H ;T1定時(shí)常數(shù)MOV TH1,#0E8H SETB TR1 ;啟動(dòng)T1 MOV SCON,#01000000B ;設(shè)串行口為方式1 MOV R0,#20H ;設(shè)發(fā)送數(shù)據(jù)區(qū)首址
MOV R7,#32 ;發(fā)送32個(gè)ASCII碼數(shù)據(jù)第53頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月LOOP:MOVA,@R0 ;取ASCII碼數(shù)據(jù)
ACALLSP-OUT ;調(diào)用串行口發(fā)送子程序
INC R0 ;未發(fā)送完,則繼續(xù)
DJNZ R7,LOOP
…
第54頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月串行口發(fā)送子程序SP-OUT:MOVC,P ;設(shè)奇校驗(yàn)位 CPL C MOV ACC.7,C MOV SBUF,A ;帶校驗(yàn)位發(fā)送
JNB TI,$ ;發(fā)送等待
CLR TI RET
第55頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
例通過(guò)串行口接收帶奇偶校驗(yàn)位的數(shù)據(jù)塊。把接收到的32個(gè)字節(jié)數(shù)據(jù)存放到20H~3FH中,波特率仍為1200,若奇校驗(yàn)出錯(cuò),將進(jìn)位標(biāo)志C置1。
ORG 0000H MOV TMOD,#20H ;設(shè)T1為定時(shí)器方式2 MOV TL1,#0E8H ;設(shè)T1時(shí)間常數(shù)
MOV TH1,#0E8H SETB TR1 ;啟動(dòng)T1 MOV R0,#20H ;接收緩沖區(qū)首址
MOV R7,#32 ;接收字節(jié)計(jì)數(shù)器第56頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月LOOP:ACALL SP-IN ;調(diào)用帶奇校驗(yàn)的串行口接 ;收子程序
JC ERROR ;校驗(yàn)錯(cuò),轉(zhuǎn)出錯(cuò)處理
MOV @R0,A ;存入
INC R0 DJNZ R7,LOOP ;未接收完,則繼續(xù)
ERROR:… ;校驗(yàn)錯(cuò),處理第57頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月SP-IN:MOVSCON,#01010000B ;設(shè)串行口為方式1,啟動(dòng)接收
JNB RI,$ CLR RI MOV A,SBUF ;接收一個(gè)字節(jié)
MOV C,P ;檢查奇校驗(yàn)位,若出錯(cuò),C=1 CPL C ANL A,#7FH ;去掉校驗(yàn)位后的ASCII碼數(shù)據(jù)
RET第58頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月7.5.4方式2和3的編程和應(yīng)用
方式2接收/發(fā)送的一幀信息是11位:第0位是起始位(0);第1~8位是數(shù)據(jù)位;第9位是程控位,可由用戶置TB8決定;第10位是停止位。
· 方式2的波特率為: 波特率=振蕩器頻率/n其中:當(dāng)SMOD=0時(shí),n=64; 當(dāng)SMOD=l時(shí),n=32。由于方式2和方式3基本一樣,僅波特率設(shè)置不同,所以具體使用方法見(jiàn)方式3的編程。
第59頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月例:試編寫串行接口以工作方式2發(fā)送數(shù)據(jù)的中斷服務(wù)程序。
串行接口發(fā)送數(shù)據(jù)時(shí)由TXD端輸出;工作方式2發(fā)送的一幀信息為11位:1位起始位,8位數(shù)據(jù)位,1位可編程為1或0的第9位(可用作奇偶校驗(yàn)位或數(shù)據(jù)/地址標(biāo)志位)和1位停止位。在串行數(shù)據(jù)傳送時(shí),設(shè)工作寄存器區(qū)2的R0作為發(fā)送數(shù)據(jù)區(qū)的地址指示器。奇偶校驗(yàn)位的發(fā)送是在將發(fā)送數(shù)據(jù)寫入發(fā)送緩沖器SBUF之前,先將奇偶標(biāo)志寫入SCON的TB8位。程序設(shè)計(jì)如下:
第60頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
ORG 0023H AJMP SPINT
SPINT:CLR0AFH ;關(guān)中斷(EA) PUSHPSW ;保護(hù)現(xiàn)場(chǎng)
PUSHACC SETB0AFH ;開(kāi)中斷
SETBPSW.4 ;切換寄存器工作組
CLRTI ;清除發(fā)送中斷請(qǐng)求標(biāo)志
MOVA,@R0 ;取數(shù)據(jù),置奇偶標(biāo)志位
第61頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
MOVC,P ;奇偶標(biāo)志位P送TB8 MOVTB8,C MOVSBUF,A ;數(shù)據(jù)寫入發(fā)送緩沖器,啟動(dòng)發(fā)送
INCR0 ;數(shù)據(jù)地址指針加1 CLR 0AFH ;恢復(fù)現(xiàn)場(chǎng)
POP ACC POP PSW SETB0AFH CLRPSW.4 ;切換寄存器工作組
RETI ;中斷返回
第62頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月例:方式3和方式1的不同在于接收/發(fā)送的信息位數(shù)不同,而與方式2的不同僅在于波特率設(shè)置不同。 這里以雙機(jī)通信為例。串行口以方式3進(jìn)行接收和發(fā)送,以T1為波特率發(fā)生器,選擇定時(shí)器方式2。
程序首先發(fā)送數(shù)據(jù)存放地址,而地址的高位存放在78H中,地址的低位存放在77H中;然后發(fā)送00H,01H,02H,…,F(xiàn)EH,共255個(gè)數(shù)據(jù)以后結(jié)束。
第63頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
甲機(jī)的發(fā)送程序:
ORG 0023H CLRTI RETITRANSFER:MOVTMOD,#20H ;置定時(shí)器T1為定時(shí) ;方式2 MOVTL1,#0F0H ;置T1定時(shí)常數(shù)
MOVTH1,#0F0H SETBEA ;允許中斷
CLRES ;禁止串行口中斷
CLRET1 ;禁止定時(shí)器T1中斷
第64頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
MOVSCON,#0E0H ;置串行口方式3 SETBTB8 ;表示發(fā)送的是地址
MOVSBUF,78H ;發(fā)送地址
JNBTI,$
CLRTI MOVSBUF,77H JNB TI,$ CLR TI MOVIE,#90H ;允許串行口中斷
CLRSM2 ;以后發(fā)送的是數(shù)據(jù)
第65頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月 MOVA,#00H ;發(fā)送數(shù)據(jù)
LOOP:MOV SBUF,A INC A JNB TI,$ CLR TI CJNZA,#0FFH,LOOP ;判是否結(jié)束
CLRES ;禁止串行口中斷
CLREA ;關(guān)中斷HERE:AJMPHERE第66頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
乙機(jī)接收程序:把接收到的頭兩個(gè)字節(jié)作為存放數(shù)據(jù)的首地址,再接收到的255個(gè)字節(jié)的數(shù)據(jù)存放入相應(yīng)的單元中。
ORG 0023H AJMP SINT ;串行口中斷入口RECEIVE:MOVTL1,#0F0H;置定時(shí)常數(shù)
MOVTH1,#0F0H MOVTMOD,#20H;置定時(shí)方式2 SETBES ;允許串行口中斷
CLRET1 ;禁止定時(shí)器T1中斷
SETBEA ;開(kāi)中斷
MOVSCON,#0F0H;置串行口方式3接收第67頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
MOVR0,#0FEH ;數(shù)據(jù)個(gè)數(shù)
RWAIT:AJMPRWAIT ORG 1000H SINT:MOVC,SM2 JNCPD+2 ;輸入是否為地址
INCR0 NOP MOVA,R0 JZPD MOVDPH,SBUF ;輸入的是高位地址
AJMPPD+1第68頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月PD:
MOVDPL,SBUF ;輸入的是低位地址
CLRSM2 ;下一次輸入是數(shù)據(jù)PD+l:CLR RI RETIPD+2: MOVA,SBUF ;是數(shù)據(jù)
MOVX@DPTR,A INCDPTR CLRRI CJNZA,#0FEH,RETURN;判是否結(jié)束
CLRES;結(jié)束,關(guān)中斷RETURN:RETI第69頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
例:多機(jī)通信 在集散式分布系統(tǒng)中,往往采用一臺(tái)主機(jī)和多臺(tái)從機(jī)。系統(tǒng)連接圖請(qǐng)參考圖7-6。主機(jī)串行幀的第9數(shù)據(jù)位為1,表示地址幀;若為0,表示命令/數(shù)據(jù)幀。 多機(jī)通信過(guò)程簡(jiǎn)述如下: ①所有從機(jī)的SM2=1,只響應(yīng)主機(jī)的地址幀。 ②主機(jī)發(fā)送地址幀, ③所有從機(jī)接收到地址幀后,均中斷各自CPU,并與本從機(jī)地址比較。 ④被尋址的從機(jī),清其SM2,其余從機(jī)SM2仍為1,對(duì)主機(jī)發(fā)出的命令/數(shù)據(jù)幀不予理睬。
⑤
主機(jī)與被尋址的從機(jī)進(jìn)行命令或數(shù)據(jù)的傳送。通信結(jié)束后,該從機(jī)又重設(shè)SM2=1。
第70頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月本例只規(guī)定以下幾條: ①系統(tǒng)中允許接有255臺(tái)從機(jī),它們的地址分別為00H—FEH。②地址FFH是對(duì)所有從機(jī)都起作用的一條控制命令:命令各從機(jī)恢復(fù)SM2=1的狀態(tài)。 ③主機(jī)發(fā)送的控制命令代碼為:
00H–要求從機(jī)接收數(shù)據(jù)塊
01H–要求從機(jī)發(fā)送數(shù)據(jù)塊 其它–非法命令 ④數(shù)據(jù)塊長(zhǎng)度、16個(gè)字節(jié)
⑤
從機(jī)狀態(tài)字格式為:
D7D6D5D4D3D2D1D0ERR00000TRDYRRDY第71頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月其中:若ERR=1,從機(jī)接收到非法命令 若TRDY=1,從機(jī)發(fā)送準(zhǔn)備就緒 若RRDY=1,從機(jī)接收準(zhǔn)備就緒
主機(jī)在接收或發(fā)送完一個(gè)數(shù)據(jù)塊后可返回主程序,完成其它任務(wù)。從機(jī)部分以串行口中斷服務(wù)程序的方式給出。若從機(jī)未作好接收或發(fā)送數(shù)據(jù)的準(zhǔn)備,就從中斷程序中返回,在主程序中作好準(zhǔn)備。系統(tǒng)采用T1作為波特率發(fā)生器,主機(jī)和從機(jī)中對(duì)定時(shí)器初始化的程序從略。圖7-9是多機(jī)串行通信主機(jī)程序的流程圖,圖7-10是多機(jī)串行通信從機(jī)程序的流程圖。
第72頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
⑴主機(jī)串行通信子程序
入口參數(shù): (R0)——主機(jī)發(fā)送的數(shù)據(jù)塊首址
(R1)——主機(jī)接收的數(shù)據(jù)塊首址
(R2)——被尋址從機(jī)地址
(R3)——主機(jī)命令
(R4)一一數(shù)據(jù)塊長(zhǎng)度MSIO:MOVSCON,#0D8H;設(shè)串行口模式3,允許接收, ;TB8置1MSIO1:MOVA,R2 ;發(fā)送地址幀
MOV SBUF,A JNB RI,$ ;等待從機(jī)應(yīng)答
CLRRI第73頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
MOV A,SBUF XRL A,R2 ;判應(yīng)答地址是否相符
JZ MSIO3MSIO2:MOVSBUF,#0FFH ;重新聯(lián)絡(luò)
SETBTB8 SJMP MSIO_1MSIO3:CLRTB8 ;地址符合,準(zhǔn)備送命令
MOV SBUF,R3 ;送命令
JNB RI,$ ;等待從機(jī)應(yīng)答
CLR RI MOVA,SBUF第74頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
JNB ACC.7,MSI04 ;判命令是否出錯(cuò)
SJMP MSIO2 ;若從機(jī)接收命令出錯(cuò),重 ;新聯(lián)絡(luò)MSIO4:CJNER3,#00,MSIO_5;不是要求從機(jī)接收數(shù)據(jù), ;則跳轉(zhuǎn)
JNB ACC.0,MSIO2 ;從機(jī)接收數(shù)據(jù)準(zhǔn)備就緒否?LP–TX:MOVSBUF,@R0 ;主機(jī)發(fā)送數(shù)據(jù)塊
JNB TI,$ ;等待發(fā)送完一幀
CLRTI INC R0 DJNZR4,LP–TX RET第75頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月MSIO5:JNBACC.1,MSIO2 ;從機(jī)發(fā)送數(shù)據(jù)準(zhǔn)備就緒否?LP–RX:JNBRI,$ ;主機(jī)接收數(shù)據(jù)塊
CLRRI MOV A,SBUF MOV @R1,A INC R1 DJNZR4,LP–RX RET第76頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
若主機(jī)向10號(hào)從機(jī)發(fā)送數(shù)據(jù)塊,數(shù)據(jù)塊放置在內(nèi)部RAM區(qū)的40H~4FH單元中,則調(diào)用上述子程序MSIO的方法是:
MOV R2,#0AH MOV R3,#0 MOV R4,#10H MOV R0,#40H LCALLMSIO
第77頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
⑵從機(jī)串行通信子程序
從機(jī)的串行通信采用中斷控制起動(dòng)方式。在串行通信起動(dòng)后,仍采用查詢方式來(lái)接收或發(fā)送數(shù)據(jù)塊。從機(jī)的程序中還包括定時(shí)器1和串行口的初始化以及開(kāi)中斷程序。 程序中用F0作發(fā)送準(zhǔn)備就緒標(biāo)志,PSW.l作接收準(zhǔn)備就緒標(biāo)志。背景程序的其它有關(guān)部分如下
MOV SP,#1FH ;設(shè)置堆棧指針
MOV SCON,#0F0H ;置串行口方式3,SM2=1, ;允許接收
MOV 08H,#40H ;接收緩沖區(qū)起址送1區(qū)R0 MOV 09H,#50H ;發(fā)送緩沖區(qū)起址送1區(qū)R1 MOV 0AH,#10H ;發(fā)送或接收字節(jié)數(shù)送1區(qū)R2 … … … 第78頁(yè),課件共95頁(yè),創(chuàng)作于2023年2月
ORG 0023H AJMP SSIO ;串行口中斷服務(wù)程序入口
SSIO:CLRRI PUSHA ;保護(hù)現(xiàn)場(chǎng)
PUSHPSW
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版米廠水稻種植與電商平臺(tái)合作銷售合同4篇
- 2025年度智慧城市基礎(chǔ)設(shè)施承包安裝服務(wù)協(xié)議4篇
- 2025年度房地產(chǎn)交易會(huì)參展商服務(wù)保障協(xié)議3篇
- 2025版1A13365國(guó)際貿(mào)易實(shí)務(wù)操作手冊(cè)授權(quán)合同3篇
- 2024-2030年中國(guó)耐磨陶瓷涂料行業(yè)市場(chǎng)深度分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 二零二五版海外科技園區(qū)勞務(wù)派遣與研發(fā)支持協(xié)議2篇
- 2025年房屋代持合同樣本與資產(chǎn)評(píng)估協(xié)議4篇
- 個(gè)性化私人借貸合同(2024版)版B版
- 2025版國(guó)家級(jí)屠宰場(chǎng)高品質(zhì)牛肉供貨合同范本下載3篇
- 2025年離職后研發(fā)成果保密及競(jìng)業(yè)限制協(xié)議
- 中國(guó)成人暴發(fā)性心肌炎診斷和治療指南(2023版)解讀
- 新生兒低血糖課件
- 自動(dòng)上下料機(jī)械手的設(shè)計(jì)研究
- 電化學(xué)儲(chǔ)能電站安全規(guī)程
- 幼兒園學(xué)習(xí)使用人民幣教案教案
- 2023年浙江省紹興市中考科學(xué)真題(解析版)
- 語(yǔ)言學(xué)概論全套教學(xué)課件
- 大數(shù)據(jù)與人工智能概論
- 《史記》上冊(cè)注音版
- 2018年湖北省武漢市中考數(shù)學(xué)試卷含解析
- 《腎臟的結(jié)構(gòu)和功能》課件
評(píng)論
0/150
提交評(píng)論