串行口工作方式_第1頁
串行口工作方式_第2頁
串行口工作方式_第3頁
串行口工作方式_第4頁
串行口工作方式_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

關(guān)于串行口工作方式12.12.20221第一頁,共七十五頁,2022年,8月28日MCS-51單片機內(nèi)部集成了一個全雙工異步通信串行口單片機的串行通信使用的是異步串行通信1、并行通信和串行通信1010P1.0P1.1P1.2P1.3RXDTXD單片機外設(shè)1外設(shè)201011010P1.701017.0概述第二頁,共七十五頁,2022年,8月28日異步方式:雙方只有數(shù)據(jù)線而沒有時鐘線。雙方都以自己的時鐘源控制發(fā)送和接收的速率,發(fā)送端和接收端使用的不是同一個時鐘。以字符為單位進行數(shù)據(jù)傳送,每一個字符均按固定的字符格式傳送,又被稱為幀。2、異步方式和同步方式注意:由于通訊雙方系統(tǒng)時鐘往往不同,所以在異步通信中,要想保證通信的成功必須保證兩點: ①通信雙方必須保持相同的傳送、接收速率(波特率); ②雙方必須遵守相同的數(shù)據(jù)格式(字符幀)。優(yōu)點:是不需要傳送同步脈沖,可靠性高,所需設(shè)備簡單;缺點:是傳輸速率低(增加起始位和停止位)。第三頁,共七十五頁,2022年,8月28日同步方式:在物理結(jié)構(gòu)上,通信雙方除了通信的數(shù)據(jù)線外還增加了一個通信用的“時鐘傳輸線clock”。由主控方提供時鐘信號clock。由于有了時鐘信號來“同步”發(fā)送或接收操作,所以被傳送的數(shù)據(jù)不再使用“起始位”和“停止位”,因而提高了傳送速度。因此同步通信常被用于系統(tǒng)內(nèi)部各芯片之間的接口設(shè)計。由于同步通信多了一條“時鐘線”,因此不太適合遠距離的通信。優(yōu)點是數(shù)據(jù)傳輸速率較高;缺點是要求發(fā)送時鐘和接收時鐘保持嚴格同步。主控方被控方dataclock主控方被控方dataclock

主控方發(fā)送數(shù)據(jù)主控方接收數(shù)據(jù)

第四頁,共七十五頁,2022年,8月28日3、串行通信工作方式單工

A

發(fā)

B

收半雙工

A

發(fā)

B

收發(fā)廣播電臺收音機對講機全雙工

A

發(fā)收

B

發(fā)電話機第五頁,共七十五頁,2022年,8月28日例:異步串行通信的數(shù)據(jù)傳送的速率是120字符/秒,而每個字符規(guī)定包含10位(1個起始位、8個數(shù)據(jù)位、1個停止位)數(shù)字,則傳輸波特率為:

120字符/秒×10位/字符=1200位/秒=1200bps4、波特率用于表征串行通信速率的參數(shù)稱為“波特率”;波特率是指每秒鐘傳送二進制的位數(shù);

(發(fā)送一個二進制位的時間的倒數(shù))

波特率的單位為:位/秒(bit/s);波特(Baud)。波特率取值范圍一般為:0~115200bit/s。影響波特率的主要因素取決于傳輸線的分布電容、通信電平標準和傳送距離;第六頁,共七十五頁,2022年,8月28日TTL電平、RS-232、RS-485等通信標準。5、串行通信的電平標準

TTL電平(0~5V):1.5米以內(nèi)。RS-232標準(+12V~-12V):15米之內(nèi)。RS-485標準(差分輸入輸出):1200米以上。

TTL電平:邏輯1:5V邏輯0:0VRS-232標準:邏輯1:-3~-15V邏輯0:+3V~+15VRS-485標準:邏輯1:+(2~6)V邏輯0:-(2~6)V第七頁,共七十五頁,2022年,8月28日MCS-51單片機的異步串行通訊應(yīng)用示意圖MCS-51TXD(甲)RXDRXDMCS-51TXD(乙)單片機甲、乙之間近距離的直接通訊RS-232或485RS-232或485單片機甲乙兩地之間遠距離通訊MCS-51TXD(甲)RXDRXDMCS-51TXD(乙)RS-232PC機COM1,COM2單片機與PC機之間的數(shù)據(jù)通訊MCS-51TXDRXD第八頁,共七十五頁,2022年,8月28日①異步串行UART、同步串行USRT總線接口;②SPI(Microwire)總線接口---同步外設(shè)接口(SPI)是由摩托羅拉公司開發(fā)全雙工同步串行總線。

③I2C總線接口------由PHILIPS公司開發(fā)的兩線式串行總線。

④1-Wire總線接口----是Maxim子公司達拉斯半導(dǎo)體的專利技術(shù),采用單一信號線,

⑤CAN總線接口---1986年德國電氣商博世公司開發(fā)出面向汽車的CAN通信協(xié)議

;⑥USB總線接口---是由Intel、Compaq、Digital、IBM、

Microsoft、NEC、NorthernTelecom等7家世界著名的計算機和通信公司共同推出。6、當前嵌入式系統(tǒng)流行的串行接口第九頁,共七十五頁,2022年,8月28日4種工作方式如何設(shè)置波特率如何設(shè)置7.1串行口的結(jié)構(gòu)一、串行口的結(jié)構(gòu)圖:CPU如何查知已發(fā)完或已接收完數(shù)據(jù)如何發(fā)送和接收數(shù)據(jù)第十頁,共七十五頁,2022年,8月28日12.12.202211第十一頁,共七十五頁,2022年,8月28日自然優(yōu)先級矢量地址自然優(yōu)先級矢量地址高級中斷請求PCPC斷請求低級中SCON中斷標志IPPX01PT0110PX110PS100PT10IEEX0ET0EX1ET1ESTCONIE0TF0IE1TF1TIRIRXTXT11INT10T0INT010源允許總允許優(yōu)先級硬件查詢EAP3.0P3.1P3.5P3.4P3.2P3.3IT0IT1第十二頁,共七十五頁,2022年,8月28日2、SCON:串行口控制寄存器98HSM0SM1SM2RENTB8RB8TIRI3、PCON:波特率加倍寄存器87H1、SBUF:串行發(fā)送/接收數(shù)據(jù)緩沖器

99HEA

--ESET1EX1ET0EX04、IE:中斷允許寄存器

A8HSMOD發(fā)送接收5、IP:

中斷優(yōu)先級寄存器-

--PSPT1PX1PT0PX0B8H第十三頁,共七十五頁,2022年,8月28日1、SBUF串行發(fā)送/接收數(shù)據(jù)緩沖器

99HSBUF串行發(fā)送/接收數(shù)據(jù)緩沖器是兩個獨立的物理單元,共用一個地址(99H),可同時收、發(fā)數(shù)據(jù)。指注:向發(fā)送緩沖器SBUF寫入數(shù)據(jù)即可發(fā)送數(shù)據(jù);從接收緩沖器SBUF讀出數(shù)據(jù)即可接收數(shù)據(jù)。發(fā)送SBUF接收SBUFMOVSBUF,A

;啟動一次數(shù)據(jù)發(fā)送MOVA,SBUF

;完成一次數(shù)據(jù)接收二、特殊功能寄存器第十四頁,共七十五頁,2022年,8月28日

SM2:多機通信控制位(常與RB8配合,決定是否激活RI)多機通信方式2和3中,若SM2=1且接收到的第九位數(shù)據(jù)(RB8)為1,才將接收到的前8位數(shù)據(jù)送入接收緩沖寄存器SBUF中,并置位RI產(chǎn)生中斷請求;否則丟棄前8位數(shù)據(jù)。若SM2=0,則不論第九位數(shù)據(jù)(RB8)為1還是為0,都將前8位送入接收SBUF中,并產(chǎn)生中斷請求。在方式0時,SM2必須置0。2、SCON:串行口控制寄存器98HSM0SM1SM2RENTB8RB8TIRISM0SM1方式功能說明波特率00方式0移位寄存器方式fosc/1201方式18位UART可變(由T1的溢出率決定)10方式29位UARTfosc/64或者fosc/3211方式39位UART可變第十五頁,共七十五頁,2022年,8月28日12.12.202216REN:允許接收控制位,軟件置位或清零TB8:將要發(fā)送的第九位數(shù),在執(zhí)行MOVSBUF,A指令之前要事先將TB8設(shè)定好;雙機通信作校驗位,多機通信作地址/數(shù)據(jù)標識位。RB8:方式1中放停止位,方式2、3中放接收的第九位數(shù)TI——發(fā)送中斷標志位在方式0時,發(fā)送完第8位數(shù)據(jù)后,該位由硬件置位。在其它方式下,于發(fā)送停止位之前,由硬件置位。

TI=1表示幀發(fā)送結(jié)束,其狀態(tài)既可供軟件查詢使用,也可請求中斷。TI由軟件清“0”。RI——接收中斷標志位在方式0時,接收完第8位數(shù)據(jù)后,該位由硬件置位。在其它方式下,接收到停止位之前,該位硬件置位。

RI=1表示幀接收結(jié)束,其狀態(tài)既可供軟件查詢使用,也可請求中斷。RI由軟件清“0”。第十六頁,共七十五頁,2022年,8月28日SMOD3、PCON:

波特率加倍寄存器87H它的D7位SMOD為串行口波特率控制位,可由軟件置位或清零。若SMOD=1,則使工作在方式1、2、3時的波特率加倍。系統(tǒng)復(fù)位時默認為SMOD=0。第十七頁,共七十五頁,2022年,8月28日(1)當CPU執(zhí)行:MOVSBUF,A

指令后,便發(fā)送一幀數(shù)據(jù)。1、利用發(fā)送標志TI(SCON.1)控制數(shù)據(jù)的發(fā)送操作思考(1)CPU如何發(fā)送數(shù)據(jù)?(2)CPU如何知道已發(fā)送完一幀數(shù)據(jù)?方案一:使用查詢的方式對TI進行檢測:

JNB TI,$

;如果TI≠1則等待

CLRTI

;清楚標志位

MOVSBUF,A

;TI=1時發(fā)送下一個數(shù)據(jù)方案二:如果系統(tǒng)中斷是開放的,則TI=1會自動引發(fā)中斷。

CLRTI

;清楚標志位

MOVSBUF,A

;在中斷程序中發(fā)送下一個數(shù)據(jù);(2)當完成一幀數(shù)據(jù)的發(fā)送后,TI=1,有兩種方案可以知道已發(fā)完一幀數(shù)據(jù)。三、接收和發(fā)送操作第十八頁,共七十五頁,2022年,8月28日2、利用接收標志RI(SCON.0)控制數(shù)據(jù)的接收操作(1)當SUBF從RXD引腳接收完一個完整的數(shù)據(jù)幀時RI=1思考(1)CPU如何知道已接收完一幀數(shù)據(jù)?(2)CPU如何處理接收的數(shù)據(jù)?(2)CPU可以使用兩種方案來處理接收的數(shù)據(jù):方案一:CPU采用查詢RI來控制數(shù)據(jù)的讀取。

JNBRI,$

;如果RI≠1則等待

CLRRI

;清楚標志位

MOVA,SBUF

;RI=1時,取SBUF中數(shù)據(jù)送A。方案二:如果中斷是開放的,則RI=1時會自動引發(fā)中斷。

CLRRI

MOVA,SBUF

;中斷方式接收數(shù)據(jù);

第十九頁,共七十五頁,2022年,8月28日RXD:接收、發(fā)送的是8位數(shù)據(jù)端,低位在前,波特率固定為fosc/12,接收/發(fā)送完,置位RI/TI,(SM2=0)

TXD:輸出同步移位脈沖

當數(shù)據(jù)寫入SBUF后,數(shù)據(jù)從RXD端在移位脈沖(TXD)的控制下,逐位移入74LS164,74LS164能完成數(shù)據(jù)的串并轉(zhuǎn)換。當8位數(shù)據(jù)全部移出后,TI由硬件置位,發(fā)生中斷請求。若CPU響應(yīng)中斷,則從0023H單元開始執(zhí)行串行口中斷服務(wù)程序,數(shù)據(jù)由74LS164并行輸出。

7.2串行口的工作方式一、方式0:同步移位寄存器輸入輸出方式第二十頁,共七十五頁,2022年,8月28日串行口方式0的時序思考:1、如何啟動發(fā)送過程?2、如何知道發(fā)送完畢?2、多長時間移一位?思考:1、如何啟動接收過程?2、如何知道接收完畢?2、多長時間接收一位?接收條件:

TI=0,置位REN=1發(fā)送條件:TI=0第二十一頁,共七十五頁,2022年,8月28日3、方式0的應(yīng)用:擴展并行輸入輸出口CB:MOVR7,#0AHMOVR0,#50HMOVSCON,#00HSEND1:MOVA,@R0MOVSBUF,AWAIT:JNBTI,WAIT

CLRTIINCR0DJNZR7,SEND1RET例:將以50H為首地址的10個單元中數(shù)據(jù)由串口送出。第二十二頁,共七十五頁,2022年,8月28日CB:MOVR7,#05HMOVR0,#30HRE1:MOVSCON,#10HWAIT:JNBRI,WAIT

CLRRIMOVA,SBUFMOV@R0,AINCR0DJNZR7,RE1RET例:從擴展口讀入5個數(shù)據(jù),存到內(nèi)部RAM以30H開始的單元中。第二十三頁,共七十五頁,2022年,8月28日12.12.20222424*MCS-51串行口方式0驅(qū)動數(shù)碼管

1、LED數(shù)碼管 (1)結(jié)構(gòu)

COM:顯示器位選線a~dp:顯示器段選線第二十四頁,共七十五頁,2022年,8月28日12.12.20222525

發(fā)光管驅(qū)動額定電流:10~40mA,靜態(tài)取下限。 (2)靜態(tài)顯示及其段碼 靜態(tài)顯示:利用8位鎖存功能的I/O口線驅(qū)動一個數(shù)碼管,多 個數(shù)碼管同時顯示,需增加I/O口線。 段碼形成:在COM送入低電平或高電平,然后控制個各筆 段引腳電平,即可形成相應(yīng)段碼?!纠?-4】:利用P1口并行輸出控制八段數(shù)碼管,設(shè)小數(shù)點暗,采用共陽順序、共陰順序、共陰逆序確定0~9的顯示程序為:

解:1)共陽順序顯示硬件結(jié)構(gòu)如圖:

2)共陽順序、共陰順序、共陰逆序的段碼如下:第二十五頁,共七十五頁,2022年,8月28日12.12.20222626共陽順序段碼:C0H,F(xiàn)9H,A4H,B0H,99H,92H,82H,F(xiàn)8H,80H,90H共陰順序段碼:3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH(Dp→a)共陰逆序段碼:FCH,60H,DAH,F(xiàn)2H,66H,B6H,BEH,E0H,F(xiàn)EH,F(xiàn)6H(a→Dp)第二十六頁,共七十五頁,2022年,8月28日12.12.202227272)并行輸出,循環(huán)顯示0~9秒的顯示程序:DIR: MOV R0,#0 MOV DPTR,#TABLOOP:MOV A,R0 MOVC A,@A+DPTR MOV P1,A LCALL DELAY INC R0 CJNE R0,#0AH,LOOP AJMP DIRTAB:DBC0H,F(xiàn)9H,A4H DBB0H,99H,92H DB82H,F(xiàn)8H,80H,90H第二十七頁,共七十五頁,2022年,8月28日12.12.202228282、串行口方式0驅(qū)動數(shù)碼管 (1)串行口與并行口轉(zhuǎn)換控制①

串入并出移位寄存器74LS164圖(a)②

并入串出移位寄存器74LS165圖(b)第二十八頁,共七十五頁,2022年,8月28日12.12.20222929(2)利用74LS164驅(qū)動共陰數(shù)碼管【例】:利用8031串行口控制八段數(shù)碼管,設(shè)小數(shù)點暗,采用共陰逆序,設(shè)計循環(huán)顯示0~9秒的程序。 解:1)硬件結(jié)構(gòu)圖(共陰逆序、小數(shù)點暗)

2)控制流程、程序第二十九頁,共七十五頁,2022年,8月28日12.12.20223030START:MOV SCON,#00H MOV R0, #00H CLR ES;禁止中斷

MOV DPTR, #TABLE LOOP:MOV A, R0 MOVC A, @A+DPTR CLR TI MOV SBUF, A LCALL DELAY INC R0 CJNE R0, #10, LOOP MOV R0, #00H AJMP LOOPTABLE:DB 0FCH,60H,0DAH,0F2H,66H DB0B6H,0BEH,0E0H,0FEH,0F6HORG 0100HDELAY:1秒延時程序(略)

RET第三十頁,共七十五頁,2022年,8月28日1、波特率:(2SMOD×T1的溢出率)/32,可變。

2、數(shù)據(jù)格式:一幀信息10位。D0D1D2D3D4D5D6D7停止位起始位發(fā)送D7D6D5D4D3D2D1D0起始位停止位接收送RB8當接收到數(shù)據(jù)后,必須同時滿足以下兩個條件,接收才真正有效:

REN=1,RI=0SM2=0

或接收到的停止位為1。此時,數(shù)據(jù)裝載SBUF,RI置1,停止位進入RB8。

二、方式1:波特率可變的10位異步通信方式

第三十一頁,共七十五頁,2022年,8月28日注意:何時開始接收信息?檢測到起始位的負跳變時,開始接收。第三十二頁,共七十五頁,2022年,8月28日

1、波特率:(2SMOD×fosc)/64,固定。

2、一幀信息11位。

D0D1D2D3D4D5D6D7TB8停止位起始位發(fā)送發(fā)送完數(shù)據(jù)置位TI。

TB8D7D6D5D4D3D2D1D0起始位停止位接收接收到有效數(shù)據(jù)完畢,置位RI的條件:

REN=1,RI=0且SM2=0或接收到第9位數(shù)據(jù)為1,此時,數(shù)據(jù)裝載SBUF,RI置1,第9位數(shù)據(jù)(TB8)送入

RB8。

送RB8三、方式2:固定波特率的11位異步接收/發(fā)送方式第三十三頁,共七十五頁,2022年,8月28日串行口方式2、3的時序1、波特率:(2SMOD×T1的溢出率)/32,可變,同方式1。

2、一幀信息11位。

四、方式3:可變波特率的11位異步接收/發(fā)送方式第三十四頁,共七十五頁,2022年,8月28日方式0:波特率固定為fosc/12。方式2:波特率由PCON中的選擇位SMOD來決定,可由下式表示:波特率=(2SMOD/64)×fosc

方式1和方式3:波特率是可變的,由定時器T1的溢出率控制。波特率=(2SMOD/32)×定時器T1溢出率

T1溢出率=T1計數(shù)率/產(chǎn)生溢出所需的周期

=(fosc/12)/(28TC)五、串行口的通信波特率第三十五頁,共七十五頁,2022年,8月28日例:設(shè)晶振fosc為11.0592MHz,選定定時器工作方式2,SMOD=0求:4800bps、9600bps時的初值。解:定時器方式2的初始值X的公式經(jīng)過推導(dǎo)可得到在實際應(yīng)用時,通常是先確定波特率,后根據(jù)波特率求T1定時初值.T1初值=256-2SMOD32×fosc12×波特率故:

X1=256-(11.0592×1)/(384×4800)=FAHX2=256-(11.0592×1)/(384×9600)=FDH第三十六頁,共七十五頁,2022年,8月28日7.3串行口的應(yīng)用使用串行口的步驟:1、通信雙方的硬件連接2、制定通信協(xié)議工作方式、波特率、數(shù)據(jù)格式、效驗方法等。3、主程序串行口中斷入口處理串口初始化:SCON

PCONT1工作方式及初值、IE、IP4、中斷服務(wù)程序第三十七頁,共七十五頁,2022年,8月28日一、串口方式0的應(yīng)用例:用8051串行口外接CD4094擴展8位并行輸出口,8位并行口的各位都接一個發(fā)光二極管,要求發(fā)光二極管呈流水燈狀態(tài)(輪流點亮)。

方案一:采用查詢TI決定是否發(fā)送下一幀數(shù)據(jù)方案二:采用中斷決定是否發(fā)送下一幀數(shù)據(jù)第三十八頁,共七十五頁,2022年,8月28日

RRA

CLRP1.0

SJMPOUT0 DELAY:MOVR7,#250 D1:MOVR6,#250 D2:DJNZR6,D2 DJNZR7,D1 RET END

ORG0000H START:MOVSCON,#00H MOVA,#80H

CLRP1.0

OUT0:MOVSBUF,A

OUT1:JNBTI,OUT1 CLRTI

SETBP1.0

ACALLDELAY

第三十九頁,共七十五頁,2022年,8月28日P3.0RXDP3.1TXD分析:從串口送出什么樣的數(shù)據(jù)才能顯示0?例:利用串并轉(zhuǎn)換將數(shù)字0~9輸出到LED顯示器上顯示,輸出同一個數(shù)字。

第四十頁,共七十五頁,2022年,8月28日

ORG0000HAJMPMAINORG0030HMAIN:MOVSP,#60HMOVSCON,#00H

MOVR1,#00HL1:MOVA,R1MOVDPTR,#TABMOVCA,@A+DPTR

MOVSBUF,AJNBTI,$CLRTI

MOVSBUF,AJNBTI,$CLRTICALLDELAYCJNER1,#9,L2MOVR1,#00HAJMPMAINL2:INCR1AJMPL1TAB:DB03H,9FH,25H,0DH,99H,49HDB41H,1FH,01H,09HDELAY:

END思考:不用串行口發(fā)送數(shù)據(jù),采用某一個輸出口是否也可以完成串并轉(zhuǎn)換?

第四十一頁,共七十五頁,2022年,8月28日單片機P1.0P1.1P1.2P1.3RXDTXDP3.0P3.1P1.0P1.1P1.2P1.3RXDTXD單片機P3.0P3.1例:采用串行口方式1進行雙機通信,將內(nèi)部RAM中以50H為首地址的連續(xù)10個單元內(nèi)容送出。硬件連接通信協(xié)議方式12400B/S定時器T1方式2晶振12MHZ初值:

二、串口方式1的應(yīng)用通信距離不超過1.5米第四十二頁,共七十五頁,2022年,8月28日ORG0000HAJMPMAINORG0023HAJMPSINTORG0100HMAIN:MOVTMOD,#00100000BMOVSCON,#40HMOVPCON,#00HMOVTL1,#0F4HMOVTH1,#0F4HSETBESCLRET1SETBTR1SETBEAL1:MOVR0,#50HMOVA,@R0MOVSBUF,AL2:CJNER0,#5AH,L2AJMPL1ORG0200HSINT:CLRTIINCR0MOVA,@R0MOVSBUF,ARETI

END發(fā)送程序第四十三頁,共七十五頁,2022年,8月28日ORG0000HAJMPMAINORG0023HAJMPSINTORG0100HMAIN:MOVTMOD,#00100000BMOVSCON,#50HMOVPCON,#00HMOVTL1,#0F4HMOVTH1,#0F4HSETBESCLRET1SETBTR1SETBEAMOVR0,#50HSJMP$SINT:CLRRIMOVA,SBUFMOV@R0,AINCR0RETI

END接收程序第四十四頁,共七十五頁,2022年,8月28日數(shù)據(jù)送累加器ATB8=PMOVSBUF,ATI=1?CLRTINOYES發(fā)送端程序(原始TI=0)RI=1?MOVA,SBUFPSW.P=RB8?出錯處理CLRRIYESNO接收端程序(原始RI=0)NY數(shù)據(jù)送內(nèi)存例:采用方式2奇偶校驗進行雙機通信。三、串口方式2的應(yīng)用第四十五頁,共七十五頁,2022年,8月28日例:采用方式2奇偶校驗進行雙機通信。SE:MOVA,@R0

MOVC,P

MOVTB8,C

MOVSBUF,AHE:JNBTI,HECLRTIINCR0SJMPSE數(shù)據(jù)送累加器ATB8=PMOVSBUF,ATI=1?CLRTINOYES發(fā)送端程序(原始TI=0)第四十六頁,共七十五頁,2022年,8月28日例:采用方式2奇偶校驗進行雙機通信,采用偶校驗。RE:JNBRI,REMOVA,SBUFMOVC,P

JNCL1JNBRB8,ERPAJMPL2L1:JBRB8,ERP

CLRRIL2:MOV@R0,AINCR0SJMPRERI=1?MOVA,SBUFPSW.P=RB8?出錯處理CLRRIYESNO接收端程序(原始RI=0)NY數(shù)據(jù)送內(nèi)存第四十七頁,共七十五頁,2022年,8月28日傳統(tǒng)方式的多路數(shù)據(jù)采集系統(tǒng)單片機系統(tǒng)或微型計算機系統(tǒng)傳感器1傳感器2傳感器3傳感器4傳感器N接口電路

機房或儀表室檢測現(xiàn)場四、串口方式3的應(yīng)用第四十八頁,共七十五頁,2022年,8月28日采用“智能傳感器”組成的多路數(shù)據(jù)采集系統(tǒng)主機從機N從機4從機3從機2從機1RXDTXDTXDRXD第四十九頁,共七十五頁,2022年,8月28日TI:發(fā)送中斷標志,發(fā)送一幀結(jié)束,TI=1,必須軟件清零

RI:接收中斷標志,接收一幀結(jié)束,RI=1,必須軟件清零

RB8:方式1中放停止位,方式2、3中放接收的第九位數(shù)REN:允許接收控制位,軟件置位或清零SM2:多機通信控制位(常與RB8配合,決定是否激活RI)方式3:11,11位UART,其波特率為可變,由定時器控制。多機通信SCON的設(shè)置SM0SM1SM2RENTB8RB8TIRITB8:將要發(fā)送的第九位數(shù),在執(zhí)行MOVSBUF,A指令之前要事先將TB8設(shè)定好;雙機通信作校驗位;多機通信作地址/數(shù)據(jù)標識位。第五十頁,共七十五頁,2022年,8月28日接收到有效數(shù)據(jù)完畢,置位RI的條件:(1)REN=1,RI=0

(2)且SM2=0或接收到第9位數(shù)據(jù)為1,此時,數(shù)據(jù)裝載SBUF,RI置1,第9位數(shù)據(jù)(TB8)送入

RB8。

在方式2、3中接收到的數(shù)據(jù)是否能裝載SBUF的條件:1、SM2=0:RB8=1或RB8=0

都使RI=1,接收數(shù)據(jù)送入SBUF。2、SM2=1:RB8=1,使RI=1并引發(fā)中斷,接收的數(shù)據(jù)送入SBUF。

RB8=0,信息丟失。第五十一頁,共七十五頁,2022年,8月28日多機通訊原理1、SM2=0:RB8=1或RB8=0都使RI=1,接收數(shù)據(jù)送入SBUF。2、SM2=1:RB8=1,使RI=1并引發(fā)中斷,接收的數(shù)據(jù)送入SBUF。

RB8=0,信息丟失。主機1、SM2=02、主機發(fā)出地址碼

TB8=13、主機發(fā)出數(shù)據(jù)碼或命令碼TB8=0從機1、SM2=12、從機接收到RB8=1,接收地址碼,判斷是否和本機地址碼相同,若相同,則SM2=0,若不同,則SM2=13、被尋中的從機,接收RB8=0,且SM2=0

將主機發(fā)出的數(shù)據(jù)碼或命令碼送入SBUF,

RI=1,

沒有被尋中的從機,接收RB8=0,且SM2=1,不接收任何數(shù)據(jù)。第五十二頁,共七十五頁,2022年,8月28日多機通訊中主機與從機之間的控制、狀態(tài)信息主機的控制命令:

00H主機發(fā)送,從機接收;(控制從機的操作)01H主機接收,從機發(fā)送。(命令分類)從機狀態(tài)字:從機向主機發(fā)送的用于表征從機工作狀態(tài)的信息。。ERR·····TRDYRRDY0:合法命令0:發(fā)送未就緒

0:接收未就緒1:非法命令1:發(fā)送就緒

1:接收就緒從機返回的狀態(tài)字例:串口方式3應(yīng)用編程(多機通信)第五十三頁,共七十五頁,2022年,8月28日主機程序框圖T1為定時,模式2B=1200,啟動T1設(shè)串口為模式3REN=1,SM2=0TB8=1設(shè)定程序數(shù)據(jù):R0~R5停機MCOMMU從機應(yīng)答?地址相符?發(fā)送命令字(TB8=0)從機應(yīng)答?命令正確?命令分類從機接收就緒?從機發(fā)送就緒?RET命令從機復(fù)位發(fā)FFHNNYYNNYYNNYY接收發(fā)送調(diào)用MCOMMU接收數(shù)據(jù)塊發(fā)送數(shù)據(jù)塊發(fā)送從機地址第五十四頁,共七十五頁,2022年,8月28日(一)主機程序(初始化部分) ORG2000HSTART:MOVTMOD,#20H ;定時器T1為模式2(8位自動重裝)

MOVTH1,#0F4H MOVTL1,#0F4H ;波特率為1200(設(shè)外接6MHz晶體)

SETBTR1 ;啟動T1 MOVSCON,#0D8H ;串口為模式3,REN=1,SM2=0,TB8=1 MOVPCON,#00H ;設(shè)PCON中的SMOD=0 MOVR0,#40H ;發(fā)送數(shù)據(jù)塊首地址送R0指針

MOVR1,#20H ;接收數(shù)據(jù)塊首地址送R1指針

MOVR2,#SLAVE ;被尋從機地址送R2 MOVR3,#00H/#01H ;主發(fā)、從收命令。或主收、從發(fā)命令

MOVR4,#14H ;發(fā)送數(shù)據(jù)塊長度送R4(20)計數(shù)器

MOVR5,#14H ;接收數(shù)據(jù)塊長度送R5(20)計數(shù)器

ACALLMCOM ;調(diào)用主機通訊子程序

SJMP$第五十五頁,共七十五頁,2022年,8月28日(二)主機通訊子程序(MCOM)

ORG2100HMCOM: MOVA,R2 ;取從機地址

MOVSBUF,A JNBRI,$ ;注意:為什么判斷RI而不是TI? CLRRI MOVA,SBUF ;取從機的返回地址

XRLA,R2 ;核對兩個地址

JZMTXD2 ;相符時,轉(zhuǎn)MTXD2MTXD1:MOVSBUF,#0FFH ;返回地址錯誤時,發(fā)送從機復(fù)位信號

SETBTB8 ;設(shè)定地址標志

SJMPMCOM;重發(fā)從機地址,所有從機重新判斷地址MTXD2:CLRTB8 ;將TB8=0,準備發(fā)送命令

MOVSBUF,R3 ;送出命令

JNBRI,$ ;等待從機應(yīng)答

CLRRI ;從機應(yīng)答后清標志

MOVA,SBUF ;接收從機應(yīng)答命令

JNBACC.7,MTXD3 ;命令無錯時,則命令分類

SJMPMTXD1 ;命令錯返回重新聯(lián)絡(luò)第五十六頁,共七十五頁,2022年,8月28日MTXD3:CJNER3,#00H,MRXD ;從機發(fā)送主機接收時,轉(zhuǎn)MRXD JNBACC.0,MTXD1 ;從機接收時,若從機未準備好轉(zhuǎn)回MTXD4:MOVSBUF,@R0 ;若從機準備好,則開始發(fā)送

JNBTI,$ CLRTI INCR0 DJNZR4,MTXD4 RETMRXD: JNBACC.1,MTXD1 ;從機發(fā)送未準備好返回MRXD1:JNBRI,$ ;等待接收

CLRRI MOVA,SBUF INCR1 ;接收數(shù)據(jù)區(qū)指針加一

DJNZR5,MRXD1 ;未接收完則繼續(xù)(R5接收數(shù)據(jù)計數(shù)器)

RET END ERR從機返回的狀態(tài)字TRDYRRDY0:合法命令0:發(fā)送未就緒0:接收未就緒1:非法命令1:發(fā)送就緒1:接收就緒第五十七頁,共七十五頁,2022年,8月28日從機主程序框圖T1為定時,模式2B=1200,啟動T1設(shè)串口為模式3REN=1,SM2=1TB8=1設(shè)定程序參數(shù):R0~R3開串行口中斷動態(tài)停機等待主機發(fā)送地址碼保護現(xiàn)場接收地址符合本機?向主機回送本機地址接收下一字符是命令嗎?命令分類

本機發(fā)送準備就緒?

本機接收準備就緒?發(fā)TRDY=1狀態(tài)字發(fā)RRDY=1狀態(tài)字發(fā)送數(shù)據(jù)接收數(shù)據(jù)發(fā)送完?接收完?保護現(xiàn)場返回NNYY發(fā)送命令接收命令非法命令送TRDY=0送RRDY=0NNNY中斷服務(wù)程序NY接收FFH時第五十八頁,共七十五頁,2022年,8月28日

ORG0000H LJMPSTART ORG0023H LJMP0100H ORG0040HSTART:MOVTMOD,#20H ;設(shè)定定時器T1為模式2 MOVTH1,#0F4H ;設(shè)定波特率為1200 MOVTL1,#0F4H SETBTR1 ;啟動定時器T1 MOVSCON,#0F8H ;設(shè)串口模式3,REN=1,SM2=1,TB8=1 MOVPCON,#00H MOVR0,#20H ;R0指向發(fā)送數(shù)據(jù)塊首地址

MOVR1,#40H ;R1指向接收數(shù)據(jù)塊首址

MOVR2,#14H ;R2賦發(fā)送數(shù)據(jù)塊長度

MOVR3,#14H ;R3賦接收數(shù)據(jù)塊長度

SETBEA SETBES ;開中斷

CLRRI ;清標志RI準備接收數(shù)據(jù)

SJMP$ ;等待中斷(三)從機主程序(初始化)第五十九頁,共七十五頁,2022年,8月28日(四)從機中斷服務(wù)程序

ORG0100HSINTS: CLRRI ;接收到地址后清RI PUSHACC PUSHPSW ;保護現(xiàn)場

MOVA,SBUF ;接收主機送來得從機地址

XRLA,#SLAVE ;核實從機地址

JZSRXD1 ;若是本機地址轉(zhuǎn)SRXD1RETU: POPPSW ;返回主程序

POPACC ;恢復(fù)現(xiàn)場

RETI ;中斷返回SRXD1:CLRSM2 ;SM2清零,單獨接收主機數(shù)據(jù)/命令

MOVSBUF,#SLAVE ;向主機發(fā)回從機地址

JNBRI,$ ;等待主機的命令

CLRRI ;接收到主機命令后清RI JNBRB8,SRXD2 ;若是命令(RB8=0)則轉(zhuǎn)SRXD2繼續(xù)

SJMPRETU ;接收的不是命令時(RB8=1),返回第六十頁,共七十五頁,2022年,8月28日SRXD2:MOVA,SBUF ;將接收到的命令送A CJNEA,#02H,NEXT ;命令合法(A-02H)NEXT: JCSRXD3 ;若命令合法(A<02H)則繼續(xù)

CLRTI ;命令不合法則清TI準備發(fā)回ERR=1 MOVSBUF,#80H ;發(fā)送ERR=1的狀態(tài)字

SETBSM2 ;SM2重新置位

SJMPRETU ;返回主程序SRXD3:JZSCHRX ;若A=00H既主機發(fā)送從機接收轉(zhuǎn)SCHRX JBF0,STXD ;若從機準備好(F0=1)時,轉(zhuǎn)STXD MOVSBUF,#00H ;未準備好時,向主機發(fā)回TRXD=0信息

SETBSM2 SJMPRETU ;返回主程序第六十一頁,共七十五頁,2022年,8月28日STXD: MOVSBUF,#02H ;向主機發(fā)送TRDY=1的狀態(tài)字

JNBTI,$ ;等待發(fā)送完畢

CLRTI ;發(fā)送完畢后清標志TILOOP1:MOVSBUF,@R0 ;開始發(fā)送數(shù)據(jù)塊

JNBTI,$ CLRTI INCR0 DJNZR2,LOOP1 SETBSM2 ;數(shù)據(jù)塊發(fā)送完畢

SJMPRETU ;返回主程序SCHRX:JBPSW.1,SRXD ;本機接收就緒轉(zhuǎn)SRXD(PSW.1:標志)

MOVSBUF,#00H ;接收未準備好時,向主機發(fā)RRDY=0 SETBSM2 SJMPRETU ;返回主程序第六十二頁,共七十五頁,2022年,8月28日SRXD: MOVSBUF,#01H ;向主機發(fā)送RRDY=1狀態(tài)字LOOP2:JNBRI,$ ;等待接收數(shù)據(jù)塊,開始接收數(shù)據(jù)塊

CLRRI MOV@R1,SBUF INCR1 DJNZR3,LOOP2 SETBSM2 ;數(shù)據(jù)塊接收完畢

SJMPRETU ;返回主程序

END第六十三頁,共七十五頁,2022年,8月28日五、單片機與PC機的通信

單片機與PC機通信種類:雙機通信、多機通信;

近距離通信、遠距離通信。單片機與PC機通信設(shè)計:

1、單片機程序設(shè)計

2、PC機程序設(shè)計

3、電路設(shè)計(電平轉(zhuǎn)換、接口設(shè)計)。不大于15米傳輸距離1200米第六十四頁,共七十五頁,2022年,8月28日1、單片機接收或發(fā)送程序:

ORG3000H MAIN:MOVTMOD,#20H;在11.0592MHz下,串行口波特率

MOVTH1,#0FDH ;9600bps,方式3 MOVTL1,#0FDH MOVPCON,#00H SETBTR1 MOVSCON,#0D8H LOOP:JBCRI,RECEIVE ;接收到數(shù)據(jù)后立即發(fā)出去

SJMPLOOP RECEIVE:MOVA,SBUF MOVSBUF,A SEND:JBCTI,SENDEND SJMPSEND SENDEND:SJMPLOOP END 第六十五頁,共七十五頁,2022年,8月28日2、PC機接收或發(fā)送程序:(VB

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論