![大三上學(xué)習(xí)單片機(jī)串講第7章總_第1頁(yè)](http://file4.renrendoc.com/view/63a1bf303d3a07e6b8afbcfa19d07038/63a1bf303d3a07e6b8afbcfa19d070381.gif)
![大三上學(xué)習(xí)單片機(jī)串講第7章總_第2頁(yè)](http://file4.renrendoc.com/view/63a1bf303d3a07e6b8afbcfa19d07038/63a1bf303d3a07e6b8afbcfa19d070382.gif)
![大三上學(xué)習(xí)單片機(jī)串講第7章總_第3頁(yè)](http://file4.renrendoc.com/view/63a1bf303d3a07e6b8afbcfa19d07038/63a1bf303d3a07e6b8afbcfa19d070383.gif)
![大三上學(xué)習(xí)單片機(jī)串講第7章總_第4頁(yè)](http://file4.renrendoc.com/view/63a1bf303d3a07e6b8afbcfa19d07038/63a1bf303d3a07e6b8afbcfa19d070384.gif)
![大三上學(xué)習(xí)單片機(jī)串講第7章總_第5頁(yè)](http://file4.renrendoc.com/view/63a1bf303d3a07e6b8afbcfa19d07038/63a1bf303d3a07e6b8afbcfa19d070385.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
25二月20231第七章89C51/S51串行口及串行通信技術(shù)7.1串行通信基本知識(shí)7.2串行口及應(yīng)用7.3RS-232C標(biāo)準(zhǔn)接口總線及串行通信硬件設(shè)計(jì)7.489C51/S51與89C51/S51點(diǎn)對(duì)點(diǎn)異步通信7.589C51/S51與PC機(jī)間通信軟件的設(shè)計(jì)7.6PC機(jī)與多個(gè)單片機(jī)間的通信7.7思考題與習(xí)題25二月202327.1.3異步通信和同步通信串行通信有兩種基本通信方式,即異步通信和同步通信。1、異步通信在異步通信中,數(shù)據(jù)是一幀一幀(包括一個(gè)字符代碼或一字節(jié)數(shù)據(jù))傳送的,每一幀的數(shù)據(jù)格式如圖7-3所示圖7-3異步通信數(shù)據(jù)格式25二月202341、異步通信在幀格式中,一個(gè)字符由四個(gè)部分組成:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位。首先是一個(gè)起始為(0),然后是5位--8位數(shù)據(jù)(規(guī)定低位在前,高位在后),接下來(lái)是奇偶校驗(yàn)位(可省略),最后是停止位(1)。25二月202351、異步通信
起始位(0)信號(hào)只占用一位,用來(lái)通知接收設(shè)備一個(gè)待接收的字符開(kāi)始到達(dá)。線路上在不傳送字符時(shí)應(yīng)保持為1。接收端不斷檢測(cè)線路的狀態(tài),若連續(xù)為1以后又測(cè)到一個(gè)0,就知道發(fā)來(lái)一個(gè)新字符,應(yīng)馬上準(zhǔn)備接收。字符的起始位還被用作同步接收端的時(shí)鐘,以保證以后的接收能正確進(jìn)行。起始位后面緊接著是數(shù)據(jù)位,它可以是5位(D0--D4)、6位、7位或8位(D0--D7)。奇偶校驗(yàn)(D8)只占一位,但在字符中也可以規(guī)定不用奇偶校驗(yàn)位,則這一位就可省去。也可用這一位(1/0)來(lái)確定這一幀中的字符所代表信息的性質(zhì)(地址/數(shù)據(jù)等)。停止位用來(lái)表征字符的結(jié)束,它一定是高電位(邏輯1)。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已傳送完畢,同時(shí),也為接收下一個(gè)字符做好準(zhǔn)備--只要再接收到0,就是新的字符的起始位。若停止位以后不是緊接著傳送下一個(gè)字符,則使線路電平保持為高電平(邏輯1)。25二月202363、波特率(Baudrate)波特率,即數(shù)據(jù)傳送速率,表示每秒鐘傳送二進(jìn)制代碼的位數(shù),它的單位是b/s。波特率對(duì)于CPU與外界的通信是很重要的。假設(shè)數(shù)據(jù)傳送速率是120字符/s,而每個(gè)字符格式包含1個(gè)代碼位(1個(gè)起始位、1個(gè)終止位、8個(gè)數(shù)據(jù)位)。這時(shí),傳送的波特率為:
10b/字符×120字符/s=1200b/s25二月202373、波特率(Baudrate)每一位代碼的傳送時(shí)間Td為波特率的倒數(shù)。
Td=1b/(1200bs-1)=0.833ms異步通信的傳送速率在50b/s--19200b/s之間,常用于計(jì)算機(jī)到終端機(jī)和打印機(jī)之間的通信、直通電報(bào)以及無(wú)線電通信的數(shù)據(jù)發(fā)送等。25二月202387.1.4串行通信的過(guò)程及通信協(xié)議1、串←→并轉(zhuǎn)換與設(shè)備同步兩個(gè)通信設(shè)備在串行線路上成功地實(shí)現(xiàn)通信必須解決兩個(gè)問(wèn)題:
一是串←→并轉(zhuǎn)換,即如何把要發(fā)送的并行數(shù)據(jù)串行化,把接收的串行數(shù)據(jù)并行化;
二是設(shè)備同步,即同步發(fā)送設(shè)備與接收設(shè)備的工作節(jié)拍,以確保發(fā)送數(shù)據(jù)在接收端被正確讀出。25二月20239(2)設(shè)備同步進(jìn)行串行通信的兩臺(tái)設(shè)備必須同步工作才能有效地檢測(cè)通信線路上的信號(hào)變化,從而采樣傳送數(shù)據(jù)脈沖。設(shè)備同步對(duì)通信雙方有兩個(gè)共同要求:一是通信雙方必須采用統(tǒng)一的編碼方法;二是通信雙方必須能產(chǎn)生相同的傳送速率。25二月202310(2)設(shè)備同步采用統(tǒng)一的編碼方法確定了一個(gè)字符二進(jìn)制表示值的位發(fā)送順序和位串長(zhǎng)度,當(dāng)然還包括統(tǒng)一的邏輯電平規(guī)定,即電平信號(hào)高低與邏輯1和邏輯0的固定對(duì)應(yīng)關(guān)系。通信雙方只有產(chǎn)生相同的傳送速率,才能確保設(shè)備同步,這就要求發(fā)送設(shè)備和接收設(shè)備采用相同頻率的時(shí)鐘。發(fā)送設(shè)備在統(tǒng)一的時(shí)鐘脈沖上發(fā)出數(shù)據(jù),接收設(shè)備才能正確檢測(cè)出與時(shí)鐘脈沖同步的數(shù)據(jù)信息。25二月2023112、串行通信協(xié)議
通信協(xié)議是對(duì)數(shù)據(jù)傳送方式的規(guī)定,包括數(shù)據(jù)格式定義和數(shù)據(jù)位定義等。通信雙方必須遵守統(tǒng)一的通信協(xié)議。串行通信協(xié)議包括同步協(xié)議和異步協(xié)議兩種。在此只討論異步串行通信協(xié)議和異步串性協(xié)議規(guī)定的字符數(shù)據(jù)的傳送格式。25二月2023122、串行通信協(xié)議(1)起始位通信線上沒(méi)有數(shù)據(jù)被傳送時(shí)處于邏輯1狀態(tài)。當(dāng)發(fā)送設(shè)備要發(fā)送一個(gè)字符數(shù)據(jù)時(shí),首先發(fā)出一個(gè)邏輯0信號(hào),這個(gè)邏輯低電平就是起始位。起始位通過(guò)通信線傳向接收設(shè)備,接收設(shè)備檢測(cè)到這個(gè)邏輯低電平后,就開(kāi)始準(zhǔn)備接收數(shù)據(jù)位信號(hào)。起始位所起的作用就是設(shè)備同步,通信雙方必須在傳送數(shù)據(jù)位前協(xié)調(diào)同步。25二月2023132、串行通信協(xié)議(2)數(shù)據(jù)位
當(dāng)接收設(shè)備收到起始位后,緊接著就會(huì)收到數(shù)據(jù)位。數(shù)據(jù)位的個(gè)數(shù)可以是5、6、7或8。IBM-PC中經(jīng)常采用7位或8位數(shù)據(jù)傳送,89C51/S51串行口采用8位或9位數(shù)據(jù)傳送。這些數(shù)據(jù)位被接收到移位寄存器中,構(gòu)成傳送數(shù)據(jù)字符。在字符數(shù)據(jù)傳送過(guò)程中,數(shù)據(jù)位從最低有效位開(kāi)始發(fā)送,依次順序在接收設(shè)備中被轉(zhuǎn)換為并行數(shù)據(jù)。25二月2023142、串行通信協(xié)議(3)奇偶校驗(yàn)位
數(shù)據(jù)位發(fā)送完之后,可以發(fā)送奇偶校驗(yàn)位。奇偶校驗(yàn)用于有限差錯(cuò)檢測(cè),通信雙方需約定已知的奇偶校驗(yàn)方式。如果選擇偶校驗(yàn),那么組成數(shù)據(jù)位和奇偶位的邏輯1的個(gè)數(shù)必須是偶數(shù);如果選擇奇校驗(yàn),那么邏輯1的個(gè)數(shù)必須是奇數(shù)。25二月2023152、串行通信協(xié)議(4)停止位約定
在奇偶位或數(shù)據(jù)位(當(dāng)無(wú)奇偶校驗(yàn)時(shí))之后發(fā)送的是停止位。停止位是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志,可以是1位,1.5位或2位的高電平。接收設(shè)備收到停止位之后,通信線路上便又恢復(fù)邏輯1狀態(tài),直至下一個(gè)字符數(shù)據(jù)的起始位到來(lái)。25二月2023162、串行通信協(xié)議(5)波特率設(shè)置
通信線上傳送的所有位信號(hào)都保持一致的信號(hào)持續(xù)時(shí)間,每一位的信號(hào)持續(xù)時(shí)間都由數(shù)據(jù)傳送速度確定,而傳送速度是以每秒多少個(gè)二進(jìn)制位來(lái)衡量的,這個(gè)速度叫波特率。如果數(shù)據(jù)以300個(gè)二進(jìn)制位每秒在通信線上傳送,那么傳送速度為300波特,通常記為300b/s。25二月2023177.2串行口及應(yīng)用7.2.189C51/S51串行口7.2.289C51/S51串行口的工作方式及應(yīng)用25二月2023187.2.189C51/S51串行口1、結(jié)構(gòu)2、串行口控制字及控制寄存器3、串行通信工作方式4、波特率設(shè)計(jì)25二月2023191、結(jié)構(gòu)
89C51/S51通過(guò)引腳RXD(P3.0,串行數(shù)據(jù)接收端)和引腳TXD(P3.1,串行數(shù)據(jù)發(fā)送端)與外界進(jìn)行通信。其內(nèi)部結(jié)構(gòu)簡(jiǎn)化示意圖如圖7-7所示。圖中有兩個(gè)物理獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一低值99H,可同時(shí)發(fā)送、接收數(shù)據(jù)。發(fā)送緩沖器只能寫(xiě)入,不能讀出;接收緩沖器只能讀出,不能寫(xiě)入。串行發(fā)送與接收的速率與移位時(shí)鐘同步。89C51/S51用定時(shí)器T1作為串行通信的波特率發(fā)生器,T1溢出率經(jīng)2分頻(或不分頻)后又經(jīng)16分頻作為串行發(fā)送或接收的移位脈沖。移位脈沖的速率即是波特率。圖7-7串行口內(nèi)部結(jié)構(gòu)示意簡(jiǎn)圖25二月2023211、結(jié)構(gòu)從圖中可看出,接收器是雙緩沖結(jié)構(gòu),在前一個(gè)字節(jié)被從接收緩沖器SBUF讀出之前,第二個(gè)字節(jié)即開(kāi)始被接收(串行輸入至移位寄存器),但是,在第二個(gè)字節(jié)接收完畢而前一個(gè)字節(jié)CPU未讀取時(shí),會(huì)丟失前一個(gè)字節(jié)。串行口的發(fā)送和接收都是以特殊功能寄存器SBUF的名義進(jìn)行讀或?qū)懙摹.?dāng)向SBUF發(fā)“寫(xiě)”命令時(shí)(執(zhí)行“MOVSBUF,A”指令),即是向發(fā)送緩沖器SBUF裝載并開(kāi)始由TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完便使發(fā)送中斷標(biāo)志位TI=1。在滿足串行口接收中斷標(biāo)志位RI(SCON.0)=0的條件下,置允許接收位REN(SCON.4)=1就會(huì)接收一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收SBUF中,同時(shí)使RI=1。當(dāng)發(fā)讀SBUF命令時(shí)(執(zhí)行“MOVA,SBUF”命令),便由接收緩沖器(SBUF)取出信息通過(guò)89C51/S51內(nèi)部總線送CPU。
對(duì)于發(fā)送緩沖器,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)的,不會(huì)產(chǎn)生重疊錯(cuò)誤,一般不需要用雙緩沖器結(jié)構(gòu)來(lái)保持最大傳送速率。25二月2023222、串行口控制字及控制寄存器
89C51/S51串行口是可編程接口,對(duì)它初始化編程只用兩個(gè)控制字分別寫(xiě)入特殊功能寄存器SCON(98H)和電源控制寄存器PCON(87H)中即可。(1)SCON(98H)
89C51/S51串行通信的方式選擇、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)志等均由特殊功能寄存器SCON控制和指示,其控制字格式如圖7-8所示。圖7-8串行口控制寄存器SCON25二月2023242、串行口控制字及控制寄存器①SM0和SM1(SCON.7,SCON.6)——串行口工作方式選擇位。兩個(gè)選擇位對(duì)應(yīng)4種通信方式,如表7-1所示。其中,fosc是振蕩頻率。25二月2023252、串行口控制字及控制寄存器②SM2(SCON.5)——多機(jī)通信控制位,主要用于方式2和方式3。
若置SM2=1,則允許多機(jī)通信。當(dāng)一片89C51/S51(主機(jī))與多片89C51/S51(從機(jī))通信時(shí),所有從機(jī)的SM2位都置1。主機(jī)首先發(fā)送的一幀數(shù)據(jù)為地址,即從機(jī)機(jī)號(hào),其中第9位為1,所有的從機(jī)接收到數(shù)據(jù)后,將其中第9位裝入RB8中。各個(gè)從機(jī)根據(jù)收到的第9位數(shù)據(jù)(RB8中)的值來(lái)決定從機(jī)可否再接收主機(jī)的信息。若(RB8)=0,說(shuō)明是數(shù)據(jù)幀,則使接收中斷標(biāo)志位RI=0,信息丟失;若(RB8)=1,說(shuō)明是地址幀,數(shù)據(jù)裝入SBUF并置RI=1,中斷所有從機(jī),被尋址的目標(biāo)從機(jī)清除SM2以接收主機(jī)發(fā)來(lái)的一幀數(shù)據(jù)。其他從機(jī)仍然保持SM2=1。若SM2=0,即不屬于多機(jī)通信情況,則接收一貞數(shù)據(jù)后,不管第九位數(shù)據(jù)是0還是1,都制RI=1,接收到的數(shù)據(jù)裝入SBUF。根據(jù)SM2這個(gè)功能,可實(shí)現(xiàn)多個(gè)89C51/S51應(yīng)用系統(tǒng)的串行通信。在方式1時(shí),若SM2=1,則只有接收到有效停止位時(shí),RI才制1,以便接收下一貞數(shù)據(jù)。在方式0時(shí),SM2必須是0。25二月2023262、串行口控制字及控制寄存器③REN(SCON.4)——允許接收控制位。由軟件置1或清0,只有當(dāng)REN=1時(shí)才允許接收,相當(dāng)于串行接收的開(kāi)關(guān);若REN=0,則禁止接收。在串行通信接收控制過(guò)程中,如果滿足RI=0和REN=1(允許接收)的條件,就允許接收,一幀數(shù)據(jù)就裝載入接收SBUF中。④TB8(SCON.3)——發(fā)送數(shù)據(jù)的第9位(D8)裝入TB8中。在方式2或方式3中,根據(jù)發(fā)送數(shù)據(jù)的需要由軟件置位或復(fù)位。在許多通信協(xié)議中可用作奇偶校驗(yàn)位,也可在多機(jī)通信中作為發(fā)送地址幀或數(shù)據(jù)幀的標(biāo)志位。對(duì)于后者,TB8=1,說(shuō)明該幀數(shù)據(jù)為地址;TB8=0,說(shuō)明該幀數(shù)據(jù)為數(shù)據(jù)字節(jié)。在方式0或方式1中,該為未用。25二月2023272、串行口控制字及控制寄存器⑤RB8(SCON.2)——接收數(shù)據(jù)的第9位。在方式2或方式3中,接收到的第9位數(shù)據(jù)放在RB8位。它或是約定的奇/偶校驗(yàn)位,或是約定的地址/數(shù)據(jù)標(biāo)識(shí)位。在方式2和方式3多機(jī)通信中,若SM2=1,如果RB8=1,說(shuō)明收到的數(shù)據(jù)為地址幀。在方式1中,若SM2=0(即不是多機(jī)通信情況),RB8中存放的是已接收到的停止位。在方式0中,該位未用。⑥TI(SCON.1)——發(fā)送中斷標(biāo)志。在一幀數(shù)據(jù)發(fā)送完時(shí)被置位。在方式0串行發(fā)送第8位結(jié)束或其他方式串行發(fā)送到停止位的開(kāi)始時(shí)由硬件置位,可用軟件查詢。它同時(shí)也申請(qǐng)中斷,TI置位意味著向CPU提供“發(fā)送緩沖器SBUF已空”的信息,CPU可以準(zhǔn)備發(fā)送下一幀數(shù)據(jù)。串行口發(fā)送中斷被響應(yīng)后,TI不會(huì)自動(dòng)清0,必須由軟件清0。25二月2023282、串行口控制字及控制寄存器⑦RI(SCON.0)——接收中斷標(biāo)志。在節(jié)收到一幀有效數(shù)據(jù)后由硬件置位。在方式0中,第8位數(shù)據(jù)發(fā)送結(jié)束時(shí),由硬件置位;在其他三種方式中,當(dāng)接收到停止位中間時(shí)由硬件置位。RI=1,申請(qǐng)中斷,表示一幀數(shù)據(jù)接收結(jié)束,并已裝入接收SBUF中,要求CPU取走數(shù)據(jù)。CPU響應(yīng)中斷,取走數(shù)據(jù)。RI也必須由軟件清0,清除中斷申請(qǐng),并準(zhǔn)備接收下一幀數(shù)據(jù)。串行發(fā)送中斷標(biāo)志TI和接收中斷標(biāo)志RI是同一個(gè)中斷源,CPU事先不知道是發(fā)送中斷TI還是接收中斷RI產(chǎn)生的中斷請(qǐng)求,所以,在全雙工通信時(shí),必須由軟件來(lái)判別。復(fù)位時(shí),SCON所有位均清0。25二月2023292、串行口控制字及控制寄存器(2)PCON(87H)
電源控制寄存器PCON中只有SMOD位與串行口工作有關(guān),如圖7-9所示。圖7-9電源控制寄存器PCON25二月2023302、串行口控制字及控制寄存器
SMOD(PCON.7)——波特率倍增位。在串行口方式1、方式2和方式3時(shí),波特率和SMOD成正比,亦即當(dāng)SMOD=1時(shí),波特率提高一倍。復(fù)位時(shí),SMOD=0。25二月2023313、串行通信工作方式
根據(jù)實(shí)際需要,89C51/S51串行口可設(shè)置4種工作方式,可有8位、10位或11位幀格式。
方式0以8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。其幀格式如下:25二月2023323、串行通信工作方式方式1以10位為一幀傳輸,設(shè)有1個(gè)起始位(0),8個(gè)數(shù)據(jù)位和1個(gè)停止位(1)。其幀格式為:25二月2023333、串行通信工作方式方式2和方式3以11位為1幀傳輸,設(shè)有1個(gè)起始位(0),8個(gè)數(shù)據(jù)位,1個(gè)附加第9位和1個(gè)停止位(1)。其幀格式為:附加第9位(D8)由軟件置1或清0。發(fā)送時(shí)在TB8中,接收時(shí)送RB8中。25二月2023343、串行通信工作方式(1)串行口方式0
方式0為同步移位寄存器輸入/輸出方式,常用于擴(kuò)展I/O口。串行數(shù)據(jù)通過(guò)RXD輸入或輸出,而TXD用于輸出移位時(shí)鐘,作為外接部件的同步信號(hào)。圖7-10(a)為發(fā)送電路,圖7-11(a)為接收電路。這種方式不適用于兩個(gè)89C51/S51之間的直接數(shù)據(jù)通信,但可以通過(guò)外接移位寄存器來(lái)實(shí)現(xiàn)單片機(jī)的接口擴(kuò)展。25二月2023353、串行通信工作方式(2)串行口方式1方式1真正用于串行發(fā)送或接收,為10位通用異步接口。TXD與RXD分別用于發(fā)送與接收數(shù)據(jù)。收發(fā)一幀數(shù)據(jù)的格式為1位起始位、8位數(shù)據(jù)位(低位在前)、1位停止位,共10位。在接收時(shí),停止位進(jìn)入SCON的RB8,此方式的傳送波特率可調(diào)。串行口方式1的發(fā)送和接收時(shí)序如圖7-12(a)和(b)所示25二月2023363、串行通信工作方式方式1發(fā)送時(shí),數(shù)據(jù)從引腳TXD(P3.1)端輸出。當(dāng)執(zhí)行數(shù)據(jù)寫(xiě)入發(fā)送緩沖器SBUF的命令時(shí),就啟動(dòng)了發(fā)送器開(kāi)始發(fā)送。發(fā)送時(shí)的定時(shí)信號(hào),也就是發(fā)送移位時(shí)鐘(TX時(shí)鐘),是由定時(shí)器T1(見(jiàn)圖7-7)送來(lái)的溢出信號(hào)經(jīng)過(guò)16分頻或32分頻(取決于SMOD的值)而得到的,TX時(shí)鐘就是發(fā)送波特率??梢?jiàn),方式1的波特率是可變的。發(fā)送開(kāi)始的同時(shí),SEND變?yōu)橛行?,將起始位向TXD輸出;此后每經(jīng)過(guò)一個(gè)TX時(shí)鐘周期(16分頻計(jì)數(shù)器溢出一次為一個(gè)時(shí)鐘周期,因此,TX時(shí)鐘頻率由波特率決定。)產(chǎn)生一個(gè)移位脈沖,并由TXD輸出一個(gè)數(shù)據(jù)位;8位數(shù)據(jù)位全部發(fā)送完后,置為位TI,并申請(qǐng)中斷置TXD為1作為停止位,再經(jīng)一個(gè)時(shí)鐘周期,SEND失效。25二月2023373、串行通信工作方式
方式1接收時(shí),數(shù)據(jù)從引腳RXD(P3.0)端輸入。接收是在SCON寄存器中REN位置1的前提下,并檢測(cè)到起始位(RXD上檢測(cè)到1→0的跳變,即起始位)而開(kāi)始的。接收時(shí),定時(shí)信號(hào)有兩種(如圖7-12(b)所示):一種是接收移位時(shí)鐘(RX時(shí)鐘),它的頻率和傳送波特率相同,也是由定時(shí)器T1的溢出信號(hào)經(jīng)過(guò)16或32分頻而得到的;另一種是位檢測(cè)器采樣脈沖,它的頻率是RX時(shí)鐘的16倍,亦即在一位數(shù)據(jù)期間有16位檢測(cè)器采樣脈沖,為完成檢測(cè),以16倍于波特率的速率對(duì)RXD進(jìn)行采樣。25二月2023383、串行通信工作方式為了接受準(zhǔn)確無(wú)誤,在正式接受數(shù)據(jù)之前,還必須判定這個(gè)1→0跳變是否是干擾引起的。為此,在這位中間(即一位時(shí)間分成16等份,在第7,第8及第9等份)連續(xù)對(duì)RXD采樣三次,取其中兩次相同的值進(jìn)行判斷。這樣能較好地消除干擾的影響。當(dāng)確認(rèn)是真正的起始位(0)后,就開(kāi)始接受一幀數(shù)據(jù)。當(dāng)一幀數(shù)據(jù)接受完畢后,必須同時(shí)滿足以下兩個(gè)條件,這次接受才真正有效。25二月2023393、串行通信工作方式①RI=0,即上一幀數(shù)據(jù)接收完成時(shí),RI=1發(fā)出的中斷請(qǐng)求已被響應(yīng),SBUF中數(shù)據(jù)已被取走。由軟件使RI=0,以便提供“接收SBUF已空”的信息。②SM2=0或收到的停止位為1(方式1時(shí),停止位進(jìn)入RB8),則將接收到的數(shù)據(jù)裝入串行口的SBUF和RB8(RB8裝入停止位),并置位RI;如果不滿足,接收到的數(shù)據(jù)不能裝入SBUF,這意味著該幀信息將會(huì)丟失。
值得注意的是,在整個(gè)接收過(guò)程中,保證REN=1是一個(gè)先決條件。只有當(dāng)REN=1時(shí),才能對(duì)RXD進(jìn)行檢測(cè)。25二月2023403、串行通信工作方式(3)串行口方式2和方式3
串行口工作在方式2和方式3均為每幀11位異步通信格式,由TXD和RXD發(fā)送與接收(兩種方式操作是完全一樣的,所不同的只是波特率)。每幀11位,即1位起始位,8位數(shù)據(jù)位(低位在前),1位可編程的第9數(shù)據(jù)位和1位停止位。發(fā)送時(shí),第9數(shù)據(jù)位(TB8)可以設(shè)置為1或0,也可將奇偶位裝入TB8,從而進(jìn)行奇偶校驗(yàn);接收時(shí),第9數(shù)據(jù)位進(jìn)入SCON的RB8。方式2和方式3的發(fā)送、接收時(shí)序如圖7-13所示。其操作與方式1類似。25二月2023414、波特率設(shè)計(jì)
在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收的數(shù)據(jù)速率有一定的約定,通過(guò)軟件對(duì)89C51/S51串行口編程可約定四種工作方式。其中,方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來(lái)決定。串行口的四種工作方式對(duì)應(yīng)著三種波特率。由于輸入的移位時(shí)鐘來(lái)源不同,因此,各種方式的波特率計(jì)算公式也不同。25二月2023424、波特率設(shè)計(jì)(1)方式0的波特率由圖7-14可見(jiàn),方式0時(shí),發(fā)送或接收一位數(shù)據(jù)的移位時(shí)鐘脈沖由S6(即第6個(gè)狀態(tài)周期,第12個(gè)節(jié)拍)給出,即每個(gè)機(jī)器周期產(chǎn)生一個(gè)移位時(shí)鐘,發(fā)送或接收一位數(shù)據(jù)。因此,波特率固定為振蕩頻率的1/12,并不受PCON寄存器中SMOD位的影響。圖7-14串行口方式0波特率的產(chǎn)生25二月2023434、波特率設(shè)計(jì)方式0波特率≌f(shuō)osc/12注意,符號(hào)“≌”表示左面的表達(dá)式只是引擁右面表達(dá)式的數(shù)值,即右面的表達(dá)式是提供了一種計(jì)算的方法。25二月2023444、波特率設(shè)計(jì)(2)方式2的波特率串行口方式2波特率的產(chǎn)生與方式0不同,即輸入的時(shí)鐘源不同,其時(shí)鐘輸入部分入圖7-15所示。控制接收與發(fā)送的移位時(shí)鐘由振蕩頻率fosc的第二節(jié)拍P2時(shí)鐘(即fosc/2)給出,所以,方式2波特率取決于PCON中SMOD位的值:SMOD=0時(shí),波特率為fosc的1/64;SMOD=1時(shí),波特率為fosc的1/32。即方式2波特率≌2SMOD/64×fosc圖7-15串行口方式2波特率的產(chǎn)生25二月2023454、波特率設(shè)計(jì)(3)方式1和方式3的波特率方式1和方式3的移位時(shí)鐘脈沖由定時(shí)器T1的溢出率決定,如圖7-16所示。因此,89C51/S51串行口方式1和方式3的波特率由定時(shí)器T1的溢出率與SMOD值同時(shí)決定。即方式1、方式3波特率≌T1溢出率/n圖7-16串行口方式1、方式3波特率的產(chǎn)生返回25二月202346定時(shí)初值:
對(duì)機(jī)器周期進(jìn)行計(jì)數(shù)。T:定時(shí)時(shí)間,X:初值,N:計(jì)數(shù)器位數(shù),fosc:系統(tǒng)時(shí)鐘頻率,則:(2N-X)×12/fosc=TX=2N-fosc/12×T計(jì)數(shù)初值:
對(duì)外部脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)值根據(jù)要求確定。N:計(jì)數(shù)器位數(shù),X:初值,則:
X=2N-計(jì)數(shù)值25二月2023474、波特率設(shè)計(jì)
當(dāng)SMOD=0時(shí),n=32;SMOD=1時(shí),n=16。所以,可用下式確定方式1和方式3的波特率:方式1、方式3波特率≌2SMOD/32×(T1溢出速率)其中,T1溢出速率取決于T1的計(jì)數(shù)速率(計(jì)數(shù)速率≌f(shuō)osc/12)和T1預(yù)置的處置。若定時(shí)器T1采用模式1時(shí),波特率公式如下:串行方式1、方式3波特率≌2SMOD/32×(fosc/12)/(256-初值)25二月2023484、波特率設(shè)計(jì)因此,T1溢出速率為T(mén)1溢出速率≌(fosc/12)/(28-X)于是,可得出定時(shí)器T1模式2的初始值X:25二月2023494、波特率設(shè)計(jì)表7-2列出了串行口方式1、方式3常用波特率及其初值。定時(shí)器T1用作波特率發(fā)生器時(shí),通常選用定時(shí)器模式2(自動(dòng)重裝初值定時(shí)器)比較實(shí)用。要設(shè)置定時(shí)器T1為定時(shí)方式(使C/T=0),讓T1計(jì)數(shù)內(nèi)部振蕩脈沖,即計(jì)數(shù)速率為fosc/12(注意應(yīng)禁止T1中斷,以免溢出而產(chǎn)生不必要的中斷)。先設(shè)定TH1和TL1定時(shí)即輸初值為X,那么每過(guò)“28-X”個(gè)機(jī)器周期,定時(shí)器T1就會(huì)產(chǎn)生一次溢出。25二月2023502、串行口控制字及控制寄存器①SM0和SM1(SCON.7,SCON.6)——串行口工作方式選擇位。兩個(gè)選擇位對(duì)應(yīng)4種通信方式,如表7-1所示。其中,fosc是振蕩頻率。25二月2023512.方式1和方式3的波特率可變,由定時(shí)器1的溢出率決定波特率/(b/s)fosc/MHzSMOD定時(shí)器1C/模式初始值方式0:1M方式2:375k方式1、3:62.5k19.2k9.6k4.8k2.4k1.2k137.5k11011012121211.05911.05911.05911.05911.05911.986612×1110000000××000000000××222222221××FFHFDHFDHFAHF4HE8H1DH72HFEEBHT波特率=25二月2023524、波特率設(shè)計(jì)例7-1:89C51/S51單片機(jī)時(shí)鐘振蕩頻率為11.0592MHz,選用定時(shí)器T1工作模式2作為波特率發(fā)生器,波特率為2400b/s,求初值。解:設(shè)置波特率控制為(SMOD)=0所以,(TH1)=(TL1)=F4H。25二月2023532、串行口方式1的發(fā)送和接收例7-2:89C51/S51串行口按雙工方式收發(fā)ASCII字符,最高位用來(lái)作奇偶校驗(yàn)位,采用可校驗(yàn)方式,要求傳送的波特率為1200b/s。編寫(xiě)有關(guān)的通信程序。解:7位ASCII碼加1位奇校驗(yàn)共8位數(shù)據(jù),故可采用串行口方式1。
89C51/S51單片機(jī)的奇偶校驗(yàn)位P是當(dāng)累加器A中1的數(shù)目為奇數(shù)時(shí),P=1。如果直接把P的值放入ASCII碼的最高位,恰好成了奇偶校驗(yàn),與要求不符。因此,要把P的值取反以后放入ASCII碼最高位,才是要求的奇校驗(yàn)。25二月2023542、串行口方式1的發(fā)送和接收
雙工通信要求收、發(fā)能同時(shí)進(jìn)行。實(shí)際上,收、發(fā)操作主要是在串行接口進(jìn)行,CPU只是把數(shù)據(jù)從接收緩沖器讀出和把數(shù)據(jù)寫(xiě)入發(fā)送緩沖器。數(shù)據(jù)傳送用中斷方式進(jìn)行,響應(yīng)中斷以后,通過(guò)檢測(cè)是RI置位還是TI置位來(lái)決定CPU是進(jìn)行發(fā)送操作還是接收操作。發(fā)送和接收都通過(guò)調(diào)用子程序來(lái)完成,設(shè)發(fā)送數(shù)據(jù)區(qū)的首地址為20H,接收數(shù)據(jù)區(qū)的首地址為40H,fosc為6MHz,通過(guò)查波特率初值(表7-2)可知定時(shí)器的初裝值為F3H。定時(shí)器T1采用工作模式2,可以避免計(jì)數(shù)溢出后用軟件重裝定時(shí)初值的工作。25二月2023552、串行口方式1的發(fā)送和接收程序清單:主程序
MOVTMOD,#20H;定時(shí)器1設(shè)為模式2MOVTL1,#0F3H;定時(shí)器初值
MOVTH1,#0F3H;8位重裝值
SETBTR1;啟動(dòng)定時(shí)器1MOVSCON,#50H;設(shè)置為方式1, ;REN=1MOVR0,#20H;發(fā)送數(shù)據(jù)區(qū)首址
MOVR1,#40H;接收數(shù)據(jù)取首址
ACALLSOUT;先輸出一個(gè)字符
SETBESSETBEASJMP$;等待中斷
中斷服
ORG0023H;串行口中斷入口
AJMPSBR1;轉(zhuǎn)至中斷服務(wù)程序
ORG0100HSBR1:JNBRI,SEND;TI=1,為發(fā)送中斷
ACALLSIN;RI=1,為接收中斷
SJMPNEXT;轉(zhuǎn)至統(tǒng)一的出口SEND:ACALLSOUT;調(diào)用發(fā)送子程序NEXT:RETI;中斷返回25二月2023562、串行口方式1的發(fā)送和接收發(fā)送子程序
SOUT:CLRTIMOVA,@R0;取發(fā)送數(shù)據(jù)到AMOVC,P;奇偶標(biāo)識(shí)賦予CCPLC;奇校驗(yàn)
INCR0;修改發(fā)送數(shù)據(jù)指針
MOVSBUF,A;發(fā)送ASCII碼
RET;返回接收子程序
SIN:CLRRI MOVA,SBUF;讀出接收緩沖區(qū)內(nèi)容
MOVC,P;取出校驗(yàn)位
CPLC;奇校驗(yàn)
ANLA,#7FH;刪去校驗(yàn)位
MOV@R1,A;讀入接收緩沖區(qū)
INCRI;修改接收數(shù)據(jù)指針
RET;返回25二月2023572、串行口方式1的發(fā)送和接收在主程序中已初始化REN=1,則允許接收。以上程序基本上具備了全雙工通信的能力,但不能說(shuō)很完善。例如,再接收子程序中,雖然檢驗(yàn)了奇偶校驗(yàn)位,但沒(méi)有進(jìn)行出錯(cuò)處理;另外,發(fā)送和接收數(shù)據(jù)區(qū)的范圍都很有限,也不能滿足實(shí)際需要。但有了一個(gè)基本的框架之后,逐漸完善還是可以做到的。25二月2023582、串行口方式1的發(fā)送和接收例7-5:采用查詢方式由串行口發(fā)送帶奇偶校驗(yàn)位的數(shù)據(jù)塊。解:本理由內(nèi)部RAM單元20H-3FH取出ASCII碼數(shù)據(jù),在最高位上加奇偶校驗(yàn)位后由串行口發(fā)出。采用8位異步通信方式,波特率為1200b/s,fosc=11.059MHz。由要求可知,應(yīng)把串行口設(shè)置為方式1,采用定時(shí)器1模式2作為波特率發(fā)生器,預(yù)置值(TH1)=0E8H。25二月2023592、串行口方式1的發(fā)送和接收程序清單:主程序;
MOVTMOD,#20H ;設(shè)置定時(shí)器1為模式2 MOVTL1,#0E8H ;初值,波特率為1200b/s MOVTH1,#0E8H SETBTR1 ;啟動(dòng)T1運(yùn)行
MOVSCON,#01000000B ;設(shè)置串行口為方式1 MOVR0,#20H MOVR7,#32 ;數(shù)據(jù)塊長(zhǎng)度LOOP: MOVA,@R0ACALLSP-OUTJNBP,ERROR;傳輸出錯(cuò)處理,由SP-OUT中“CPLC”結(jié)果決定
INCR0DJNZR7,LOOP ……25二月2023602、串行口方式1的發(fā)送和接收串行口發(fā)送子程序(奇校驗(yàn));SP-OUT:MOVC,PSW.0;設(shè)置奇校驗(yàn)位,校驗(yàn)位P=1為奇校驗(yàn)
CPLC;奇校驗(yàn)(無(wú)此指令位偶校驗(yàn))
MOVACC.7,C;ACC.7補(bǔ)0或1MOVSBUF,A;啟動(dòng)串行口發(fā)送過(guò)程
CLRTI;清TI標(biāo)志,允許在發(fā)送
RETERROR:(略)25二月2023612、串行口方式1的發(fā)送和接收例7-6:由串行口接收帶奇偶校驗(yàn)位的數(shù)據(jù)塊。解:采用查詢方式,本例與上例相呼應(yīng),接收器把接收到的32B數(shù)據(jù)存放在20H-30H單元內(nèi),波特率同上,若奇偶校驗(yàn)出錯(cuò)則置進(jìn)位位為1。程序清單:25二月2023622、串行口方式1的發(fā)送和接收主程序;
MOVSCON,#01010000B;設(shè)串口方式1,允許接收
MOVTMOD,#20H ;設(shè)置定時(shí)器T1為模式2 MOVTL1,#0E8H ;初值,波特率為1200b/s MOVTH1,#0E8H SETBTR1 ;啟動(dòng)T1運(yùn)行
MOVR0,#20H MOVR7,#32 ;數(shù)據(jù)塊長(zhǎng)度LOOP: ACALLSP-IN ;調(diào)接收一幀子程序
JCERROR ;由SP-IN中“CPLC”結(jié)果決定
MOV@R0,A ;存放接收的數(shù)據(jù)
INCR0DJNZR7,LOOP……25二月2023632、串行口方式1的發(fā)送和接收接收一幀子程序;
SP-IN: JNBRI,$ ;RI由硬件置位
CLRRI ;軟件清除RI MOVA,SBUF MOVC,P ;檢查奇校驗(yàn)位
CPLC ;置C為主程序“JCERR
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美發(fā)店員工合同范本(7篇)
- 2024-2025學(xué)年第2課諸侯紛爭(zhēng)與變法運(yùn)動(dòng)-勤徑學(xué)升高中歷史必修上同步練測(cè)(統(tǒng)編版2019)
- 2025年企業(yè)市場(chǎng)營(yíng)銷合作伙伴協(xié)議
- 2025年酒店客房用品訂購(gòu)合同模板
- 2025年不動(dòng)產(chǎn)權(quán)益讓與擔(dān)保協(xié)議版
- 2025年電動(dòng)車維修服務(wù)合同示范
- 2025年水文測(cè)量?jī)x器項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模范
- 2025年企業(yè)銷售專員合同格式
- 2025年戀愛(ài)雙方保密協(xié)議策劃模板
- 2025年度股權(quán)變更持有人協(xié)議
- GB/T 5019.5-2023以云母為基的絕緣材料第5部分:電熱設(shè)備用硬質(zhì)云母板
- 《工傷保險(xiǎn)專題》課件
- 2024年農(nóng)發(fā)集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 京東運(yùn)營(yíng)課件
- 安寧療護(hù)中的人文護(hù)理課件
- 頭痛的護(hù)理小課件
- 熱工基礎(chǔ)(第二版)-張學(xué)學(xué)(8)第七章
- 南京師范大學(xué)-高等數(shù)學(xué)-期末試卷20套
- 胸痛中心培訓(xùn)課件高危胸痛識(shí)別
- 2023年新高考物理廣東卷試題真題及答案詳解(精校版)
- 研學(xué)旅行課程標(biāo)準(zhǔn)(一)-前言、課程性質(zhì)與定位、課程基本理念、課程目標(biāo)
評(píng)論
0/150
提交評(píng)論