單片機(jī)_07(10)-第七章 MCS-51單片機(jī)串行接口 ppt_第1頁
單片機(jī)_07(10)-第七章 MCS-51單片機(jī)串行接口 ppt_第2頁
單片機(jī)_07(10)-第七章 MCS-51單片機(jī)串行接口 ppt_第3頁
單片機(jī)_07(10)-第七章 MCS-51單片機(jī)串行接口 ppt_第4頁
單片機(jī)_07(10)-第七章 MCS-51單片機(jī)串行接口 ppt_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1 串行口控制寄存器(SCON) SCON是MCS-51單片機(jī)的一個(gè)可位尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制。單元地址為98H,位地址為98H9FH。寄存器的內(nèi)容及位地址表示如下:位地址 9FH 9EH9DH9CH 9BH9AH 99H98H位符號(hào) SM0 SM1SM2RENTB8RB8TIRI7-1 7-1 串行口控制寄存器串行口控制寄存器各位的說明如下:1)SM0 、SM1串行口工作方式選擇位 其狀態(tài)組合和對(duì)應(yīng)工作方式為: SM0 SM1 工作方式 0 0 方式0 0 1 方式1 1 0 方式2 1 1 方式32)M2允許方式2、3的多機(jī)通信控制位 在方式2和3中,若SM21且接收到的

2、第九位數(shù)據(jù)(RB8)為1,才將接收到的前8位數(shù)據(jù)送入接收SBUF中,并置位RI產(chǎn)生中斷請(qǐng)求;否則丟棄前8位數(shù)據(jù)。若 SM20,則不論第九位數(shù)據(jù)(RB8)為1還是為0,都將 前8位送入接收SBUF中,并產(chǎn)生中斷請(qǐng)求。 方式0時(shí),SM2必須置0。3)REN允許接收位 REN0 禁止接收數(shù)據(jù) REN1 允許接收數(shù)據(jù)4)TB8發(fā)送數(shù)據(jù)位8 在方式2、3時(shí),TB8的內(nèi)容是要發(fā)送的第9位數(shù)據(jù),其值由用戶通過軟件來設(shè)置。5)RB8接收數(shù)據(jù)位8 在方式2、3時(shí),RB8是接收的第9位數(shù)據(jù)。 在方式1時(shí),RB8是接收的停止位 在方式0時(shí),不使用RB86)TI發(fā)送中斷標(biāo)志位 在方式0時(shí),發(fā)送完第8位數(shù)據(jù)后,該位由硬

3、件置位。 在其它方式下,于發(fā)送停止位之前,由硬件置位。 因此,TI1表示幀發(fā)送結(jié)束,其狀態(tài)既可供軟件查詢使用,也可請(qǐng)求中斷。 TI由軟件清“0”。7)RI接收中斷標(biāo)志位 在方式0時(shí),接收完第8位數(shù)據(jù)后,該位由硬件置位。 在其它方式下,于接收到停止位之前,該位由硬件置位。 因此,RI1表示幀接收結(jié)束,其狀態(tài)既可供軟件查詢使用, 也可請(qǐng)求中斷。 RI由軟件清“0”。2 串行口緩沖區(qū)SBUF SBUF是兩個(gè)在物理上獨(dú)立的接收、發(fā)送緩沖器,可同時(shí)發(fā)送、接收數(shù)據(jù)。兩個(gè)緩沖器只用一個(gè)字節(jié)地址99H,可通過指令對(duì)SBUF的讀寫來區(qū)別是對(duì)接收緩沖器的操作還是對(duì)發(fā)送緩沖器的操作。CPU在寫SBUF,就是修改發(fā)送

4、緩沖器;讀SBUF,就是讀接收緩沖器。串行口對(duì)外也有兩條獨(dú)立的收發(fā)信號(hào)線RxD、TxD,因此可以同時(shí)發(fā)送、接收數(shù)據(jù),實(shí)現(xiàn)全雙工。PCON不可位尋址,字節(jié)地址為87H。它主要是為CHMOS型單片機(jī)80C51的電源控制而設(shè)置的專用寄存器。其內(nèi)容如下: 與串行通信有關(guān)的只有D7位(SMOD),該位為波特率倍增位,當(dāng)SMOD=1時(shí),串行口波特率增加一倍,當(dāng)SMOD=0時(shí),串行口波特率為設(shè)定值。當(dāng)系統(tǒng)復(fù)位時(shí),SMOD=0。 位序D7D6D5D4D3D2D1D0位符號(hào)SMOD/GF1GF0PDIDL3 電源控制寄存器(PCON)7-2 MCS-51串行的工作方式SM0 SM1方式功能說明波特率0 0方式0

5、移位寄存器方式fosc/120 1方式18位UART可變1 0方式29位UARTfosc/64 或者fosc/321 1方式39位UART可變表8-1 串行口工作方式 串行口的工作方式由SM0和SM1確定,編碼和功能如表8-1所示。 方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由T1的溢出率決定。1數(shù)據(jù)輸出(發(fā)送) 當(dāng)數(shù)據(jù)寫入SBUF后,數(shù)據(jù)從RXD端在移位脈沖(TXD)的 控制下,逐位移入74LS164,74LS164能完成數(shù)據(jù)的串并轉(zhuǎn)換。當(dāng)8位數(shù)據(jù)全部移出后,TI由硬件置位,發(fā)生中斷請(qǐng)求。若CPU響應(yīng)中斷,則從0023H單元開始執(zhí)行串行口中斷服務(wù)程序,數(shù)據(jù)由74LS1

6、64并行輸出。其接口邏輯如圖8.3所示。RXDTXD0D7D。CLK74LS1648051STB0 . 1PAB圖8.3接口邏輯一、串行工作方式02 數(shù)據(jù)輸入(接收) 要實(shí)現(xiàn)接收數(shù)據(jù),必須首先把SCON中的允許接收位REN設(shè)置為1。當(dāng)REN設(shè)置為1時(shí),數(shù)據(jù)就在移位脈沖的控制下,從RXD端輸入。當(dāng)接收到8位數(shù)據(jù)時(shí),置位接收中斷標(biāo)志位RI,發(fā)生中斷請(qǐng)求。其接口邏輯如圖8.4所示。由邏輯圖可知,通過外接74LS165,串行口能夠?qū)崿F(xiàn)數(shù)據(jù)的并行輸入。RXDTXD0D7D.CLK74LS1658051STB0 . 1PQ圖8.4 外接移位寄存器輸入 【例7-1】使用74LS164的并行輸出端接8支發(fā)光二

7、極管,利用它的串入并出功能,把發(fā)光二極管從左到右依次點(diǎn)亮,并反復(fù)循環(huán)。假定發(fā)光二極管為共陰極接法。RXDTXD0D7D.CLK74LS1648051AB。STB0.1P圖8.5 電路設(shè)計(jì) ORG0000H LJMPMAIN ORG1000HMAIN:MOVSCON,#00H ;串行口工作在方式0 CLRES ;禁止串行中斷 MOVA, #80H ;發(fā)光二極管從左邊亮起DELR: CLRP1.0 ;關(guān)閉并行輸出 MOVSBUF, A ;串行輸出WAINT: JNBTI, WAIT ;狀態(tài)查詢 SETB P1.0 ;開啟并行輸出 ACALLDELAY ;調(diào)用延時(shí)子程序 CLRTI ;清發(fā)送中斷標(biāo)志

8、 RRA ;發(fā)光右移 AJMP DELR ;繼續(xù) EDN 解:電路如圖8.5。軟件部分如下:方式1為10位為一幀的異步串行通信方式。其幀格式為1個(gè)起始位、8個(gè)數(shù)據(jù)位和1個(gè)停止位。如圖8.6所示:起始位0D1D2D3D4D5D6D7D停止位圖8.6 方式1的幀格式1. 數(shù)據(jù)輸出(發(fā)送) 數(shù)據(jù)寫入SBUF后,開始發(fā)送,此時(shí)由硬件加入起始位和停止位,構(gòu)成一幀數(shù)據(jù),由TXD串行輸出。輸出一幀數(shù)據(jù)后,TXD保持在高電平狀態(tài)下,并將TI置位,通知CPU可以進(jìn)行下一個(gè)字符的發(fā)送。二、串行工作方式12 數(shù)據(jù)輸入(接收) 當(dāng)REN=1且接收到起始位后,在移位脈沖的控制下,把接收到的數(shù)據(jù)移入接收緩沖寄存器(SBU

9、F)中,停止位到來后,把停止位送入RB8中,并置位RI,通知CPU接收到一個(gè)字符。3 波特率的設(shè)定 工作在方式1時(shí),其波特率是可變的,波特率的計(jì)算公式為:的溢出率)定時(shí)器波特率1(322SMOD 其中,SMOD為PCON寄存器最高位的值,其值為1 或0。 當(dāng)定時(shí)器1作波特率發(fā)生器使用時(shí),選用工作方式2(即自動(dòng)加載定時(shí)初值方式)。選擇方式2可以避免通過程序反復(fù)裝入定時(shí)初值所引起的定時(shí)誤差,使波特率更加穩(wěn)定。假定計(jì)數(shù)初值為X,則計(jì)數(shù)溢出周期為:)X256(fosc12 溢出率為溢出周期的倒數(shù)。則波特率的計(jì)算公式為: )X256(12fosc322SMOD波特率 實(shí)際使用中,波特率是已知的。因此需要

10、根據(jù)波特率的計(jì)算公式求定時(shí)初值X。用戶只需要把定時(shí)初值設(shè)置到定時(shí)器1,就能得到所要求的波特率。 4 應(yīng)用舉例(用方式1實(shí)現(xiàn)雙機(jī)串行通信)(1)通信雙方的硬件連接 作為應(yīng)用系統(tǒng)首先要研究通信雙方如何連接。一種辦法是把兩片8051的串行口直接相連,一片8051的TXD與另一片的RXD相連,RXD與另一片的TXD相連,地與地連通。由于8051串行口的輸出是TTL電平,兩片相連所允許的距離極短。(2)通信雙方的軟件約定 為實(shí)現(xiàn)雙機(jī)通信,我們規(guī)定如下: 假定A機(jī)為發(fā)送機(jī),B機(jī)為接收機(jī)。 當(dāng)A機(jī)發(fā)送時(shí),先送一個(gè)“AA”信號(hào),B機(jī)收到后回答一個(gè)“BB”信號(hào),表示同意接收。 當(dāng)A機(jī)接收到“BB”后,開始發(fā)送數(shù)

11、據(jù),每發(fā)送一次求一次“檢 查和”,假定數(shù)據(jù)塊長16個(gè)字節(jié),起始地址為30H,一個(gè)數(shù)據(jù)塊發(fā)送完后再發(fā)出“檢查和”。 HFx2024313256120038411062566 為使波特率不倍增,設(shè)定PCON寄存器的SMOD=0,則 PCON00H .(3)基本的通信程序 設(shè)計(jì)程序框圖如圖8.7所示。 B機(jī)接收的數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)區(qū),起始地址也為30H,同時(shí)每接收一次也計(jì)算一次“檢查和”,當(dāng)一個(gè)數(shù)據(jù)塊收齊后,再接收A機(jī)發(fā)來的“檢查和”,并將它與B機(jī)的“檢查和”進(jìn)行比較。若兩者相等,說明接收正確,B機(jī)回答一個(gè)00;若兩者不相等,說明接收不正確,B機(jī)回答一個(gè)FF,請(qǐng)求重發(fā)。 A機(jī)收到00的答復(fù)后,結(jié)束發(fā)送

12、。若收到的答復(fù)非0,則重新將數(shù)據(jù)發(fā)送一次。 雙方均以1200波特的速率傳送。假設(shè)晶振頻率為6MHz ,計(jì)算定時(shí)器1的計(jì)數(shù)初值: 指針初始化檢查和清零設(shè)置串行口工作方式發(fā)請(qǐng)求發(fā)送信號(hào)B機(jī)允許發(fā)送?發(fā)送一個(gè)數(shù)據(jù)字節(jié)求檢查和發(fā)送檢查和B機(jī)接收正確碼?返回設(shè)置波特率啟動(dòng)定時(shí)器T1數(shù)據(jù)塊發(fā)送完?向A機(jī)發(fā)應(yīng)答信號(hào)設(shè)置串行口工作方式等待A機(jī)聯(lián)絡(luò)信號(hào)A機(jī)請(qǐng)求發(fā)送嗎?指針初始化檢查和清零設(shè)置波特率啟動(dòng)定時(shí)器T1NNNA機(jī)通信程序接收一個(gè)數(shù)據(jù)字節(jié)求檢查和數(shù)據(jù)塊收齊嗎?接收A機(jī)檢查和并比較B機(jī)檢查和返回接收正確嗎?發(fā)出錯(cuò)誤標(biāo)志B機(jī)通信程序NNN圖8.7 雙機(jī)通信程序結(jié)構(gòu)圖 A A機(jī)通信程序:機(jī)通信程序:ASTART

13、: MOV TMOD,#20H ;設(shè)定定時(shí)器1工作方式2 MOV TL1,#0F2H ;設(shè)定計(jì)數(shù)初值 MOV TH1,#0F2H ;計(jì)數(shù)重裝值 MOV PCON,#00H ;波特率不倍增 SETB TR1 ;啟動(dòng)T1 MOV SCON,#50H ;設(shè)置串行口方式1ATT1: MOV SBUF, #0AAH ;發(fā)送“AA”AWAIT1: JBC TI, ARR1 ;等待一幀發(fā)送完 SJMP AWAIT1ARR1: JBC RI,ARR2 ;等待應(yīng)答信號(hào) SJMP ARR1 根據(jù)結(jié)構(gòu)圖設(shè)計(jì)出下述通信程序:ARR2: MOVA, SBUF XRLA,#0BBH JNZATT1 ;判斷是否是應(yīng)答信號(hào)“

14、00”ATT2: MOVR0, #30H MOVR7,#10 MOVR6,#00HATT3: MOVSBUF, R0 MOVA,R6 ADDA,R0 MOVR6,A INCR0AWAIT2: JBCTI,ATT4 SJMPAWAIT2 ;發(fā)送有效數(shù)據(jù)ATT4: DJNZR7, ATT3 ;判斷是否傳送完畢 MOVSBUF, R6AWAIT3: JBCTI, ARR3 SJMPAWAIT3 ;等待ARR3: JBCRI, ARR4 SJMPARR3 ;等待ARR4: MOVA, SBUF JNZ ATT2AEND: RETB B機(jī)通信程序:機(jī)通信程序:BSTART: MOV TMOD, #20H

15、;設(shè)定定時(shí)器1工作方式2 MOV TH1,#0F2H ;設(shè)定計(jì)數(shù)初值 MOV TL1,#0F2H ;計(jì)數(shù)重裝值 MOV PCON,#00H ;波特率不倍增 SETBTR1 MOV SCON,#50HBRR1: JBC RI,BRR2 SJMP BRR1 ;等待BRR2: MOV A,SBUF ;把接收到的數(shù)據(jù)送入A XRL A,#0AAH ;判斷接收到數(shù)據(jù)是否是“AA” JNZ BRR1 ;如果不是繼續(xù)等待BTT11: MOVSBUF,0BBH ;發(fā)送應(yīng)答信號(hào)BWAIT1: JBCTI, BRR3 ;等待 SJMPBWAIT1BRR3: MOVR0,#30H ;接收有效數(shù)據(jù) MOVR7,#10

16、 MOVR6,#00HBRR4: JBCRI,BRR5 SJMPBRR4 BRR6: MOVA,SBUFXRLA,R6JZBENDMOVSBUF,#0FFHBWAIT3:JBCTI,BRR3SJMPBWAIT3BEND: MOVSBUF,#00HRET方式2為11位為一幀的異步串行通信方式。其幀格式為1個(gè)起始位、9個(gè)數(shù)據(jù)位和1個(gè)停止位。如圖8.8所示。圖8.8 方式2的幀格式 三、串行工作方式2 在方式2下,字符還是8個(gè)數(shù)據(jù)位,只不過增加了一個(gè)第9個(gè)數(shù)據(jù)位(D8),而且其功能由用戶確定,是一個(gè)可編程位。 在發(fā)送數(shù)據(jù)時(shí),應(yīng)先在SCON的TB8位中把第9個(gè)數(shù)據(jù)位的內(nèi)容準(zhǔn)備好。這可使用如下指令完成: SETB TB8 ;TB8位置“1” CLR TB8 ;TB8位置“0”發(fā)送數(shù)據(jù)(D0D7)由MOV指令向SBUF寫入,而D8位的內(nèi)容則由硬件電路從TB 8中直接送到發(fā)送移位器的第九位,并以此來啟動(dòng)串行發(fā)送。一個(gè)字符幀發(fā)送完畢后,將TI位置“1”,其他過程與方式1相同。 方式2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論