版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單片機(jī)原理與應(yīng)用廈門理工學(xué)院電子與電氣工程系陳志英第七章MCS-51的串行口當(dāng)設(shè)備需要與外界其它設(shè)備進(jìn)行信息交換時(shí),需要通信接口。通信接口的性質(zhì)主要應(yīng)考慮以下3點(diǎn):電平性質(zhì)(TTL電平,CMOS電平或其他)數(shù)據(jù)格式(數(shù)據(jù)格式的不同,接口也就不同)速率(波特率)目前在工業(yè)領(lǐng)域,最常用的通信接口之一就是串行口。7.1串行通信基礎(chǔ)知識1.通信方式并行通信:是指數(shù)據(jù)的各位同時(shí)進(jìn)行傳送的通信方式。優(yōu)點(diǎn):傳輸速度快。缺點(diǎn):占用I/O線多,傳輸距離短(<30m)。串行通信:是指數(shù)據(jù)一位一位順序傳送的通信方式。優(yōu)點(diǎn):占用I/O線少(一對),傳輸距離遠(yuǎn)。缺點(diǎn):傳輸速度低。2.串行通信的分類異步通信(AsynchronousCommunication)
數(shù)據(jù)以字節(jié)為單位組成字符幀傳送。字符幀由發(fā)送端一幀一幀地發(fā)送。兩相鄰字符幀之間可以無空閑位,也可以有若干空閑位。這就是異步概念。發(fā)送端和接收端的時(shí)鐘各自獨(dú)立。實(shí)現(xiàn)雙方同步接收是靠字符幀的起始位和停止位。字符幀格式:起始位(1位)、數(shù)據(jù)位(1~8位)、奇偶校驗(yàn)位(1位)和停止位(1~2位)。優(yōu)點(diǎn):不需要傳送同步時(shí)鐘。缺點(diǎn):字符幀中包含有起始位和停止位從而降低了有效數(shù)據(jù)的傳輸速率,適用低速通信。同步通信(SynchronousCommunication)是一種連續(xù)串行傳送數(shù)據(jù)的通信方式。1個(gè)信息幀中包含有若干數(shù)據(jù)字符。發(fā)送端和接收端的時(shí)鐘必須同步。實(shí)現(xiàn)雙方同步接收是靠信息幀中同步字符。數(shù)據(jù)字符之間無間隔。信息幀格式:同步字符n、數(shù)據(jù)字符n、CRCH、CRCL優(yōu)點(diǎn):高速傳送數(shù)據(jù)。
缺點(diǎn):發(fā)送時(shí)鐘和接收時(shí)鐘保持嚴(yán)格同步,發(fā)送時(shí)鐘傳送到接收端。例:已知異步通信接口的幀格式由一個(gè)起始位7個(gè)數(shù)據(jù)位,一個(gè)奇偶校驗(yàn)位和一個(gè)停止位組成。當(dāng)該接口每分鐘傳送3600個(gè)字符時(shí),計(jì)算其傳送波特率。波特率(baudrate)
每秒鐘傳送二進(jìn)制數(shù)碼的位數(shù)(bit),單位bps(bitpersecond),bit/s。3.串行通信的制式單工方式(Simplex):只允許數(shù)據(jù)向一個(gè)方向傳送(A→B)。半雙工方式(HalfDuplex):允許數(shù)據(jù)向兩個(gè)方向中的一個(gè)方向傳送,但每次只能一個(gè)站發(fā)送。全雙工方式(FullDuplex):允許數(shù)據(jù)同時(shí)雙向傳送。7.2MCS-51串行口的結(jié)構(gòu)
內(nèi)部含有1個(gè)可編程全雙工串行通信接口,4種工作方式。1.串行口數(shù)據(jù)緩沖器SBUF8位發(fā)送/接收緩沖器SBUF,在物理上是獨(dú)立的兩個(gè),包括發(fā)送緩沖器SBUF和接收緩沖器SBUF,只是共用地址99H,這樣可以同時(shí)進(jìn)行發(fā)送、接收。發(fā)送緩沖器SBUF只能寫入不能讀出,接收緩沖器SBUF只能讀出不能寫入。 發(fā)送指令:MOVSBUF,A;寫到發(fā)送緩沖器SBUF 接收指令:MOVA,SBUF;讀出接收緩沖器SBUF 硬件管腳:發(fā)送端TXD(P3.1);接收端RXD(P3.0)2.串行口控制寄存器SCON(98H)SM0SM1SM2RENTB8RB8TIRISM0SM1方式功能波特率000同步移位寄存器,用于擴(kuò)展I/O口fOSC/1201110位UART,不能用于多機(jī)通信可變10211位UART,可用于多機(jī)通信fOSC/64或fOSC/3211311位UART,可用于多機(jī)通信可變SM2:多機(jī)通信位,主要用于方式2、3。 0—單機(jī)對單機(jī);1—多機(jī)通信。當(dāng)SM2=1時(shí),只有當(dāng)接收到第9位數(shù)據(jù)(RB8)為1時(shí),才將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI;否則,將接收到的8位數(shù)據(jù)丟棄。當(dāng)SM2=0時(shí),則不論第9位數(shù)據(jù)為0還是為1,都將8位數(shù)據(jù)裝入SBUF中,并置位RI。REN:允許/禁止接收控制位0—禁止接收;1—允許接收。TB8:發(fā)送數(shù)據(jù)第9位。RB8:接收數(shù)據(jù)第9位。TI:發(fā)送中斷標(biāo)志RI:接收中斷標(biāo)志。3.串行口電源控制寄存器PCON(87H)SMODGF1GF0PDIDLPCON主要是為CHMOS型單片機(jī)(如80C51)的電源控制而設(shè)置的專用寄存器。PCON在HMOS型單片機(jī)(如8051)中,只有設(shè)置了SMOD位。SMOD:波特率系數(shù)選擇位使方式1、2、3的波特率加倍。7.3MCS-51串行口的工作方式1.方式0(SM0=0,SM1=0)串行口的SBUF是作為同步移位寄存器,主要用途是和外部同步移位寄存器連接,擴(kuò)展1個(gè)并行口的目的??捎糜阪I盤、顯示器接口。TXD引腳:作為輸出移位脈沖線(時(shí)鐘),固定頻率=fosc/12。RXD引腳:作為串行輸入/輸出數(shù)據(jù)線(發(fā)送/接收引腳)。發(fā)送/接收數(shù)據(jù)格式:無起始位和停止位,所以不同于異步通信,數(shù)據(jù)位為8位,低位在前,高位在后。發(fā)送完8位數(shù)據(jù),即SBUF為空,硬件自動置“1”中斷標(biāo)志位TI,CPU響應(yīng)中斷后必須軟件清“0”TI。(1)輸出(發(fā)送)設(shè)置:SM0=0,SM1=0,SM2=0,REN=0。時(shí)序:應(yīng)用:擴(kuò)展一并行口,“串入并出”。/CLR=0時(shí),將74ls164輸出端Q0~Q7清零;/CLR=1時(shí),允許74ls164輸出端Q0~Q7輸出數(shù)據(jù)。這時(shí),通過移位脈沖TXD的控制,數(shù)據(jù)D0~D7從RXD端逐位移入74ls164內(nèi)的移位寄存器,并從74ls164的Q0~Q7輸出。(2)輸入(接收)設(shè)置:SM0=0,SM1=0,SM2=0,REN=1。時(shí)序:
接收完8位數(shù)據(jù),即SBUF為滿,硬件自動置“1”中斷標(biāo)志位RI,CPU響應(yīng)中斷后必須軟件清“0”RI。應(yīng)用:“并入串出”。S/L=0時(shí),Q0~Q7輸入;S/L=1時(shí),允許QH端移出數(shù)據(jù)。S/L=1時(shí),74ls165若接收到TXD端的移位脈沖,那么數(shù)據(jù)就在TXD的控制下,一位一位移出到RXD,8051就由RXD接收到數(shù)據(jù)。(3)波特率波特率=移位脈沖頻率=fosc/12,也就是一個(gè)機(jī)器周期移一位。若 fosc=6MHz,則波特率=500kbps,即2us移位一次; fosc=12MHz,則波特率=1Mbps,即1us移位一次。2.方式1(SM0=0,SM1=1.適用于點(diǎn)對點(diǎn)通信)TXD:發(fā)送引腳;RXD:接收引腳;10位UART口:起始位(1)、數(shù)據(jù)位(8)、停止位(1)。在方式1下,SM2應(yīng)設(shè)為0。(1)數(shù)據(jù)發(fā)送只需向發(fā)送緩沖器SBUF寫入數(shù)據(jù)即可,如:movsbuf,#40h。起始位、停止位由硬件自動加入。數(shù)據(jù)在移位脈沖的作用下,一位一位地由TXD串行輸出,當(dāng)發(fā)送完,即SBUF為空時(shí),置“1”TI,通知CPU可以發(fā)送下一個(gè)數(shù)據(jù)。注:當(dāng)發(fā)送多個(gè)數(shù)據(jù)時(shí),一定要等前個(gè)數(shù)據(jù)發(fā)送完,即SBUF為空時(shí),才能再向SBUF裝入下個(gè)數(shù)據(jù),即發(fā)送下個(gè)數(shù)據(jù)。
如:發(fā)送兩個(gè)字符40H和50H。 mov sbuf,#40h jnb ti,$ ;發(fā)送完否,否,等待 clr ti ;是,發(fā)送下個(gè)數(shù)據(jù) mov sbuf,#50h(2)數(shù)據(jù)接收接收時(shí),必須將REN設(shè)置為“1”。串口采樣RXD端,當(dāng)采樣到由“1”變?yōu)椤?”時(shí),串行口再采樣3次,如果有兩次以上為“0”,CPU就認(rèn)為接收到起始位,隨后在移位脈沖的控制下,把接收到的數(shù)據(jù)移入接收寄存器SBUF,當(dāng)滿足以下兩個(gè)條件:(1)RI=0,(2)收到停止位=1或SM2=0時(shí),置“1”RI,且停止位進(jìn)入RB8。(3)波特率(可變)1)T1工作于方式0機(jī)器周期T=12/fosc,x——初值T1溢出周期=(213-x)×T+執(zhí)行T1中斷服務(wù)程序機(jī)器周期數(shù)×TT1溢出周期=T×(213-x+執(zhí)行T1中斷服務(wù)程序機(jī)器周期數(shù))T1溢出率=1/T1溢出周期例:fosc=6MHzMAIN: SETB PT1 ;置T1中斷為高優(yōu)先級 SETB EA SETB ET1 ;允許T1中斷 ANL TMOD,#0FH ;置T1為定時(shí)器,方式0 MOV TL1,#XH MOV TH1,#YH SETB TR1 ;開始計(jì)數(shù) ……T1INT: CLR TR1 MOV TL1,#XH MOV TH1,#YH SETB TR1 RETI溢出周期=T×(213-x+3+1+2+2+1+1)2)T1工作在方式1溢出周期=T×(216-x+執(zhí)行T1中斷服務(wù)程序機(jī)器周期數(shù))3)T1工作在方式2溢出周期=T×(28-x+執(zhí)行T1中斷服務(wù)程序機(jī)器周期數(shù))由于方式2的初值可自動裝入,所以可以不產(chǎn)生中斷,這時(shí):溢出周期=T×(28-x)溢出率=1/溢出周期=1/T×(28-x)波特率=T1溢出率=
例已知pbs=2400bit/s,fOSC=6MHz,SMOD=1,定時(shí)器T1為方式2,求T1初值X=?,TH1=?TL1=?解:=2400X=243=F3H∴TH1=TL1=F3H由此可見,定時(shí)器T1工作在方式0、1,都必須進(jìn)行中斷服務(wù)來重裝初值,影響了溢出率的精度,而T1工作在方式2時(shí),由于是自動重裝初值,所以不需進(jìn)行中斷服務(wù)重裝初值,因此溢出率相當(dāng)準(zhǔn)確?!埓蠹叶际褂梅绞?產(chǎn)生波特率。11位UART口,起始位(1)、數(shù)據(jù)位(8)、TB8/RB8(1)、停止位(1)。其中第9位放在TB8或RB8中,發(fā)送時(shí)第9位要預(yù)先放在TB8中。適用于多機(jī)通信。固定波特率fOSC/64或fOSC/32.3.方式211位UART口,起始位(1)、數(shù)據(jù)位(8)、TB8/RB8(1)、停止位(1)。其中第9位放在TB8或RB8中,發(fā)送時(shí)第9位要預(yù)先放在TB8中。適用于多機(jī)通信。T1溢出率=可變波特率=4.方式37.4串行口的應(yīng)用編程一、發(fā)送步驟:1、選擇串行口工作方式SCON,置TI=0,REN=0。2、賦波特率PCON,T1定時(shí)器初值、工作方式,開T1。3、開串行口中斷IE、IP(若有)。4、發(fā)送數(shù)據(jù)第9位寫入TB8(若有)。5、發(fā)送數(shù)據(jù)寫入SBUF,啟動一次發(fā)送。6、查詢TI=1否?或等待中斷處理。7、清零TI,發(fā)送下一個(gè)數(shù)據(jù)。二、接收步驟:1、選擇串行口工作方式SCON,置RI=0,REN=1,SM2設(shè)置。2、賦波特率PCON,T1定時(shí)器初值、工作方式,開T1。3、開串行口中斷IE、IP(若有)。4、查詢RI=1否?或等待中斷處理。5、將SBUF中數(shù)據(jù)讀入A。6、清零RI,等待接收下一個(gè)數(shù)據(jù)。初始化根據(jù)需要設(shè)置以下寄存器:TMOD、TH1、TL1、TCON、SCON、PCON、IE、IP跟T1有關(guān)的寄存器按串行口工作方式確定是否設(shè)置。IE、IP根據(jù)選擇的編程方法確定是否設(shè)置。三、C語言編程方法說明#include<stdio.h>getchar(void)putchar(char)scanf(constchar*,...)printf(constchar*,...)——對于51單片機(jī)來說,基本輸入輸出只有串行口,因此這幾個(gè)函數(shù)都是訪問串行口的。但是,不建議大家使用這些函數(shù)操作串行口,因?yàn)榫幾g的效率太低,即編譯的匯編源程序太復(fù)雜,不夠優(yōu)化簡練。如何操作?#include<res51.h>unsignedchar*p;//發(fā)送程序main(){SCON=PCON=TMOD=TH1=TL1=IE=IP=TR1=1;SBUF=*(p++);while(1);}sci_int()interrupt4{TI=0;SBUF=*(p++);}中斷方式直接操作SBUF#include<res51.h>unsignedchar*p;//接收程序main(){SCON=PCON=TMOD=TH1=TL1=IE=IP=TR1=1;REN=1;while(1);}sci_int()interrupt4{*p=SBUF;p++;RI=0;}四、查詢方式——禁止中斷,查標(biāo)志位#include<res51.h>unsignedchar*p;//發(fā)送程序main(){chari;SCON=;PCON=;TMOD=;TH1=;TL1=;IE=;IP=;TR1=1;SBUF=*p;for(i=0;i<10;i++){while(TI==0);TI=0;SBUF=*(p+i);}}查詢標(biāo)志位五、應(yīng)用舉例
例1:電路如圖,要求使發(fā)光二極管從左向右依次點(diǎn)亮,并進(jìn)行循環(huán)操作,試編程。MAIN: MOV SCON,#00H CLR EA MOV A,#80H CLR P1.0 ;將74ls164的Q0~Q7端清零 SETB P1.0 ;允許Q0~Q7移動輸出數(shù)據(jù)TX:
MOV SBUF,A ;8051輸出數(shù)據(jù) JNB TI,$ ;等待,發(fā)送完否? LCALL DELAY ;保持點(diǎn)亮LED狀態(tài) RR A CLR TI SJMP TX例2設(shè)甲乙機(jī)以串行方式1進(jìn)行數(shù)據(jù)傳送,fosc=11.0592MHz,波特率為1200b/s。甲機(jī)發(fā)送的16個(gè)數(shù)據(jù)存在內(nèi)RAM40H~4FH單元中,乙機(jī)接收后存在內(nèi)RAM50H為首地址的區(qū)域中。解: 串行方式1波特率取決于T1溢出率(設(shè)SMOD=0), 計(jì)算T1定時(shí)初值: T1初值=256-20/32×11059200/12/1200=232=E8H甲機(jī)發(fā)送子程序:TX: MOVTMOD,#20H ;置T1定時(shí)器工作方式2 MOVTL1,#0E8H ;置T1計(jì)數(shù)初值 MOVTH1,#0E8H ;置T1計(jì)數(shù)重裝值 CLRET1 ;禁止T1中斷 SETBTR1 ;T1啟動 MOVSCON,#40H ;置串行方式1,禁止接收 MOVPCON,#00H ;置SMOD=0(SMOD不能位操作)
CLRES ;禁止串行中斷 MOVR0,#40H ;置發(fā)送數(shù)據(jù)區(qū)首地址 MOVR2,#16 ;置發(fā)送數(shù)據(jù)長度
TXR:
MOV A,@R0 ;讀一個(gè)數(shù)據(jù) MOV SBUF,A ;發(fā)送 JNB TI,$ ;等待一幀數(shù)據(jù)發(fā)送完畢 CLR TI ;清發(fā)送中斷標(biāo)志 INC R0 ;指向下一字節(jié)單元 DJNZ R2,TXR ;判16個(gè)數(shù)據(jù)發(fā)完否?未完繼續(xù) RET乙機(jī)接收子程序:RX: MOVTMOD,#20H ;置T1定時(shí)器工作方式2 MOVTL1,#0E8H ;置T1計(jì)數(shù)初值 MOVTH1,#0E8H ;置T1計(jì)數(shù)重裝值 CLRET1 ;禁止T1中斷 SETBTR1 ;T1啟動 MOVSCON,#40H ;置串行方式1,禁止接收 MOVPCON,#00H ;置SMOD=0(SMOD不能位操作) CLRES ;禁止串行中斷 MOVR0,#50H ;置接收數(shù)據(jù)區(qū)首地址 MOVR2,#16 ;置接收數(shù)據(jù)長度 SETBREN ;啟動接收RXD: JNB RI,$ ;等待一幀數(shù)據(jù)接收完畢 CLR RI ;清接收中斷標(biāo)志 MOV A,SBUF ;讀接收數(shù)據(jù) MOV @R0,A ;存接收數(shù)據(jù) INC R0 ;指向下一數(shù)據(jù)存儲單元 DJNZ R2,RXD ;判16個(gè)數(shù)據(jù)接收完否?未完繼續(xù) RET例3.串行口方式2,SMOD=1,發(fā)送數(shù)據(jù)#Data,第9位作奇偶校驗(yàn)位,請編寫發(fā)送子程序。TTT:MOVSCON,#80H MOVPCON,#80H MOVA,#Data MOVC,P MOVTB8,C MOVSBUF,AWait:JBCTI,Next SJMPWaitNext:RET7.5多機(jī)通信在主從式多機(jī)通信系統(tǒng)中,只能1臺主機(jī),可以多臺從機(jī)。主機(jī)發(fā)布信息從機(jī)接收,從機(jī)發(fā)送數(shù)據(jù)只能主機(jī)接收,從機(jī)之間不能直接通信。多機(jī)通信必須在方式2或方式3下工作,規(guī)定相同的通信波特率。主機(jī)應(yīng)設(shè)SM2=0;從機(jī)應(yīng)設(shè)SM2=1(接收數(shù)據(jù)幀時(shí)設(shè)SM2=0)。主機(jī)發(fā)布的信息幀有兩類:地址幀:包含有從機(jī)地址和TB8=1的標(biāo)志。數(shù)據(jù)幀:包含的數(shù)據(jù)和TB8=0的標(biāo)志。SM2位在方式2、3接收過程中的作用:滿足下列接收條件:RI=0(只要是接收RI必須清0)SM2=0或接收到第9位數(shù)據(jù)為1。則將數(shù)據(jù)裝入SBUF和RB8,并置RI=1。否則,放棄數(shù)據(jù),RI也不置位。從機(jī)說明:只要是地址幀(RB8=1)從機(jī)都會接收。從機(jī)設(shè)置RI=0、SM2=1條件,只能接收地址幀(RB8=1)。不能接收數(shù)據(jù)幀(第9位數(shù)據(jù)為0)。從機(jī)設(shè)置RI=0、SM2=0條件,數(shù)據(jù)幀、地址幀均可接收。主從式多機(jī)通信協(xié)議:主機(jī)SM2=0;從機(jī)SM2=1,以便接收主機(jī)的地址幀。主機(jī)發(fā)布地址幀(TB8=1)。所有從機(jī)在REN=1、RI=0、SM2=1條件下,接收到主機(jī)發(fā)布的地址幀,RB8=1,置RI=1,進(jìn)入中斷服務(wù)程序,并和本機(jī)地址比較以確認(rèn)是否呼叫本機(jī)。被尋址從機(jī)置SM2=0,以便接收數(shù)據(jù)幀,并向主機(jī)回應(yīng)本機(jī)地址,供主機(jī)核對。未被尋址從機(jī)保持SM2=1,并退出中斷服務(wù)程序。主機(jī)發(fā)送數(shù)據(jù)幀(TB8=0),被尋址從機(jī)接收數(shù)據(jù)幀。未被尋址從機(jī)由于不滿足接收條件,放棄接收到的數(shù)據(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 離子探針技術(shù)
- 2025年中職農(nóng)業(yè)經(jīng)濟(jì)管理(農(nóng)村財(cái)務(wù)管理)試題及答案
- 2025年高職市場營銷(渠道管理策略)試題及答案
- 2026年工程建設(shè)影響的環(huán)境監(jiān)測與調(diào)控
- 2025年在線醫(yī)療平臺醫(yī)生聘用協(xié)議
- 2025年中職圖書情報(bào)與檔案管理(圖情檔基礎(chǔ))試題及答案
- 2026年婚慶服務(wù)(場地布置)試題及答案
- 2025年高職(工業(yè)互聯(lián)網(wǎng)技術(shù))工業(yè)APP開發(fā)技術(shù)綜合測試題
- 2025年中職農(nóng)林牧漁(動物養(yǎng)殖)試題及答案
- 2025年高職新聞出版(編輯校對)試題及答案
- 2026年藥店培訓(xùn)計(jì)劃試題及答案
- 2026春招:中國煙草真題及答案
- 物流鐵路專用線工程節(jié)能評估報(bào)告
- 2026河南省氣象部門招聘應(yīng)屆高校畢業(yè)生14人(第2號)參考題庫附答案
- 2026天津市南開區(qū)衛(wèi)生健康系統(tǒng)招聘事業(yè)單位60人(含高層次人才)備考核心試題附答案解析
- 2025江蘇無錫市宜興市部分機(jī)關(guān)事業(yè)單位招聘編外人員40人(A類)備考筆試試題及答案解析
- 卵巢過度刺激征課件
- 漢服行業(yè)市場壁壘分析報(bào)告
- 重瞼手術(shù)知情同意書
- 2026華潤燃?xì)庑@招聘(公共基礎(chǔ)知識)綜合能力測試題附答案解析
- 高血壓的血流動力學(xué)基礎(chǔ)課件
評論
0/150
提交評論