版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)的串行接口基本概念、工作原理和應(yīng)用編程本章介紹的主要內(nèi)容串行通信的基本概念串行通信接口結(jié)構(gòu)和工作原理串行通信的控制寄存器串行通信的應(yīng)用編程 8 .1 概 述 單片機(jī)應(yīng)用與數(shù)據(jù)采集或工業(yè)控制時(shí),往往作為前端機(jī)安裝在工業(yè)現(xiàn)場(chǎng),遠(yuǎn)離主機(jī),現(xiàn)場(chǎng)數(shù)據(jù)采用串行通信方式發(fā)往主機(jī)進(jìn)行處理,以降低通信成本,提高通信可靠性。如下圖所示。 數(shù)據(jù)通信方式有兩種:并行通信與串行通信。下面是兩種通信方式的示意圖:并行通信: 所傳送數(shù)據(jù)的各位同時(shí)發(fā)送或接收,數(shù)據(jù)有多少位就需要多少根數(shù)據(jù)線。 特點(diǎn):速度快,成本高,適合近距離傳輸。如計(jì)算機(jī)并口,打印機(jī),8255 。 串行通信: 所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收
2、。只需一根數(shù)據(jù),一根地線,共2根(如雙向通信發(fā)送和接收各需1根數(shù)據(jù)線。) 特點(diǎn):成本低,硬件方便,適合遠(yuǎn)距離通信,傳輸速度低。 通信的雙方應(yīng)該有一個(gè)約定,什么時(shí)候開始發(fā)送,什么時(shí)候發(fā)送完畢;接收方收到的信息是否正確等,這就是通信協(xié)議。串行通信的分類:同步串行通信和異步串行通信一、異步通信: 異步串行通信一幀數(shù)據(jù)格式: 一個(gè)起始位 “0”,表示字符的開始,然后是58位數(shù)據(jù)即該字符的代碼,規(guī)定低位在前,高位在后,接 下來是奇偶校驗(yàn)位(可省略),最后以停止位“1”表示字符的結(jié)束。優(yōu)點(diǎn):硬件結(jié)構(gòu)簡(jiǎn)單。缺點(diǎn):傳輸速度慢。P1D0D1D2D3D4D5D6D7P10第n個(gè)字符(一幀)n-1n+10D0起始位
3、數(shù)據(jù)位(58位)校驗(yàn)位停止位SYN字符1SYN字符2數(shù)據(jù)1數(shù)據(jù)2.數(shù)據(jù)n連續(xù)傳送n 個(gè)數(shù)據(jù)校驗(yàn)二、同步通信 在同步通信中,發(fā)送方在數(shù)據(jù)或字符開始處就用同步字符(常約定12個(gè)字節(jié))指示一幀的開始 ,由時(shí)鐘來實(shí)現(xiàn)發(fā)送端和接收端同步,接收方一旦檢測(cè)到與規(guī)定的同步字符符合,下面 就連續(xù)按順序傳送若干個(gè)數(shù)據(jù) ,最后發(fā)校驗(yàn)字節(jié)。見下圖:2. 半雙工方式 三、單工、半雙工、全雙工通信方式按通信方向分類:?jiǎn)喂?、半雙工、全雙工通信方式 1.單工方式: 一端是發(fā)送端,另外一端是接收端:電臺(tái)與收音機(jī) 每端口有一個(gè)發(fā)送器和一個(gè)接收器,通過開關(guān)連接在線路上,數(shù)據(jù)可以雙向傳送,但不能同時(shí)發(fā)送和接收. 要通過換向器轉(zhuǎn)換方向
4、。對(duì)講機(jī) 通信雙方用兩個(gè)獨(dú)立的收發(fā)器單獨(dú)連接,可以同時(shí)發(fā)送和接收數(shù)據(jù),因而提高了速度。 機(jī) 3. 全雙工方式 在串行傳輸中,通信的雙方都按通信協(xié)議進(jìn)行,所謂通信協(xié)議就是通信雙方必須共同遵守的 一種約定,約定包括數(shù)據(jù)的格式、同步的方式、傳送的步驟、檢糾錯(cuò)方式及控制字符的定義 等。 串行接口的基本任務(wù)就是: 1.實(shí)現(xiàn)數(shù)據(jù)格式化 因?yàn)镃PU發(fā)出的數(shù)據(jù)是并行數(shù)據(jù),接口電路應(yīng)實(shí)現(xiàn)不同串行通信方式下的數(shù)據(jù)格式化任務(wù), 如自動(dòng)生成起止方式的幀數(shù)據(jù)格式(異步方式)或在待傳送的數(shù)據(jù)塊前加上同步字符等。2.進(jìn)行串、并轉(zhuǎn)換 在發(fā)送端,接口將CPU送來的并行信號(hào)轉(zhuǎn)換成串行數(shù)據(jù)進(jìn)行傳送;而在接收端,接口要將接 收到串行
5、數(shù)據(jù)變成并行數(shù)據(jù)送往CPU,由CPU進(jìn)行處理。3.控制數(shù)據(jù)的傳輸速率 接口應(yīng)具備對(duì)數(shù)據(jù)傳輸率波特率的控制選擇能力,即具有波特率發(fā)生器。4.進(jìn)行傳送錯(cuò)誤檢測(cè) 在發(fā)送時(shí),對(duì)傳送的數(shù)據(jù)自動(dòng)生成校驗(yàn)位或校驗(yàn)碼,在接收端能檢查校驗(yàn)位或校驗(yàn)碼,以確定傳送中是否有誤碼。 51系列單片機(jī)內(nèi)有一個(gè)全雙工的異步通信接口,通過對(duì)串行接口寫控制字可以選擇其數(shù)據(jù)格式,同時(shí)內(nèi)部有波特率發(fā)生器,提供可選的波特率,可完成雙機(jī)通信或多機(jī)通信。4. 串行通信接口 串行接口通常分為兩種類型:串行通信接口和串行擴(kuò)展接口。 串行通信接口(Serial Communication Interface,SCI) 是指設(shè)備之間的互連接口,它
6、們互相之間距離比較長(zhǎng)。如當(dāng)代PC機(jī)的COM接口(COM1-COM4)和USB接口。 USB(Universal Serial Bus,通用串行總線)是近幾年開發(fā)的新規(guī)范,它使得設(shè)備的連接簡(jiǎn)單快捷,并且支持熱插拔,易于擴(kuò)展,被廣泛應(yīng)用于PC機(jī)和嵌入式系統(tǒng)上。 近年來推出有RS-422/423、RS-485等串行通信標(biāo)準(zhǔn),其采用平衡通信接口,即在發(fā)送端將TTL電平信號(hào)轉(zhuǎn)換成差分信號(hào)輸出,接收端將差分信號(hào)變成TTL電平信號(hào)輸入,提高了抗干擾能力,使通信距離增加到幾十米至上千米,并且增加了多點(diǎn)、雙向通信能力。 PC機(jī)上的COM1-COM4口使用的是RS-232C串行通信標(biāo)準(zhǔn)接口,本章僅介紹RS-232
7、C接口,其它接口可參考有關(guān)資料。 以上標(biāo)準(zhǔn)都有專用芯片實(shí)現(xiàn)通信協(xié)議,這些接口芯片稱為收發(fā)器。 串行擴(kuò)展接口是設(shè)備內(nèi)部器件之間的互連接口,常用的串行擴(kuò)展接口規(guī)范有SPI、I2C等。串行接口擴(kuò)展的芯片很多,可以根據(jù)需要選擇。 五. 波特率 單位時(shí)間內(nèi)傳送的信息量。在計(jì)算機(jī)中,以每秒傳送的二進(jìn)制位數(shù)為單位。例如:100字符/秒,1個(gè)字符11位, 波特率為:10011=1100(波特) 平均每位傳送占用時(shí)間 六. 串行通信總線標(biāo)準(zhǔn)及接口(一)通信線的連接 通信速率和通信距離這兩個(gè)方面是相互制約的,降低通信速率,可以提高通信距離. 不同的通信距離,串行通信電路有不同的連接方法 RXD TXD GNDRX
8、DTXDGNDRXDTXDGND電平轉(zhuǎn)換RXDTXDGNDRXDTXDGND電平轉(zhuǎn)換RXDTXDGND微機(jī)微機(jī)其他設(shè)備較遠(yuǎn)距離傳送電路近距離傳送電路RS-232RS-232微機(jī)接口調(diào)制解調(diào)器調(diào)制解調(diào)器接口微機(jī)電話分機(jī)電話分機(jī)遠(yuǎn)距離傳送電路 數(shù)字信號(hào)通過調(diào)制器變成模擬信號(hào)通過 線傳送到對(duì)方,接收方通過解調(diào)器將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)接收。 測(cè)控系統(tǒng)中,計(jì)算機(jī)通信主要采用異步串行通信方式,常用的異步總線標(biāo)準(zhǔn)有三種:1、RS-232(RS-232A RS-232B RS-232C)2、RS-449 (RS422 RS423 RS485)3、20mA電流環(huán) 這里重點(diǎn)介紹RS-232 RS-232C:速率
9、:20Kbit/S, 最大通信距離 : 15m RS422: 10Mbit/s, : 300m 90Kbit/s, :1200m(二)串行通信接口總線標(biāo)準(zhǔn)抗干擾能力 采用標(biāo)準(zhǔn)的通信接口,本身具有一定的抗干擾能力,但是工業(yè)現(xiàn)場(chǎng)的情況往往很惡劣,因而要根據(jù)具體情況進(jìn)行選擇。 RS232C:一般場(chǎng)合 RS422: 共模信號(hào)比較強(qiáng) 光纖: 電磁干擾較強(qiáng)二、RS232C 美國(guó)電子工業(yè)協(xié)會(huì)(EIA)公布的一種異步通信標(biāo)準(zhǔn)。 RS232C標(biāo)準(zhǔn)是:設(shè)備之間通信的距離不大于15米最大傳輸速率20KB/S采用負(fù)邏輯:“1” 5V 15V “0” +5V + 15V不帶負(fù)載時(shí)輸出電平:25V +25V輸出短路電流:
10、 最大負(fù)載電容: 2500pF 當(dāng)計(jì)算機(jī)采用RS232標(biāo)準(zhǔn)時(shí)必須通過電平,MAX232 是EIA和TTL電平轉(zhuǎn)換芯片。內(nèi)部具有電壓提升電路,并有兩路接收器和發(fā)送器。其連線和引腳如圖。 TTL電平可以由專用集成電路轉(zhuǎn)換成RS232C標(biāo)準(zhǔn); 如: MC1488 或 75188 TTL RS232C 從MC1489 或 75189 RS232C TTL 由于MC1488需要采用12V電源,一般在單片機(jī)通信中大量使用的是只需要+5V電源、具有發(fā)送和接收的一體化芯片,如:MAX232、ICL232、ADM202等。 MAX232的引腳和電路如下: RXD TXD GNDTXDGND8xx518xx51R
11、XDMCS51和PC機(jī)的雙機(jī)通信MCS51和PC機(jī)的雙機(jī)通信見下圖 MCS51之間的雙機(jī)通信8.2 MCS-51的串行口結(jié)構(gòu) 51單片機(jī)有一個(gè)可編程的全雙工異步串行通信接口,它可作異步串行通信(UART)用,也可作同步移位寄存器,其幀格式可有8位、10位或l l位,并能設(shè)置各種波特率,給使用者帶來很大的靈活性。 一、串行口的內(nèi)部結(jié)構(gòu) 51單片機(jī)通過引腳RXD(P3.0)串行數(shù)據(jù)接收端和引腳TXD(P3.l)串行數(shù)據(jù)發(fā)送端與外界進(jìn)行通信。 圖中有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一地址99H,可同時(shí)發(fā)送、接收數(shù)據(jù)。 發(fā)送緩沖器只能寫入,不能讀出,CPU寫SBUF,一方面修改發(fā)送
12、寄存器,同時(shí)啟動(dòng)數(shù)據(jù)串行發(fā)送; 接收緩沖器只能讀出、不能寫入。讀SBUF,就是讀接收寄存器。串行控制寄存器SCON 用以存 放串行口的控制和狀態(tài)信息。8XX51串行口正是通過對(duì)上述專用寄存器的設(shè)置、檢測(cè)與讀取來管理串行通信的。特殊功能寄存器PCON的最高位SMOD為串行口波特率的倍增控制位。波特率發(fā)生器 可以有兩種選擇: 1. 定時(shí)器T1作波特率發(fā)生器,改變計(jì)數(shù)初值就可以改變串行通信的速率,稱為可變波特率。 2. 以內(nèi)部時(shí)鐘的分頻器作波特率發(fā)生器,因內(nèi)部時(shí)鐘頻率一定,稱為固定波特率shift串行數(shù)據(jù)CPU SBUFMOV A , SBUFshiftMOV SBUF , A并行數(shù)據(jù)甲方(發(fā)送)乙
13、方(接收) TICPU SBUF并行數(shù)據(jù)RI 甲方發(fā)送時(shí),CPU執(zhí)行指令 MOV SBUF , A 啟動(dòng)了發(fā)送過程,數(shù)據(jù)并行送入SBUF ,在發(fā)送時(shí)鐘 shift的控制下由低位到高位一位一位發(fā)送,乙方在接收時(shí)鐘 shift 的控制下由低位到高位 順序進(jìn)入移位寄存器SBUF ,甲方一幀數(shù)據(jù)發(fā)送完畢,置位發(fā)送中斷標(biāo)志TI,該位可作為查詢標(biāo)志(或引起中斷),CPU可再發(fā)送下一幀數(shù)據(jù) 。二、串行通信的傳送過程用下面簡(jiǎn)圖說明乙方一幀數(shù)據(jù)到齊即接收緩沖器滿,置位接收中斷標(biāo)志RI,該位可作為查詢標(biāo)志(或引起接收中斷),通過MOV A ,SBUF CPU將這幀數(shù)據(jù)并行讀入。 由上述可知:甲、乙方的移位時(shí)鐘頻率
14、應(yīng)相同,即應(yīng)具有相同的波特率,否則會(huì)造成數(shù)據(jù)丟失。發(fā)送方是先發(fā)數(shù)據(jù)再查標(biāo)志,接收方是先查標(biāo)志再收數(shù)據(jù)。 CPU通過指令和SBUF并行交換數(shù)據(jù),并不能控制數(shù)據(jù)的串行移位,它只能查詢標(biāo)志位來確定數(shù)據(jù)的移位是否完成。三、串行口的控制寄存器 51單片機(jī)串行口是一個(gè)可編程接口,對(duì)它的編程只用兩個(gè)控制字分別寫入特殊功能寄存器: 串行口控制寄存器SCON(98H) 電源控制寄存器PCON(97H) SM0SM1 SM2RENTB8RB8TIRI方式選擇多機(jī)控制串行接收允許/ 禁止欲發(fā)的第九位收到的第九位發(fā)送中斷有/無接收中斷有/無8.3 串行口的控制寄存器 8.3.1 串行口的控制寄存器SCON 8XX51
15、串行通信的方式選擇 ,接受和發(fā)送控制及串行口的標(biāo)志均由專用寄存器SCON控制和指示,其格式如下:SM0.SM1:串行口工作方式控制位。 0 0-方式0, 0 1-方式1 1 0-方式2, 1 1-方式3REN:串行接收允許位。 0-禁止接收, 1-允許接收TB8: 在方式2,3中,TB8是發(fā)送機(jī)要發(fā)送的第9位數(shù)據(jù)。RB8:在方式2,3中,RB8是接受機(jī)收到的第9位數(shù)據(jù),該數(shù)據(jù)來自發(fā)送機(jī)的TB8。TI: 發(fā)送中斷標(biāo)志位。發(fā)送前必須用軟件清零,發(fā)送過程中TI保持零電平,發(fā)送完一幀數(shù)據(jù)后,由硬件置 “1”,如果再發(fā)送,必須用軟件再清零。RI: 接收中斷標(biāo)志位。 接收前,必須用軟件清零,接收過程中RI
16、保持零電平,接收完一幀數(shù)據(jù)后由片內(nèi)硬件自動(dòng)置“1”。如果再接收必須用軟件清零。SM2:多機(jī)通信控制位,僅用于方式2和方式3。 當(dāng)選擇方式2或方式3時(shí),發(fā)送機(jī)設(shè)置SM2=1, 以發(fā)送第九位TB8為1作為地址幀尋找從機(jī),以TB8為0作為數(shù)據(jù)幀進(jìn)行通信,從機(jī)初始化時(shí)設(shè)置SM2=1,若接收到的第九位數(shù)據(jù)RB8=0,不置位RI,即不引起接收中斷,亦既不接收數(shù)據(jù)幀,繼續(xù)監(jiān)聽,如接收到的RB8=1,置位RI,引起接收中斷, 中斷程序中判斷所接收的地址幀和本機(jī)的地址是否符合,若不符合,維持SM2=1,繼續(xù)監(jiān)聽,若符合,則清SM2,接收對(duì)放發(fā)來的后續(xù)信息。綜上所述,SM2的作用為:在方式2, 3中,發(fā)送機(jī)SM2
17、=1(程序設(shè)置). 接收機(jī)SM2=1,若RB8=1,激活RI,引起接收中斷. RB8=0,不激活RI,不引起接斷. SM2=0,無論RB8=1還是RB8=0均激活RI引起接收中斷。 在方式1中, 當(dāng)接收時(shí)SM2=1, 則只有收到有效停止位才激活RI,在方式 0 中, SM2應(yīng)置為0。SMODXXXXXXXPCON87HSMOD : 波特率加倍位。在計(jì)算串行方式 1、 2、 3的波特 率時(shí), SMOD 0不加倍; SMOD 1 加倍 PCON的字節(jié)地址為87H,無位地址, 只能字節(jié)尋址,初始化時(shí)SMOD=0。 8 .3. 2 電源控制寄存器PCON PCON的格式如下圖所示,串行通信只用其中的最
18、高位SMOD(1)方式0的數(shù)據(jù)格式為8位,低位在前,高位在后(2)RXD為串行數(shù)據(jù)的發(fā)送端或接收端,(3)TXD輸出頻率為fosc/12的時(shí)鐘脈沖。(4)波特率固定為fosc/12 (fosc為單片機(jī)晶振頻率)8.4 串行口的工作方式 根據(jù)串行通信數(shù)據(jù)格式和波特率的不同, 51系列單片機(jī)的串行通信有四種工作方式,通過編程進(jìn)行選擇,各工作方式的特點(diǎn)如下:1.方式0 移位寄位器方式多用于接口的擴(kuò)展,當(dāng)用單片機(jī)構(gòu)成系統(tǒng)時(shí),往往感到并行口不夠用,此時(shí)可通過外接串入并出移位寄存器擴(kuò)展輸出接口;通過外接并入串出移位寄存器擴(kuò)展輸入接口,方式 0 也可應(yīng)用于短距離的單片機(jī)之間的通信。 使用方式0實(shí)現(xiàn)數(shù)據(jù)的移位
19、輸入/輸出時(shí),實(shí)際上是把串行口變成并行口使用。串行口作為并行輸出口使用時(shí),要有“串入并出”的移位寄存器配合(例如CD4049或74HC164),其電路連接如圖所示。 如果把實(shí)現(xiàn)并入串出功能的移位寄存器(例如CD4014或74HC165)與串行口配合使用,如圖所示,就可以把串行口變?yōu)椴⑿休斎肟谑褂谩?使用74HC164的并行輸出引腳接8支發(fā)光二極管,利用它的串入并出功能,把發(fā)光二極管從左向右輪流點(diǎn)亮,并反復(fù)循環(huán)。發(fā)光二極管為共陰極型,電路連接如圖所示。1.串口方式0應(yīng)用(1) 匯編語言編程 ORG1000HSTART:MOV SCON, #00H;置串行口工作方式0 MOV A, #80H ;最
20、高位燈先亮 OUT0: MOV SBUF, A;開始串行輸出OUT1: JNB TI, OUT1 ;輸出完否?未完, 等待;完了,繼續(xù)執(zhí)行 CLR TI ;完了,清零TI標(biāo)志位,以備下次發(fā)送 ACALL DELAY ;延時(shí)一段時(shí)間 RR A ;循環(huán)右移 SJMP OUT0 ;循環(huán);延時(shí)子程序DELAY: MOV R7, #250D1: MOV R6, #250D2:DJNZR6, D2 DJNZR7, D1 RET END(2) C51編程#include #include #define out_on P10=1extern void delay(void); /*外部延時(shí)函數(shù)*/void
21、main( )unsigned char i;SCON=0 x00; /*串行口方式0工作*/ES=0; /*禁止串行中斷*/ out_on;分析:當(dāng)串行口把8位狀態(tài)碼串行移位輸出后,TI置1。把TI作為狀態(tài)查詢標(biāo)志,使用查詢方法。for(; ; )for(i=0; i8; i+) SBUF=_cror_(0 x80, i); /*串行輸出*/while(!TI) /*狀態(tài)查詢*/ TI=0; /*清發(fā)送中斷標(biāo)志*/delay( ); /*狀態(tài)維持*/ 2.方式1 為10位異步通信方式, 每幀數(shù)據(jù)由1個(gè)起始位“0”,八個(gè)數(shù)據(jù)位和1個(gè)停止位“1”共10位構(gòu)成.其中起始位和停止位在發(fā)送時(shí)是自動(dòng)插入
22、的。以TXD為串行數(shù)據(jù)的發(fā)送端,T1提供移位時(shí)鐘, RXD為數(shù)據(jù)的接收端,由T1提供移位時(shí)鐘,是波特率可變方式:根據(jù)給定的波特率,可以計(jì)算T1的計(jì)數(shù)初值X。3. 方式 2 11位異步發(fā)送/接收方式,即每幀數(shù)據(jù)由有一個(gè)起始位“0”, 9個(gè)數(shù)據(jù)位和1個(gè)停止位“1”組成。 發(fā)送時(shí)9個(gè)數(shù)據(jù)位,由SCON寄存器的TB8位提供, 接收到的第9位數(shù)據(jù)存放在SCON寄存器的RB8位。 第9位數(shù)據(jù)可作為檢驗(yàn)位,也可用于多機(jī)通信中識(shí)別傳送的是地址還是數(shù)據(jù)的特征位。波特率固定為 11位異步發(fā)送/接收方式,即每幀數(shù)據(jù)由有一個(gè)起始位“0”, 9個(gè)數(shù)據(jù)位和1個(gè)停止位“1”組成。 發(fā)送時(shí)9個(gè)數(shù)據(jù)位,由SCON寄存器的TB8
23、位提供, 接收到的第9位數(shù)據(jù)存放在SCON寄存器的RB8位。 第9位數(shù)據(jù)可作為檢驗(yàn)位,也可用于多機(jī)通信中識(shí)別傳送的是地址還是數(shù)據(jù)的特征位。4. 方式3串行口的波特率有兩種方式:固定波特率可變波特率注意:使用可變波特率時(shí),先確定T1 的計(jì)數(shù)初值,并對(duì)T1 進(jìn)行初始化。串行通信的編程方式:查詢方式: 查TI或RI 是否為“1”。中斷方式:如果預(yù)先開了中斷,當(dāng)TI、RI 為“1”,會(huì)自動(dòng)產(chǎn)生中斷。注意:兩種方式中當(dāng)發(fā)送或接受數(shù)據(jù)后都要注意人工清除TI 或RI 。8.5 串行口的應(yīng)用編程查詢方式發(fā)送程序: (先發(fā)后查) 發(fā)送一個(gè)數(shù)據(jù)查詢TI 發(fā)送下一個(gè)數(shù)據(jù)查詢方式接收程序:(先查后收) 查詢RI讀入一
24、個(gè)數(shù)據(jù)查詢RI讀下一個(gè)數(shù)據(jù)中斷方式發(fā)送程序: 發(fā)送一個(gè)數(shù)據(jù)等待中斷,在中斷中再發(fā)送下一個(gè)數(shù)據(jù)。中斷方式接收程序: 等待中斷,在中斷中再接收一個(gè)數(shù)據(jù)。T1初始化、啟動(dòng)T1工作設(shè)定串行通信方式置發(fā)送數(shù)據(jù)塊首址數(shù)據(jù)塊長(zhǎng)度計(jì)數(shù)器清TI發(fā)送數(shù)據(jù)TI1?修改地址指針和塊長(zhǎng)度計(jì)數(shù)器全部數(shù)據(jù)發(fā)送完?開始結(jié)束8.5.1 查詢方式發(fā)送流程圖YNYNT1初始化、啟動(dòng)T1工作設(shè)定串行通信方式,允許接收置接收緩沖區(qū)首址接收數(shù)據(jù)塊長(zhǎng)度清RIRI1?修改地址指針和塊長(zhǎng)度計(jì)數(shù)器全部數(shù)據(jù)接收完?開始結(jié)束接收數(shù)據(jù)Y8.5.1 查詢方式接受流程圖NYN 中斷方式的初始化編程同查詢方式,不同的是要開中斷,即置位EA和ES,編寫中斷服
25、務(wù)程序。 方式1 通信的中斷方式串行通信的程序流程見下圖:8.5.2 中斷方式設(shè)定T1和SCON置發(fā)送數(shù)據(jù)塊首址數(shù)據(jù)塊長(zhǎng)度計(jì)數(shù)器發(fā)送數(shù)據(jù)全部數(shù)據(jù)發(fā)送完?N中斷方式發(fā)送流程圖等待中斷1 EA, 1ES發(fā)送數(shù)據(jù)中斷返回0 EA, 0ES中斷服務(wù)程序主程序修改數(shù)據(jù)地址指針和塊長(zhǎng)度計(jì)數(shù)器清TIY設(shè)定T1和SCON置位REN允許接受置接收數(shù)據(jù)塊首址數(shù)據(jù)塊長(zhǎng)度計(jì)數(shù)器全部數(shù)據(jù)接收完?Y中斷方式接收流程圖等待中斷1 EA, 1ES中斷返回0 EA, 0ES中斷服務(wù)程序主程序數(shù)據(jù)送接收緩沖器清RI接收數(shù)據(jù)N例8-1. 在內(nèi)部數(shù)據(jù)存貯器20H3FH單元中共有32個(gè)數(shù)據(jù),要求采用方式 1 串行發(fā)送出去, 傳送速率為
26、1200波特,設(shè)fosc12MHZ。方法:T1工作于方式 2 作波特率發(fā)生器,取SMOD0,T1的時(shí)間常數(shù)計(jì)算如下:發(fā)送程序: ORG 0000H MOV TMOD, #20H ;設(shè)置波特率,T1方式2 MOV TH1, #0E6H MOV TL1, #0E6H ;T1時(shí)間常數(shù) SETB TR1 ;啟動(dòng)T1 MOV SCON, #40H ;串行口工作于方式1 MOV R0, #20H ;R0指發(fā)送緩沖區(qū)首 MOV R7, #32 ;R7作發(fā)送數(shù)據(jù)計(jì)數(shù)LO: MOV SBUF,R0 ;發(fā)送數(shù)據(jù) JNB TI, ;一幀未發(fā)完繼續(xù)查詢 CLR TI ;一幀發(fā)完清TI INC R0 DJNZ R7,
27、LO ;數(shù)據(jù)塊未發(fā)完繼續(xù) SJMP 接收程序: ORG 0000H MOV TMOD, #20H ;設(shè)置波特率 MOV TH1, #0E6H MOV TL1, #0E6H SETB TR1 ;初始化T1, 并啟動(dòng)T1 MOV SCON, #50H ;設(shè)定串行方式1,并允許接收 MOV R0, #20H MOV R7, #32 LOOP:JNB RI, ;一幀收完? CLR RI ;收完清RI MOV R0, SBUF ;將數(shù)據(jù)讀入 INC R0 DJNZ R7, LOOP SJMP 查詢方式 C 語言發(fā)送程序查詢方式 C 語言接收程序#includemain( ) unsigned char
28、i; char *p; TMOD=0 x20; TH1=0 xe6; TL1=0 xe6; TR1=1; SCON=0 x40; p=0 x20;for (i=0;i=32;i+) SBUF=*p; p+; while (!TI); TI=0; #include main( ) unsigned char i; char *p; TMOD=0 x20; TH1=0 xe6;TL1=0 xe6; TR1=1; SCON=0 x50; p=0 x20;for (i=0;i=32;i+) while (!RI); RI=0; *p=SBUF; p+; 中斷方式 C 語言發(fā)送程序#includeTrs
29、 interrupt 4 TI=0; i+; p+; SBUF=*p; main( ) unsigned char i; char *p; TMOD=0 x20; TH1=0 xe6;TL1=0 xe6; TR1=1; EA=1;ES=1; SCON=0 x40; p=0 x20; SBUF=*p; for (i=0;i32; );/*等待中斷*/中斷方式 C 語言接收程序#includeTrs interrupt 4 RI=0; i+; *p =SBUF; p+; main( ) unsigned char i; char *p; TMOD=0 x20; TH1=0 xe6;TL1=0 xe
30、6; TR1=1; EA=1;ES=1; SCON=0 x50; p=0 x20; for (i=0;i32;);RXD89C51TXDP1.0解:依據(jù)公式波特率 求得 例8-2 接線如圖,編一個(gè)自發(fā)自收程序,檢查單片機(jī)的串行口是否完好,f=12MHz,波特率600,取SMOD0。匯編語言編程 MOV TMOD,#20H MOV TH1, #0CCH MOV TL1, #0CCH ; 設(shè)定波特率 SETB TR1 MOV SCON, #50HABC: CLR TI MOV P1, #0FEH ; LED滅 ACALL DAY ; 延時(shí) MOV A, #0FFH MOV SBUF, A ; 發(fā)送數(shù)據(jù)FFH JNB RI, $ ;RI = 0等待 如果發(fā)送接收正確,可觀察到接的發(fā)光二極管閃亮。 CLR RI MOV A, SBUF ; 接收數(shù)據(jù),A=FFH MOV P1, A ; 燈亮 JNB TI, $ ;TI = 0 等待 ACALL DAY ; 延時(shí) SJMP ABCDAY: MOV R0, #0DAL: MOV R1, #0 DJNZ R1, $ DJNZ R0, DAL RET 例8-2 C語言編程include main() unsigned int I; TMOD=0 x20;TH1=0 xcc;TL1=0 xcc; / 初始化T1 TR1=1; / 無限循環(huán)執(zhí)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國(guó)大唐集團(tuán)限公司重慶分公司所屬石柱發(fā)電公司招聘46人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年江蘇省南通市事業(yè)單位考試招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年四川內(nèi)江市市中區(qū)部分事業(yè)單位招聘21人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上海城建城市運(yùn)營(yíng)(集團(tuán))限公司招聘51人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年廣東省深圳市事業(yè)單位招聘1420人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川自貢市沿灘區(qū)事業(yè)單位招聘工作人員67人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川省瀘州市江陽區(qū)事業(yè)單位考試招聘125人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025“才聚齊魯成就未來”山東南郊集團(tuán)投資限公司招聘2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 防護(hù)頭盔勞動(dòng)防護(hù)用品管理細(xì)則
- 2024年電子設(shè)備租賃及售后服務(wù)合同范本2篇
- 一體化綜合指揮平臺(tái)(應(yīng)急指揮部分)建設(shè)方案
- 理正深基坑之鋼板樁受力計(jì)算
- 國(guó)家開放大學(xué)電大??啤吨袊?guó)當(dāng)代文學(xué)》期末試題及答案
- 廣東話粵語姓名拼音大全
- 《金融工程原理-無套利均衡分析》筆記01
- 工程項(xiàng)目收尾管理辦法
- 閘門及啟閉機(jī)安裝專項(xiàng)施工方案
- 應(yīng)征公民體格檢查表(征兵)
- 電力系統(tǒng)分析名詞解釋、簡(jiǎn)答、模擬試卷
- 家具制造企業(yè)消防安全要求
- 巖石堅(jiān)固性和穩(wěn)定性分級(jí)表
評(píng)論
0/150
提交評(píng)論