第8講串行通訊_第1頁(yè)
第8講串行通訊_第2頁(yè)
第8講串行通訊_第3頁(yè)
第8講串行通訊_第4頁(yè)
第8講串行通訊_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1第8講 串行通訊電氣工程系趙志衡E-mail:2本講課程主要內(nèi)容(1)串行通訊的基本概念及MCS-51串行口的SFR(2)串行口的工作方式(3)串行口波特率的制定(4)串行口的編程方法(5)多機(jī)通訊3串行通訊的基本概念串行通訊的基本概念通訊的基本方式:n串行通訊與并行通訊n串行同步通訊、串行異步通訊 n單工、半雙工和全雙工串行通訊 4并行通訊、串行通訊并行通訊:數(shù)據(jù)各位同時(shí)傳送串行通訊:數(shù)據(jù)一位一位順序傳送5串行異步通訊、串行同步通訊 異步通訊,每個(gè)數(shù)據(jù)都要用起始位和停止位作為傳送數(shù)據(jù)開(kāi)始和結(jié)束標(biāo)志。同步通訊,具有數(shù)據(jù)端和時(shí)鐘端,雙方依靠時(shí)鐘同步。6單工、半雙工、全雙工串行通訊單工、半雙工、

2、全雙工串行通訊n單工:僅能發(fā)送或接收n半雙工:能發(fā)送、接收,但發(fā)送與接收不能同時(shí)進(jìn)行n全雙工:能夠同時(shí)進(jìn)行發(fā)送與接受。nMCS-51可以進(jìn)行全雙工的串行通訊7MCS-51串行口的基本結(jié)構(gòu)n發(fā)送器:將發(fā)送器:將CPUCPU送來(lái)的并行數(shù)據(jù),通過(guò)送來(lái)的并行數(shù)據(jù),通過(guò)發(fā)送移位寄存器變?yōu)榇袛?shù)據(jù)逐位發(fā)發(fā)送移位寄存器變?yōu)榇袛?shù)據(jù)逐位發(fā)送,并自動(dòng)添加起始位、停止位和第送,并自動(dòng)添加起始位、停止位和第9 9位數(shù)據(jù)。位數(shù)據(jù)。n接收器:將接收到的串行數(shù)據(jù),經(jīng)接接收器:將接收到的串行數(shù)據(jù),經(jīng)接收移位寄存器變?yōu)椴⑿袛?shù)據(jù),去掉起收移位寄存器變?yōu)椴⑿袛?shù)據(jù),去掉起始位、停止位后,將正確數(shù)據(jù)送到接始位、停止位后,將正確數(shù)據(jù)送

3、到接收數(shù)據(jù)緩沖器,供收數(shù)據(jù)緩沖器,供CPUCPU讀取。讀取。n控制器:接收控制器:接收CPUCPU送來(lái)的編程命令,按送來(lái)的編程命令,按選定方式實(shí)現(xiàn)對(duì)串行接口的控制。主選定方式實(shí)現(xiàn)對(duì)串行接口的控制。主要控制參數(shù)有:傳送波特率的選擇、要控制參數(shù)有:傳送波特率的選擇、數(shù)據(jù)格式的選擇等。另外還與數(shù)據(jù)格式的選擇等。另外還與CPUCPU交換交換狀態(tài)信號(hào)和中斷信號(hào)。狀態(tài)信號(hào)和中斷信號(hào)。 串行接口邏輯部件框圖8串行口的基本結(jié)構(gòu)nSCON為串行口控制為串行口控制/狀態(tài)寄狀態(tài)寄存器,通過(guò)編程寫入存器,通過(guò)編程寫入SCON的的控制位可選擇串行口的工作控制位可選擇串行口的工作方式,讀出方式,讀出SCON的狀態(tài)位可的狀

4、態(tài)位可查詢串行口的工作狀態(tài)。查詢串行口的工作狀態(tài)。n定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T1可被用做串行可被用做串行口的波特率發(fā)生器??诘牟ㄌ芈拾l(fā)生器。n有可控分頻電路影響數(shù)據(jù)傳有可控分頻電路影響數(shù)據(jù)傳送波特率。送波特率。n串行口信息的發(fā)送串行口信息的發(fā)送/接收是通接收是通過(guò)寫過(guò)寫/讀數(shù)據(jù)緩沖器讀數(shù)據(jù)緩沖器SBUF來(lái)來(lái)實(shí)現(xiàn)的。實(shí)現(xiàn)的。9串行口的SFRn串行數(shù)據(jù)緩沖器串行數(shù)據(jù)緩沖器SBUF(99H) 串行口有兩個(gè)串行口有兩個(gè)8位數(shù)據(jù)緩沖器,一個(gè)是發(fā)送數(shù)據(jù)位數(shù)據(jù)緩沖器,一個(gè)是發(fā)送數(shù)據(jù)緩沖器緩沖器SBUF,一個(gè)是接收數(shù)據(jù)緩沖器,一個(gè)是接收數(shù)據(jù)緩沖器SBUF。它們共。它們共用一個(gè)地址用一個(gè)地址99H,發(fā)送,發(fā)送SB

5、UF只能寫入,而接收只能寫入,而接收SBUF只能讀出。只能讀出。 通過(guò)指令區(qū)分:通過(guò)指令區(qū)分:MOV SBUF,A MOV A,SBUFn控制寄存器控制寄存器SCON (98H)SM0 SM1 SM2 REN TB8 RB8 TI RIn節(jié)電控制節(jié)電控制寄存器寄存器PCON(87H) SMOD (D7)n復(fù)位后狀態(tài)均為復(fù)位后狀態(tài)均為00H 10串行口控制寄存器SCON SM0、SM1:串行口串行口4種工作方式選擇位種工作方式選擇位 SM2:方式方式2和方式和方式3中的多機(jī)通信控制位。在方式中的多機(jī)通信控制位。在方式2和方式和方式3中,如中,如SM2=1,則當(dāng)接收到的第,則當(dāng)接收到的第9位數(shù)據(jù)位

6、數(shù)據(jù)(RB8)為為0時(shí),不激活接收中斷標(biāo)志時(shí),不激活接收中斷標(biāo)志RI(RI=1)。在方。在方式式1中,如中,如SM2=1,則只有當(dāng)接收到有效停止位時(shí)才,則只有當(dāng)接收到有效停止位時(shí)才激活激活RI,若沒(méi)有接收到有效停止位,則,若沒(méi)有接收到有效停止位,則RI清清0。在方。在方式式0中,中,SM2必須為必須為0。 REN:允許串行接收位。允許串行接收位。REN=1允許接收;允許接收; REN=0禁止接收,由軟件置位或清零。禁止接收,由軟件置位或清零。 TB8:是工作在方式是工作在方式2和和3時(shí),要發(fā)送的第時(shí),要發(fā)送的第9位數(shù)據(jù)。位數(shù)據(jù)??捎绍浖每捎绍浖?或清或清0。在許多的通訊協(xié)議中該位是奇偶。在

7、許多的通訊協(xié)議中該位是奇偶校驗(yàn)位。校驗(yàn)位。在多機(jī)通訊中用來(lái)表示是地址幀還是數(shù)據(jù)幀,在多機(jī)通訊中用來(lái)表示是地址幀還是數(shù)據(jù)幀,TB8=1為地址幀,為地址幀,TB80為數(shù)據(jù)幀。為數(shù)據(jù)幀。11串行口控制寄存器SCONnRB8:當(dāng)工作在方式當(dāng)工作在方式2和和3時(shí),為接收到的第時(shí),為接收到的第9位數(shù)據(jù)。位數(shù)據(jù)。nTI:發(fā)送中斷標(biāo)志位,在方式發(fā)送中斷標(biāo)志位,在方式0串行發(fā)送第串行發(fā)送第8位數(shù)據(jù)結(jié)位數(shù)據(jù)結(jié)束時(shí)由硬件置束時(shí)由硬件置1,或在其它方式串行發(fā)送停止位后置,或在其它方式串行發(fā)送停止位后置1,并申請(qǐng)中斷。并申請(qǐng)中斷。CPU響應(yīng)中斷后,可發(fā)送下一幀數(shù)據(jù),響應(yīng)中斷后,可發(fā)送下一幀數(shù)據(jù),TI必須由軟件清必須由軟

8、件清0。nRI:為接收結(jié)束中斷標(biāo)志。在方式為接收結(jié)束中斷標(biāo)志。在方式0中,當(dāng)接收到一中,當(dāng)接收到一幀數(shù)據(jù)的第幀數(shù)據(jù)的第8位結(jié)束時(shí),位結(jié)束時(shí),RI=1。在其他方式中,接收。在其他方式中,接收到停止位后,到停止位后,RI=1,表示可讀取接收,表示可讀取接收SBUF中的內(nèi)容。中的內(nèi)容。RI必須用軟件清必須用軟件清0。 n每次發(fā)送和接收前,要注意先將每次發(fā)送和接收前,要注意先將TI和和RI標(biāo)志位清標(biāo)志位清0 。 串行口作為一個(gè)中斷源,中斷入口地址只有一個(gè)串行口作為一個(gè)中斷源,中斷入口地址只有一個(gè)(0023H),當(dāng)用中斷方式同時(shí)進(jìn)行發(fā)送和接收時(shí),可通過(guò)查詢當(dāng)用中斷方式同時(shí)進(jìn)行發(fā)送和接收時(shí),可通過(guò)查詢TI

9、和和RI狀態(tài),狀態(tài),確定是發(fā)送還是接收結(jié)束引起的中斷。確定是發(fā)送還是接收結(jié)束引起的中斷。 12節(jié)電控制寄存器PCON nPCON主要用于節(jié)電運(yùn)行方式控制, PCON.7用做串行口波特率加倍控制位。當(dāng)設(shè)定SMOD=1時(shí),波特率加倍,當(dāng)SMOD=0時(shí),波特率不加倍。 13串行口的工作方式nSM0、SM1工作方式選擇位14方式 0 :(SM0=0 SM1=0)n串行口方式串行口方式0為為8位位數(shù)據(jù)同步移位寄存器數(shù)據(jù)同步移位寄存器方式。方式。RXD引腳為同引腳為同步數(shù)據(jù)的輸入步數(shù)據(jù)的輸入/輸出輸出端,端,TXD引腳為同步引腳為同步移位脈沖輸出端。一移位脈沖輸出端。一個(gè)數(shù)據(jù)幀為個(gè)數(shù)據(jù)幀為8位,位,每每一

10、個(gè)移位脈沖對(duì)應(yīng)數(shù)一個(gè)移位脈沖對(duì)應(yīng)數(shù)據(jù)幀的一個(gè)數(shù)據(jù)位。據(jù)幀的一個(gè)數(shù)據(jù)位。方式方式0的的波特率固定波特率固定為為fosc/12。 REN=0 寫SBUF RXD 數(shù)據(jù)輸出 TXD TI D0 D1 D2 D3 D4 D5 D6 D7 REN=1 RI=0 RXD 輸入數(shù)據(jù) RI 串行口方式0 工作時(shí)序圖 (a) 發(fā)送時(shí)序圖 (b) 接收時(shí)序圖 TXD 15方式0的說(shuō)明:n寫入寫入SCON使使REN=0,TI=0;然后執(zhí)行寫入;然后執(zhí)行寫入SBUF的指令,的指令,8位數(shù)位數(shù)據(jù)裝入發(fā)送據(jù)裝入發(fā)送SBUF,硬件啟動(dòng)串行口發(fā)送器進(jìn)行一次發(fā)送。通過(guò)發(fā),硬件啟動(dòng)串行口發(fā)送器進(jìn)行一次發(fā)送。通過(guò)發(fā)送移位寄存器將送

11、移位寄存器將8位數(shù)據(jù)逐位送到位數(shù)據(jù)逐位送到RXD引腳,每個(gè)機(jī)器周期內(nèi)發(fā)送引腳,每個(gè)機(jī)器周期內(nèi)發(fā)送一位數(shù)據(jù)。對(duì)應(yīng)發(fā)送數(shù)據(jù)的每一位,由一位數(shù)據(jù)。對(duì)應(yīng)發(fā)送數(shù)據(jù)的每一位,由TXD引腳同步輸出一個(gè)移位引腳同步輸出一個(gè)移位脈沖。發(fā)送完一幀,自動(dòng)置位脈沖。發(fā)送完一幀,自動(dòng)置位TI標(biāo)志,并申請(qǐng)串行口中斷。若標(biāo)志,并申請(qǐng)串行口中斷。若CPU響應(yīng)中斷,則將從響應(yīng)中斷,則將從0023H單元開(kāi)始執(zhí)行串行口的中斷服務(wù)程序。單元開(kāi)始執(zhí)行串行口的中斷服務(wù)程序。 n寫入寫入SCON使使REN = 1、RI = 0,將啟動(dòng)串行口接收器開(kāi)始接收。,將啟動(dòng)串行口接收器開(kāi)始接收。由由TXD輸出移位脈沖,每對(duì)應(yīng)一個(gè)移位脈沖,采樣一次輸

12、出移位脈沖,每對(duì)應(yīng)一個(gè)移位脈沖,采樣一次RXD引腳信引腳信號(hào)。每個(gè)機(jī)器周期采樣一次號(hào)。每個(gè)機(jī)器周期采樣一次RXD引腳,采到的數(shù)據(jù)位送入接收移位引腳,采到的數(shù)據(jù)位送入接收移位寄存器后,接收移位寄存器左移一位。接收完一幀,自動(dòng)置位寄存器后,接收移位寄存器左移一位。接收完一幀,自動(dòng)置位RI標(biāo)標(biāo)志,申請(qǐng)串行口中斷,并將接收下來(lái)的志,申請(qǐng)串行口中斷,并將接收下來(lái)的8位數(shù)據(jù)裝入接收位數(shù)據(jù)裝入接收SBUF。若。若CPU響應(yīng)中斷,則從響應(yīng)中斷,則從0023H單元開(kāi)始執(zhí)行串行口的中斷服務(wù)程序。單元開(kāi)始執(zhí)行串行口的中斷服務(wù)程序。n串行口方式串行口方式0常用于擴(kuò)展單片機(jī)的并行常用于擴(kuò)展單片機(jī)的并行I/O口,也可外口

13、,也可外接串行同步接串行同步I/O設(shè)備。用方式設(shè)備。用方式0輸入輸入/輸出數(shù)據(jù)皆通過(guò)輸出數(shù)據(jù)皆通過(guò)RXD端,因此方式端,因此方式0為半雙工方式,只能分時(shí)進(jìn)行發(fā)送為半雙工方式,只能分時(shí)進(jìn)行發(fā)送和接收。和接收。 16方式1(SM0=0 SM1=1) 功能說(shuō)明:串行口方式1為8位數(shù)據(jù)全雙工異步通信方式。TXD為發(fā)送數(shù)據(jù)端,RXD為接收數(shù)據(jù)端。一個(gè)數(shù)據(jù)幀為10位,包含8位數(shù)據(jù)位,1個(gè)起始位“0”和1個(gè)停止位“1”。串行口用方式1工作時(shí),使用定時(shí)器T1作為波特率發(fā)生器,波特率的設(shè)定以T1的溢出率為基準(zhǔn),波特率計(jì)算式為:(2SMOD/32)T1溢出率。 17方式1的時(shí)序圖 采樣 (a) 發(fā)送時(shí)序圖 串行口

14、方式1工作時(shí)序圖 寫入 SBUF TXD 數(shù)據(jù)輸出 TI D0 D1 D2 D3 D4 D5 D6 D7 停止位 起始位 RXD 輸入數(shù)據(jù) (b) 接收時(shí)序圖 D0 D1 D2 D3 D4 D5 D6 D7 停止位 起始位 RI 檢測(cè) 負(fù)跳變 REN=1, 18方式1功能說(shuō)明執(zhí)行寫入執(zhí)行寫入SBUF指令,指令,將將8位數(shù)據(jù)裝入發(fā)送位數(shù)據(jù)裝入發(fā)送SBUF,并啟動(dòng)發(fā)送,并啟動(dòng)發(fā)送器進(jìn)行一次發(fā)送器進(jìn)行一次發(fā)送:先將起始位先將起始位“0”送到送到TXD引腳,再?gòu)牡偷揭_,再?gòu)牡偷礁咧鹞话l(fā)送高逐位發(fā)送8位數(shù)據(jù),最后發(fā)送停止位位數(shù)據(jù),最后發(fā)送停止位“1”。每位發(fā)送占用。每位發(fā)送占用的時(shí)間由設(shè)定的波特率決定

15、。發(fā)送完一幀數(shù)據(jù),置位的時(shí)間由設(shè)定的波特率決定。發(fā)送完一幀數(shù)據(jù),置位TI標(biāo)志,標(biāo)志,申請(qǐng)串行口中斷。申請(qǐng)串行口中斷。當(dāng)當(dāng)REN=1時(shí)時(shí),允許接收器準(zhǔn)備接收。開(kāi)始,以,允許接收器準(zhǔn)備接收。開(kāi)始,以16倍于波特率倍于波特率的速率檢測(cè)的速率檢測(cè)RXD引腳的負(fù)跳變,當(dāng)檢測(cè)到負(fù)跳變后,啟動(dòng)一引腳的負(fù)跳變,當(dāng)檢測(cè)到負(fù)跳變后,啟動(dòng)一次接收,接收完一幀信息,判斷是否滿足條件次接收,接收完一幀信息,判斷是否滿足條件:RI = 0,而,而且停止位為且停止位為1(或或SM2=0)。若同時(shí)滿足這兩個(gè)條件,則置位。若同時(shí)滿足這兩個(gè)條件,則置位RI標(biāo)志,申請(qǐng)串行口中斷,并將接收的標(biāo)志,申請(qǐng)串行口中斷,并將接收的8位數(shù)據(jù)裝

16、入接收位數(shù)據(jù)裝入接收SBUF,停止位裝入,停止位裝入RB8;否則接收無(wú)效,丟失所接收的一否則接收無(wú)效,丟失所接收的一幀信息,且不影響幀信息,且不影響RI標(biāo)志。一位時(shí)間以后,接收器重新開(kāi)始標(biāo)志。一位時(shí)間以后,接收器重新開(kāi)始檢測(cè)檢測(cè)RXD端的負(fù)跳變,以準(zhǔn)備接收下一幀數(shù)據(jù)。端的負(fù)跳變,以準(zhǔn)備接收下一幀數(shù)據(jù)。19方式2、方式3 串行口方式串行口方式2和方式和方式3皆為皆為9位數(shù)據(jù)全雙工異步位數(shù)據(jù)全雙工異步通信方式,比串行口方式通信方式,比串行口方式1增加了第增加了第9位數(shù)據(jù)位。位數(shù)據(jù)位。TXD為發(fā)送數(shù)據(jù)端,為發(fā)送數(shù)據(jù)端,RXD為接收數(shù)據(jù)端。一幀信息有為接收數(shù)據(jù)端。一幀信息有11位,包括位,包括9位數(shù)據(jù)

17、位,位數(shù)據(jù)位,1個(gè)起始位個(gè)起始位“0”和和1個(gè)停止位個(gè)停止位“1”。發(fā)送數(shù)據(jù)的第。發(fā)送數(shù)據(jù)的第9位在位在TB8中,接收數(shù)據(jù)的第中,接收數(shù)據(jù)的第9位位存入存入RB8中。第中。第9位數(shù)據(jù)位也稱為可編程位,常用做位數(shù)據(jù)位也稱為可編程位,常用做奇偶校檢位或多機(jī)通信中的地址奇偶校檢位或多機(jī)通信中的地址/數(shù)據(jù)識(shí)別位。數(shù)據(jù)識(shí)別位。 串行口的方式串行口的方式2與方式與方式3的唯一差別是波特率設(shè)的唯一差別是波特率設(shè)定方法不同,方式定方法不同,方式2的波特率以系統(tǒng)時(shí)鐘為基準(zhǔn),計(jì)的波特率以系統(tǒng)時(shí)鐘為基準(zhǔn),計(jì)算式為算式為:(2SMOD/64) fosc。方式。方式3的波特率與方式的波特率與方式1的相同,計(jì)算式為的相同

18、,計(jì)算式為:(2SMOD/32)T1溢出率。溢出率。 20方式2、3的時(shí)序 (a) 發(fā)送時(shí)序圖 串行口方式 2、方式 3 工作時(shí)序圖 寫入 SBUF TXD 數(shù)據(jù)輸出 TI RXD 輸入數(shù)據(jù) (b) 接收時(shí)序圖 RI D0 D1 D2 D3 D4 D5 D6 TB8 停止位 起始位 D7 D0 D1 D2 D3 D4 D5 D6 RB8 停止位 起始位 D7 檢測(cè) 負(fù)跳變 REN=1, 21方式2、3的功能說(shuō)明n發(fā)送時(shí),應(yīng)先將發(fā)送數(shù)據(jù)的第發(fā)送時(shí),應(yīng)先將發(fā)送數(shù)據(jù)的第9位送入位送入TB8,再寫入,再寫入8位數(shù)據(jù)到發(fā)送位數(shù)據(jù)到發(fā)送SBUF,使發(fā)送器啟動(dòng)一次發(fā)送,將一幀,使發(fā)送器啟動(dòng)一次發(fā)送,將一幀數(shù)

19、據(jù)逐位送到數(shù)據(jù)逐位送到TXD引腳引腳:發(fā)送起始位發(fā)送起始位“0”之后,再發(fā)之后,再發(fā)送送SBUF中的中的8位數(shù)據(jù),接著發(fā)送位數(shù)據(jù),接著發(fā)送TB8中的第中的第9位,最位,最后發(fā)送停止位后發(fā)送停止位“1”。一幀發(fā)送結(jié)束,置位。一幀發(fā)送結(jié)束,置位TI標(biāo)志,申標(biāo)志,申請(qǐng)串行口中斷。請(qǐng)串行口中斷。n方式方式2和方式和方式3的接收過(guò)程和方式的接收過(guò)程和方式1的接收過(guò)程基本相的接收過(guò)程基本相同,但同,但RB8中裝入的是接收數(shù)據(jù)的第中裝入的是接收數(shù)據(jù)的第9位,而不是停止位,而不是停止位。接收有效必須同時(shí)滿足的兩個(gè)條件改為位。接收有效必須同時(shí)滿足的兩個(gè)條件改為:RI=0,且接收的第且接收的第9位數(shù)據(jù)位為位數(shù)據(jù)位

20、為1(或或SM2=0)。當(dāng)正確接收。當(dāng)正確接收到一幀數(shù)據(jù)后,前面到一幀數(shù)據(jù)后,前面8位數(shù)據(jù)進(jìn)入接收位數(shù)據(jù)進(jìn)入接收SBUF,第,第9位位數(shù)據(jù)進(jìn)入數(shù)據(jù)進(jìn)入RB8。 22波特率的制定波特率的定義:串行口每秒鐘發(fā)送或者接收的位數(shù)。波特率的定義:串行口每秒鐘發(fā)送或者接收的位數(shù)。串行口方式串行口方式0的波特率是固定的,為系統(tǒng)時(shí)鐘的的波特率是固定的,為系統(tǒng)時(shí)鐘的12分頻分頻(fosc/12),即每個(gè)機(jī)器周期傳送一位數(shù)據(jù)位。,即每個(gè)機(jī)器周期傳送一位數(shù)據(jù)位。串行口用方式串行口用方式2工作時(shí),波特率為工作時(shí),波特率為(2SMOD/64)fosc 。SMOD為為PCON中的中的D7位,即波特率加倍選擇位。方式位,即

21、波特率加倍選擇位。方式2可有兩種波特率供選擇,當(dāng)可有兩種波特率供選擇,當(dāng)SMOD=0時(shí),波特率為時(shí),波特率為fosc/64;當(dāng)當(dāng)SMOD=1時(shí),波特率則為時(shí),波特率則為fosc/32 。串行口方式串行口方式1和方式和方式3用定時(shí)器用定時(shí)器T1作為波特率發(fā)生器,作為波特率發(fā)生器,其波其波特率有多種選擇,與特率有多種選擇,與T1的溢出率有關(guān)。的溢出率有關(guān)。 波特率波特率= (2SMOD32)T1溢出率溢出率 23定時(shí)器T1產(chǎn)生波特率的計(jì)算T1溢出率:溢出率:T1溢出時(shí)間的倒數(shù)。溢出時(shí)間的倒數(shù)。nT1用于波特率發(fā)生器時(shí)一般工作于非門控定時(shí)器方式2,即常數(shù)自動(dòng)重裝入方式。 TH1 = TL1 為T1的

22、時(shí)間常數(shù) TH1)(212fT18osc溢出率TH1)(25612f322oscSMOD的波特率串行口方式1和方式324定時(shí)器T1產(chǎn)生波特率的計(jì)算n串行口用方式1和方式3工作時(shí),當(dāng)需要很低的波特率時(shí),也可選擇T1工作于方式1,但需利用T1溢出中斷來(lái)實(shí)現(xiàn)軟件重裝初值,T1用方式1工作時(shí)溢出率為: N為T1溢出后用軟件重裝初值所需的機(jī)器周期數(shù)。 N) 1TL1TH(212f16osc25T1產(chǎn)生的常用波特率26波特率計(jì)算的幾點(diǎn)注意事項(xiàng):n1)波特率的相對(duì)誤差不大于波特率的相對(duì)誤差不大于2.5%n2)注意)注意SMOD位對(duì)波特率的影響位對(duì)波特率的影響例如:通訊波特率設(shè)為例如:通訊波特率設(shè)為2400,

23、晶振頻率為,晶振頻率為6MHz,計(jì)算,計(jì)算T1的計(jì)時(shí)常數(shù)。的計(jì)時(shí)常數(shù)。當(dāng)當(dāng)SMOD=0時(shí),計(jì)時(shí)常數(shù)約為時(shí),計(jì)時(shí)常數(shù)約為249,相對(duì)誤差,相對(duì)誤差7%。當(dāng)當(dāng)SMOD=1時(shí),計(jì)時(shí)常數(shù)約為時(shí),計(jì)時(shí)常數(shù)約為243,相對(duì)誤差,相對(duì)誤差0.16%。27串行口的編程舉例n設(shè)定波特率設(shè)定波特率n設(shè)定串行口的工作方式設(shè)定串行口的工作方式n設(shè)計(jì)中斷服務(wù)程序或查詢程序設(shè)計(jì)中斷服務(wù)程序或查詢程序 注意對(duì)注意對(duì)TI、RI的處理(硬件置位、軟件清零)的處理(硬件置位、軟件清零)28MCS-51雙機(jī)串行通訊的實(shí)現(xiàn)n如何進(jìn)行物理連線?n波特率的選擇?n工作方式的選擇?n如何編程實(shí)現(xiàn)?29雙機(jī)串行通訊的實(shí)現(xiàn)-1正確進(jìn)行物理接線

24、正確進(jìn)行物理接線30雙機(jī)串行通訊的實(shí)現(xiàn)-2n設(shè)定一致的波特率設(shè)定一致的波特率n設(shè)定一致的串行口工作方式設(shè)定一致的串行口工作方式n分別設(shè)計(jì)中斷服務(wù)程序或查詢程序分別設(shè)計(jì)中斷服務(wù)程序或查詢程序 注意對(duì)注意對(duì)TI、RI的處理的處理 (硬件置位、軟件清零)(硬件置位、軟件清零)31方式3發(fā)送50H5FH的內(nèi)容n待發(fā)送的16個(gè)字節(jié)存放在片內(nèi)RAM中 地址為50H5FHn串行口波特率為2400波特率發(fā)生器T1工作于方式2, 且SMOD=0晶振為11.0592MHz計(jì)算得到TL1的初值為F4H。n串行口工作于方式3n第9位發(fā)送奇偶校驗(yàn)位32例1: 方式3發(fā)送50H5FH中內(nèi)容-1 ORG0000H;復(fù)位入口

25、復(fù)位入口nAJMPMAINnORG0023H;串行口中斷入口串行口中斷入口nAJMPL1nORG0100H;主程序入口主程序入口nMAIN:MOVSCON,#0C0H;串行口初始化,用方式串行口初始化,用方式3發(fā)送,發(fā)送,TI=0n MOV PCON,#00H;SMODSMOD=0n MOV TMOD,#20H ;T1方式方式2定時(shí)定時(shí)nMOV TL1,#0F4H ;寫入寫入T1時(shí)間常數(shù)時(shí)間常數(shù)n MOVTH1,#0F4H n SETBTR1;啟動(dòng)啟動(dòng)T1nSETBEAnSETBES;允許串行口中斷允許串行口中斷nMOVR0,#50H ;設(shè)數(shù)據(jù)指針設(shè)數(shù)據(jù)指針n MOV R7,#10H ;數(shù)據(jù)長(zhǎng)

26、度數(shù)據(jù)長(zhǎng)度nLOOP: MOV A,R0;取一個(gè)字符取一個(gè)字符n MOV C,P;加奇偶校驗(yàn)加奇偶校驗(yàn)n MOV TB8,Cn MOV SBUF,A;發(fā)送一個(gè)字符發(fā)送一個(gè)字符nHERE:SJMPHERE;CPU原地循環(huán),等待發(fā)送結(jié)束原地循環(huán),等待發(fā)送結(jié)束33例1: 方式3發(fā)送50H5FH中內(nèi)容-2nL1L1:n CLRTI ;中斷服務(wù)程序,中斷服務(wù)程序, 發(fā)送結(jié)束標(biāo)志位清發(fā)送結(jié)束標(biāo)志位清0n DJNZR7,NEXT;發(fā)送完全部字符發(fā)送完全部字符?n CLRES ;已發(fā)送完,關(guān)閉串行口中斷已發(fā)送完,關(guān)閉串行口中斷n SJMPTENDnNEXT:n INC R0 ;未發(fā)送完,修改指針未發(fā)送完,修改

27、指針nMOV A,R0 ;取下一個(gè)字符取下一個(gè)字符nMOV C,P ;加奇偶校驗(yàn)加奇偶校驗(yàn)nMOV TB8,C nMOV SBUF,A;再次發(fā)送一個(gè)字符再次發(fā)送一個(gè)字符nTEND:n RETI ;中斷返回主程序中斷返回主程序34例2:方式3接收n接收到的16個(gè)字節(jié)存放在片內(nèi)RAM中地址為50H5FHn串行口波特率為2400波特率發(fā)生器T1工作于方式2, 且SMOD=0晶振為11.0592MHz計(jì)算得到TL1的初值為F4H。n串行口工作于方式3奇偶校驗(yàn)方式判斷接收數(shù)據(jù)是否出錯(cuò)設(shè)校驗(yàn)出錯(cuò)標(biāo)志位為F035MAIN: MAIN: MOVSCON,#0D0H ;串行口方式串行口方式3允許接收,允許接收,

28、RI=0n MOV PCON,#00H ;SMODSMOD=0n MOV TMOD,#20H ;T1方式方式2定時(shí)定時(shí)n MOV TL1,#0F4H ;寫入寫入T1時(shí)間常數(shù)時(shí)間常數(shù)n MOVTH1,#0F4H n SETBTR1 ;啟動(dòng)啟動(dòng)T1n LCALL AAAA LCALL AAAAn SJMP $方式3接收-查詢36方式3接收-查詢nAAAA: MOVR0,#50H;設(shè)數(shù)據(jù)指針設(shè)數(shù)據(jù)指針n MOVR7,#10H;數(shù)據(jù)長(zhǎng)度數(shù)據(jù)長(zhǎng)度nWAIT: JBCRI,NEXT ;查詢查詢RI標(biāo)志,等待串行口接收結(jié)束標(biāo)志,等待串行口接收結(jié)束n SJMPWAITnNEXT: MOVA,SBUF ;讀取一個(gè)接收字符讀取一個(gè)接收字符n JNB P,COMP ;進(jìn)行奇偶校驗(yàn)進(jìn)行奇偶校驗(yàn)n JNB RB8,ERR ;PRB8,數(shù)據(jù)出錯(cuò),數(shù)據(jù)出錯(cuò)n SJMP RIGHT ;P=RB8,數(shù)據(jù)正確,數(shù)據(jù)正確nCOMP:JB RB8,ERRnRIGHT:MOV R0,A ;保存一個(gè)字符到片內(nèi)保存一個(gè)字符到片內(nèi)RAMn INC R0 ;修改指針修改指針n DJNZ R

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論