第5章 80C51單片機(jī)中的輸入輸出口_第1頁(yè)
第5章 80C51單片機(jī)中的輸入輸出口_第2頁(yè)
第5章 80C51單片機(jī)中的輸入輸出口_第3頁(yè)
第5章 80C51單片機(jī)中的輸入輸出口_第4頁(yè)
第5章 80C51單片機(jī)中的輸入輸出口_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章80C51單片機(jī)的I/O口§5.180C51單片機(jī)并行I/O口思考與練習(xí)§5.280C51單片機(jī)的串行通信接口一、并行I/O口的功能結(jié)構(gòu)二、產(chǎn)生接口控制信號(hào)的指令§5.180C51單片機(jī)并行I/O口

80C51單片機(jī)有4個(gè)8位并行I/O口,共占了32根I/O引腳。單片機(jī)擴(kuò)展時(shí),這些I/O引腳又作為擴(kuò)展總線用。

P0口作為地址/數(shù)據(jù)總線,分時(shí)輸出低8位地址和傳送8位數(shù)據(jù);

P2口作為高8位地址總線;

P3口也具有第二功能。一、并行I/O口的功能結(jié)構(gòu)每一個(gè)口都包含:

一個(gè)鎖存器

一個(gè)輸出驅(qū)動(dòng)器

兩個(gè)(P3口為3個(gè))輸入緩沖器各口的結(jié)構(gòu)有些差異,下面分別介紹。一、并行I/O口的功能結(jié)構(gòu)1、接口結(jié)構(gòu)P1口一位的結(jié)構(gòu)如下圖所示:一、并行I/O口的功能結(jié)構(gòu)(一)P1口1、接口結(jié)構(gòu)鎖存器起輸出鎖存作用,8位鎖存器組成特殊功能寄存器P1;場(chǎng)效應(yīng)管和上拉電阻組成輸出驅(qū)動(dòng)器,以增大負(fù)載能力;三態(tài)門1和三態(tài)門2分別用于控制輸入引腳和鎖存器的狀態(tài)。一、并行I/O口的功能結(jié)構(gòu)(一)P1口2、接口功能

P1口只有一種功能——通用輸入輸出接口,有以下三種工作方式:輸出、輸入和端口操作。(1)輸出方式:?jiǎn)纹瑱C(jī)執(zhí)行MOVP1,#data指令時(shí),數(shù)據(jù)data經(jīng)內(nèi)部總線送入鎖存器鎖存,經(jīng)輸出驅(qū)動(dòng)器送到引腳。一、并行I/O口的功能結(jié)構(gòu)(一)P1口2、接口功能(2)輸入方式單片機(jī)執(zhí)行MOVA,P1指令時(shí),控制器發(fā)出讀引腳信號(hào),打開三態(tài)門1,引腳上的狀態(tài)經(jīng)三態(tài)門進(jìn)入內(nèi)部總線,并送入A中。由圖可見,要使P1引腳上的高/低電平均可輸入,必須使輸出驅(qū)動(dòng)器處于截止?fàn)顟B(tài),所以要將P1作為輸入口時(shí),應(yīng)先向口鎖存器寫“1”。因此P1口為準(zhǔn)雙向口。一、并行I/O口的功能結(jié)構(gòu)(一)P1口2、接口功能(3)端口操作單片機(jī)中設(shè)置了一類直接對(duì)端口進(jìn)行操作的指令,如INCP1

ANLP1,AORLP1,#data一、并行I/O口的功能結(jié)構(gòu)(一)P1口執(zhí)行這些指令時(shí),先是讀鎖存器信號(hào)有效,打開三態(tài)門2,將鎖存器的內(nèi)容讀出,按指令要求修改后再寫入鎖存器中,稱為“讀——修改——寫”指令。2、接口功能(3)端口操作一、并行I/O口的功能結(jié)構(gòu)(一)P1口3、接口驅(qū)動(dòng)能力

P1口輸出時(shí)能驅(qū)動(dòng)3個(gè)LSTTL負(fù)載(輸出電流要小于300μA)一、并行I/O口的功能結(jié)構(gòu)(一)P1口

P2口一位結(jié)構(gòu)如下圖所示,與P1相比,多了一個(gè)多路開關(guān)MUX,因此P2具有雙重功能:通用I/O口和高8位地址總線口。1、接口結(jié)構(gòu)一、并行I/O口的功能結(jié)構(gòu)(二)P2口(1)地址總線單片機(jī)擴(kuò)展時(shí),“控制”信號(hào)使MUX打向右邊,內(nèi)部的地址線經(jīng)反相器與輸出驅(qū)動(dòng)器相連,于是內(nèi)部“地址”信號(hào)可以由P2口引腳輸出。2、接口功能一、并行I/O口的功能結(jié)構(gòu)(二)P2口(2)通用I/O接口作為通用I/O口時(shí),“控制”信號(hào)使MUX打向左邊,這時(shí)P2口電路結(jié)構(gòu)與P1口相同,其功能和用法亦與P1口相同。2、接口功能一、并行I/O口的功能結(jié)構(gòu)(二)P2口

如果單片機(jī)無需擴(kuò)展程序存儲(chǔ)器,只需擴(kuò)展少量外部RAM(≤256字節(jié))時(shí),可用@Ri間址,這時(shí)P2口仍可作為通用I/O口。2、接口功能(2)通用I/O接口P2口輸出時(shí)能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。一、并行I/O口的功能結(jié)構(gòu)(二)P2口

P3口一位的結(jié)構(gòu)如下圖所示,與P1口相比多了一個(gè)與非門和一個(gè)輸入緩沖器,所以它除了可作為一般I/O口外,還具有第二功能。1、接口結(jié)構(gòu)一、并行I/O口的功能結(jié)構(gòu)(三)P3口(1)通用I/O接口作為通用I/O接口時(shí),“第二功能輸出”線為“1”,接口的電路結(jié)構(gòu)與P1口相同,所以功能和用法均與P1相同。2、接口功能一、并行I/O口的功能結(jié)構(gòu)(三)P3口(2)第二功能

2、接口功能當(dāng)P3作為第二功能使用時(shí),各位定義如下:P3.0RXD(串行輸入通道)P3.1TXD(串行輸出通道)P3.2INT0(外中斷0輸入端)P3.3INT1(外中斷1輸入端)一、并行I/O口的功能結(jié)構(gòu)(三)P3口這些信號(hào)有輸出也有輸入,為使第二功能信號(hào)能順暢地輸入或輸出,該口鎖存器的狀態(tài)必須為“1”。P3.4T0(定時(shí)器0外部輸入)P3.5T1(定時(shí)器1外部輸入)P3.6WR(外部數(shù)據(jù)存貯器寫選通)P3.7RD(外部數(shù)據(jù)存貯器讀選通)2、接口功能P3口輸出時(shí)能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。一、并行I/O口的功能結(jié)構(gòu)(三)P3口1、接口結(jié)構(gòu)P0口一位的結(jié)構(gòu)如下,輸出驅(qū)動(dòng)電路由一對(duì)場(chǎng)效應(yīng)管組成,其工作狀態(tài)由輸出控制電路控制。P0口可作通用I/O,也可作地址/數(shù)據(jù)總線口。一、并行I/O口的功能結(jié)構(gòu)(四)P0口(四)P0口2、接口功能(1)地址/數(shù)據(jù)總線

一、并行I/O口的功能結(jié)構(gòu)這時(shí)“控制”信號(hào)為1,MUX向上,地址/數(shù)據(jù)信號(hào)反相后經(jīng)多路開關(guān)送到下一個(gè)場(chǎng)效應(yīng)管的柵極。若地址/數(shù)據(jù)信號(hào)為1,則下一個(gè)場(chǎng)效應(yīng)管截止上一個(gè)場(chǎng)效應(yīng)管導(dǎo)通,引腳為高電平;若地址/數(shù)據(jù)信號(hào)為0,則下一個(gè)場(chǎng)效應(yīng)管導(dǎo)通上一個(gè)場(chǎng)效應(yīng)管截止,引腳為低電平。即地址/數(shù)據(jù)信號(hào)可順利的到達(dá)引腳。2、接口功能(2)通用I/O接口此時(shí)“控制”信號(hào)為“0”,MUX向下,輸出驅(qū)動(dòng)器處于開漏狀態(tài),故需外接上拉電阻,此時(shí)電路結(jié)構(gòu)與P1相同,也是一個(gè)準(zhǔn)雙向口。當(dāng)要作為輸入時(shí),必須先向口鎖存器寫“1”。P0口輸出時(shí)能驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。一、并行I/O口的功能結(jié)構(gòu)(四)P0口作為I/O口應(yīng)用的一個(gè)實(shí)例,下面介紹80C31單片機(jī)的最小應(yīng)用系統(tǒng)如下圖所示:80C31一、并行I/O口的功能結(jié)構(gòu)一、并行I/O口的功能結(jié)構(gòu)80C51指令系統(tǒng)中能與接口打交道的指令大體可分兩類:1、一般的輸入/輸出指令2、“讀-修改-寫”指令二、產(chǎn)生接口控制信號(hào)的指令1、一般的輸入輸出指令輸入指令執(zhí)行時(shí),內(nèi)部產(chǎn)生“讀引腳”信號(hào),直接從口線讀入,亦稱“讀引腳”指令。見下面實(shí)例:MOVA,P1相當(dāng)于輸入指令,其它口也可(總線口不能用)MOV@R1,P1可以將P1輸入的數(shù)據(jù)直接送到片內(nèi)RAM的某單元。MOVXA,@Ri可從擴(kuò)展的RAM或I/O口輸入,高位地址由P2提供,@Ri只提供低8位地址。本指令產(chǎn)生RD信號(hào)。二、產(chǎn)生接口控制信號(hào)的指令1、一般的輸入輸出指令MOVP1,AMOVP1,@RiMOVX@Ri,AMOVX@DPTR,AMOVP3,P1直接從一個(gè)口輸入,又向另一個(gè)口輸出,這是較為特殊的一種用法。MOVXA,@DPTR作用同上一條指令。不過DPH由P2傳送,DPL由P0傳送。本指令產(chǎn)生信號(hào)。這四種相當(dāng)于輸出指令,與相應(yīng)的“輸入”指令對(duì)應(yīng),后兩條指令產(chǎn)生信號(hào)。二、產(chǎn)生接口控制信號(hào)的指令2、“讀-修改-寫”指令指令執(zhí)行時(shí)內(nèi)部產(chǎn)生“讀鎖存器”信號(hào),亦稱讀鎖存器指令。它們并不是直接從口線讀出,只是從接口鎖存器讀出,經(jīng)修改后再寫入鎖存器,故又稱為“讀-修改-寫”指令。例如:ANLP1,A;邏輯與ORLP2,A;邏輯或XRLP3,A;邏輯異或JBCP1.1,LOOP;如某位為1,跳轉(zhuǎn)并清零該位CPLP3.0;對(duì)接口某位求反二、產(chǎn)生接口控制信號(hào)的指令2、“讀-修改-寫”指令I(lǐng)NCP2;接口鎖存器加1DECP1;接口鎖存器內(nèi)容減1DJNZP3,LOOP;減1后不為零則跳轉(zhuǎn)還有三條雖不明顯,但也屬此列:MOVP1.1,C;將進(jìn)位位送接口的某位CLRP1.1;清零接口的某一位SETBP1.1;置位接口的某一位二、產(chǎn)生接口控制信號(hào)的指令§5.280C51單片機(jī)的串行通信接口一、串行通信的基本概念三、80C51單片機(jī)串行口的應(yīng)用二、80C51單片機(jī)的串行通信接口計(jì)算機(jī)通信有兩種基本方式:——并行通信和串行通信并行通信:數(shù)據(jù)的各位同時(shí)進(jìn)行傳送,如圖(a)所示。串行通信:數(shù)據(jù)的各位是一位位按順序傳送,如圖(b)所示。一、串行通信的基本概念計(jì)算機(jī)通信有兩種基本方式:一、串行通信的基本概念1、串行通信中數(shù)據(jù)傳送方式1)異步傳送方式(或稱字符同步方式)

傳送一個(gè)字符時(shí),用一個(gè)起始位(低電平0)表示字符的開始,接著從低到高依次傳送數(shù)據(jù)位(5~8位,可插入奇偶校驗(yàn)位),最后是停止位(高電平1,可1或1.5或2位)表示字符的結(jié)束,構(gòu)成一幀信息,如下圖所示。一、串行通信的基本概念1、串行通信中數(shù)據(jù)傳送方式

異步通信中,雙方必須約好字符格式和波特率。波特率——表示每秒鐘傳送二進(jìn)制代碼的位數(shù)(包括起始位和停止位)一、串行通信的基本概念2)同步傳送方式(或稱數(shù)據(jù)塊同步方式)在數(shù)據(jù)塊前加上同步字符,數(shù)據(jù)間沒有間隔,以一個(gè)基本的單位時(shí)間傳送一個(gè)數(shù)據(jù),如下圖所示。傳送速率高,但硬件設(shè)備復(fù)雜。1、串行通信中數(shù)據(jù)傳送方式一、串行通信的基本概念同步通信的數(shù)據(jù)格式同步字符1同步字符2數(shù)據(jù)塊CRC字符#1CRC字符#2開始終了1、串行通信中數(shù)據(jù)傳送方式≈≈一、串行通信的基本概念2、串行通信中數(shù)據(jù)傳送方向1)單工通信:只允許向一個(gè)方向傳送數(shù)據(jù)。2)半雙工通信:允許雙向傳送數(shù)據(jù),但某一時(shí)刻只能往某一個(gè)方向傳送。3)全雙工通信:允許向兩個(gè)方向同時(shí)進(jìn)行數(shù)據(jù)傳送。一、串行通信的基本概念2、串行通信中數(shù)據(jù)傳送方向如下圖所示:一、串行通信的基本概念1、功能特點(diǎn)1)為全雙工串行口,用P3.0和P3.1作為接收數(shù)據(jù)線RXD和發(fā)送數(shù)據(jù)線TXD。2)具有緩沖接收功能即在接收到的前一個(gè)字節(jié)未被CPU讀走之前,就可以逐位接收下一個(gè)字節(jié)數(shù)據(jù),直到下一個(gè)字節(jié)全部收齊為止,若前一個(gè)字節(jié)仍未取走,才被下一個(gè)字節(jié)取代。二、80C51單片機(jī)的串行通信接口發(fā)送緩沖器和接收緩沖器共用一個(gè)地址,但它們是獨(dú)立的物理空間。1、功能特點(diǎn)3)可用程序控制內(nèi)部有專用寄存器SCON(98H)和PCON(87H)用于控制串行通信,包括方式的選擇、接收控制、多機(jī)通信控制、波特率是否加倍等;定時(shí)器T1可作為串行口的波特率發(fā)生器,可改變串行口通信的定時(shí)。二、80C51單片機(jī)的串行通信接口1、功能特點(diǎn)4)有四種工作方式能適應(yīng)不同用途(1)方式0

為移位寄存器I/O方式,數(shù)據(jù)從RXD端串行輸入或輸出,以8位為一幀,按先低位后高位依次傳送;同步信號(hào)從TXD端輸出,波特率固定為fosc/12。二、80C51單片機(jī)的串行通信接口1、功能特點(diǎn)(2)方式1為8位的異步通信接口,傳送一幀信息為10位,其中,1位起始位(0),8位數(shù)據(jù)位(低位在前),1位停止位(1)。這時(shí)定時(shí)器T1作為波特率發(fā)生器(T1應(yīng)關(guān)中斷)。二、80C51單片機(jī)的串行通信接口4)有四種工作方式能適應(yīng)不同用途(2)方式1(續(xù))波特率=(T1的溢出率)/n所以波特率=(2SMOD/32)·(T1的溢出率)==)1(,16)0(,32SMODSMODn其中1、功能特點(diǎn)(T1的溢出率——T1定時(shí)時(shí)間的倒數(shù))二、80C51單片機(jī)的串行通信接口4)有四種工作方式能適應(yīng)不同用途1、功能特點(diǎn)T1的溢出率,即T1每秒鐘溢出的次數(shù),如果T1定時(shí)為T式中Tc為機(jī)器周期,n為計(jì)數(shù)器T1的位數(shù),x為時(shí)間常數(shù)初值的補(bǔ)碼。下表列出了常用波特率與T1參數(shù)的關(guān)系二、80C51單片機(jī)的串行通信接口(2)方式1(續(xù))4)有四種工作方式能適應(yīng)不同用途二、80C51單片機(jī)的串行通信接口波特率fosc(MHZ)SMOD定時(shí)器T1C/T方式定時(shí)器初值62.5K12102FFH19.2K11.059102FDH9.6K11.059002FDH4.8K11.059002FAH2.4K11.059002F4H1.2K11.059002E8H137.5K11.0590021DH110600272H11012001FEEBH1、功能特點(diǎn)(3)方式2為9位的異步通信接口,傳送一幀信息為11位,其中1位起始位(0)、1位停止位(1)、9位數(shù)據(jù)位(8位再加上1位附加的可編程為0或1的第九位數(shù)據(jù)位—在RB8或TB8)。該方式特別適用于多機(jī)通信。二、80C51單片機(jī)的串行通信接口4)有四種工作方式能適應(yīng)不同用途1、功能特點(diǎn)(4)方式3與方式2類似,唯一的區(qū)別是方式3的波特率可變。

該方式也適用于多機(jī)通信。(波特率的計(jì)算公式同方式1

)二、80C51單片機(jī)的串行通信接口4)有四種工作方式能適應(yīng)不同用途2、結(jié)構(gòu)原理1)串行口的發(fā)送和接收電路發(fā)送電路包括SBUF(發(fā)送)、零檢測(cè)器和發(fā)送控制器。

發(fā)送過程可通過MOVSBUF,A指令發(fā)出。接收電路包括SBUF(接收)、接收移位寄存器和接收控制器等。二、80C51單片機(jī)的串行通信接口二、80C51單片機(jī)的串行通信接口1)串行口的發(fā)送和接收電路80C512、結(jié)構(gòu)原理

接收過程基于采樣脈沖(RXC×16)對(duì)RXD線的監(jiān)視,當(dāng)“1到0跳變檢測(cè)器”連續(xù)9次采樣到低電平,確認(rèn)出現(xiàn)起始位,此后接收器從下一個(gè)數(shù)據(jù)位開始改為對(duì)第7、8、9三個(gè)脈沖采樣RXD線,按三中取二原則決定所檢測(cè)的值是“0”還是“1”,如下圖所示:2、結(jié)構(gòu)原理1)串行口的發(fā)送和接收電路二、80C51單片機(jī)的串行通信接口接收電路連續(xù)接收到一幀字符后自動(dòng)置“1”RI,并向CPU發(fā)中斷請(qǐng)求信號(hào)。CPU響應(yīng)中斷后,執(zhí)行指令MOVA,SBUF把接收到的字符讀入A中。2、結(jié)構(gòu)原理1)串行口的發(fā)送和接收電路二、80C51單片機(jī)的串行通信接口2、結(jié)構(gòu)原理2)專用寄存器PCON和波特率

PCON的最高位是串行口波特率系數(shù)控制位SMOD,當(dāng)SMOD=1時(shí),使波特率加倍。SMODGF1GF0PDIDL1,波特率加倍1,進(jìn)入待機(jī)方式1,進(jìn)入掉電方式通用標(biāo)志位0通用標(biāo)志位1二、80C51單片機(jī)的串行通信接口2、結(jié)構(gòu)原理3)串行口的控制寄存器SCONSM0SM1SM2RENTB8RB8TIRISCON格式如下:D7D6D5D4D3D2D1D0接收中斷標(biāo)志發(fā)送中斷標(biāo)志方式2,3時(shí),接收數(shù)據(jù)的第9位方式2,3,發(fā)送數(shù)據(jù)的第9位接收允許位多機(jī)通信控制位方式選擇位二、80C51單片機(jī)的串行通信接口3)串行口的控制寄存器SCONSM0,SM1工作方式選擇位,詳見下表:SM0SM1方式功能波特率000同步移位寄存器fosc/1201110位異步收發(fā)可變10211位異步收發(fā)fosc/64或fosc/3211311位異步收發(fā)可變2、結(jié)構(gòu)原理二、80C51單片機(jī)的串行通信接口SM2、TB8、RB8的用法說明:①在方式0,SM2應(yīng)為0,TB8和RB8不用。②在方式1,TB8不用。

如果SM2=0,當(dāng)收到8位數(shù)據(jù)后,又收到停止位,則不論該停止位為0或?yàn)?,都進(jìn)入RB8,8位數(shù)據(jù)進(jìn)入SBUF,且置位RI;

如果SM2=1,則只有收到有效的停止位(為1)才進(jìn)入RB8,8位數(shù)據(jù)才進(jìn)入SBUF,并激活RI,否則將丟失已收到的一幀數(shù)據(jù)。2、結(jié)構(gòu)原理3)串行口的控制寄存器SCON二、80C51單片機(jī)的串行通信接口③在方式2和方式3,TB8是要發(fā)送的第9位數(shù)據(jù),可用軟件置“1”或“0”,RB8是接收到的第9位數(shù)據(jù)。當(dāng)SM2=0時(shí),9位數(shù)據(jù)收齊后,不論第9位數(shù)據(jù)為0或1,都會(huì)把收到的數(shù)據(jù)裝入SBUF和RB8,置位RI;當(dāng)SM2=1時(shí),收到的第9位數(shù)據(jù)必須為1,才把收到的數(shù)據(jù)裝入SBUF和RB8,并置位RI,否則將丟失已收到的一幀信息,也不置位RI。2、結(jié)構(gòu)原理3)串行口的控制寄存器SCON二、80C51單片機(jī)的串行通信接口SM2、TB8、RB8的用法說明:利用這一特點(diǎn),可實(shí)現(xiàn)主、從多機(jī)通信,方法是:

平時(shí),從機(jī)將SM2置“1”,當(dāng)主機(jī)要發(fā)送一個(gè)數(shù)據(jù)給幾個(gè)從機(jī)之一時(shí),它先發(fā)一個(gè)目標(biāo)從機(jī)的地址字節(jié)(地址字節(jié)第9位為1,數(shù)據(jù)字節(jié)第9位為0),它可以中斷所有從機(jī),每臺(tái)從機(jī)都接收該地址字節(jié),并判斷主機(jī)是否要尋址本機(jī)?若是,則清“0”SM2位,準(zhǔn)備接收數(shù)據(jù)字節(jié);而未被尋址的從機(jī)仍保持SM2=1,不理睬主機(jī)發(fā)出的數(shù)據(jù)字節(jié)。2、結(jié)構(gòu)原理3)串行口的控制寄存器SCON二、80C51單片機(jī)的串行通信接口三、80C51單片機(jī)串行口的應(yīng)用1、串行口在方式0下的應(yīng)用例1:用80C51串行口外接CD4049擴(kuò)展8位并行輸出口,如圖所示;8位并行輸出口的各位都接一個(gè)共陰極發(fā)光二極管,要求發(fā)光二極管從左到右以一定延時(shí)輪流顯示,且不斷循環(huán)。80C51設(shè)數(shù)據(jù)串行發(fā)送采用查詢方式,顯示的延時(shí)依靠調(diào)用延時(shí)子程序DELAY來實(shí)現(xiàn):ORG2000HMOVSCON,#00H;串行口方式0初始化MOVA,#80H;最左一位發(fā)光管先亮CLRP1.0;關(guān)閉并行輸出1、串行口在方式0下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用設(shè)數(shù)據(jù)串行發(fā)送采用查詢方式,顯示的延時(shí)依靠調(diào)用延時(shí)子程序DELAY來實(shí)現(xiàn):START:MOVSBUF,A;開始串行輸出LOOP:JNBTI,LOOP;查詢TISETBP1.0;啟動(dòng)并行輸出ACALLDELAY;顯示延時(shí)一段時(shí)間CLRTI;清發(fā)送中斷標(biāo)志RRA;準(zhǔn)備右移一位顯示CLRP1.0;關(guān)閉并行輸出SJMPSTART;再一次串行輸出1、串行口在方式0下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用2、串行口在其它方式下的應(yīng)用例2:設(shè)有甲、乙兩臺(tái)單片機(jī),編出兩臺(tái)單片機(jī)間實(shí)現(xiàn)如下串行通訊功能的程序:甲機(jī)發(fā)送:將首址為ADDRT的128個(gè)字節(jié)的數(shù)據(jù)塊順序向乙機(jī)發(fā)送;乙機(jī)接收:將接收的128個(gè)字節(jié)的數(shù)據(jù)塊,順序存放在以首址為ADDRR的數(shù)據(jù)緩沖區(qū)中。三、80C51單片機(jī)串行口的應(yīng)用解:編制該類程序的要點(diǎn)是:選定正確的控制字,以保證接口功能的初始化;選擇合適的波特率,這主要是選擇定時(shí)器1的方式和時(shí)間常數(shù)的確定;在串行中斷服務(wù)程序中要設(shè)置清除中斷標(biāo)志的指令,否則將產(chǎn)生另一個(gè)中斷。2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用甲機(jī)發(fā)送程序流程圖如下:串行口初始化定時(shí)器1初始化送400bit/s的時(shí)間常數(shù)啟動(dòng)定時(shí)器1開中斷置初值取首址數(shù)據(jù)啟動(dòng)串行發(fā)送等待中斷清中斷標(biāo)志數(shù)據(jù)塊發(fā)送完?修改指針取發(fā)送數(shù)據(jù)啟動(dòng)串行發(fā)送中斷返回關(guān)串行口中斷主程序:發(fā)送數(shù)據(jù)中斷服務(wù)程序:YN2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用甲機(jī)發(fā)送程序清單如下:ORG0000HLJMPMAINT;跳至主程序入口ORG0023HLJMPINTSE1;轉(zhuǎn)至串行中斷服務(wù)程序MAINT:MOVSCON,#01000000B;置串行口工作方式MOVTMOD,#20H;定時(shí)器1為定時(shí)方式2MOVTH1,#0D9H;產(chǎn)生400波特率的時(shí)常數(shù)MOVTL1,#0D9H

2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用2、串行口在其它方式下的應(yīng)用甲機(jī)發(fā)送程序清單如下:(續(xù)1)SETBTCON.6;啟動(dòng)定時(shí)器1SETBEA;CPU開中斷SETBES;串行口開中斷MOVDPTR,ADDRT;數(shù)據(jù)區(qū)首址→DPTRMOVR0,#00H;傳送字節(jié)數(shù)初值MOVXA,@DPTR;取第一個(gè)發(fā)送字節(jié)MOVSBUF,A;啟動(dòng)串行口發(fā)送SJMP$;等待中斷三、80C51單片機(jī)串行口的應(yīng)用甲機(jī)發(fā)送程序清單如下:中斷服務(wù)程序:INTSE1:CLRSCON.1;清中斷標(biāo)志CJNER0,#7FH,LOOP;判別128個(gè)字節(jié)都發(fā)送完?CLRES;發(fā)送完畢,禁止串行口中斷SJMPENDT;轉(zhuǎn)中斷返回LOOP:INCR0;修改字節(jié)數(shù)指針I(yè)NCDPTR;修改地址指針MOVXA,@DPTR;取發(fā)送數(shù)據(jù)MOVSBUF,A;啟動(dòng)串行口ENDT:RETI;中斷返回2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用(續(xù)2)乙機(jī)接收程序流程圖如下:串行口初始化定時(shí)器1初始化送400bit/s的時(shí)間常數(shù)啟動(dòng)定時(shí)器1開中斷置初值等待中斷主程序:禁止串行中斷中斷服務(wù)程序:清中斷標(biāo)志取接收數(shù)據(jù)數(shù)據(jù)送相應(yīng)緩沖區(qū)修改指針數(shù)據(jù)接收完?中斷返回YN2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用乙機(jī)接收程序清單如下:ORG0000HLJMPMAINR;轉(zhuǎn)主程序ORG0023HLJMPINTSE2;轉(zhuǎn)串行口中斷服務(wù)程序MAINR:MOVSCON,#01010000B;串口接收,工作方式1MOVTMOD,#20H;定時(shí)器1為定時(shí)方式2MOVTH1,#0D9H;產(chǎn)生400波特率的時(shí)常數(shù)MOVTL1,#0D9H

2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用2、串行口在其它方式下的應(yīng)用乙機(jī)接收程序清單如下:(續(xù)1)SETBTCON.6;啟動(dòng)定時(shí)器1SETBEA;CPU開中斷SETBES;串行口開中MOVDPTR,ADDRR;數(shù)據(jù)緩沖區(qū)首址→DPTRMOVR0,#00H;置傳送字節(jié)數(shù)初值SJMP$;等待中斷三、80C51單片機(jī)串行口的應(yīng)用乙機(jī)接收程序清單如下:(續(xù)2)中斷服務(wù)程序:INTSE2:CPLSCON.0;清中斷標(biāo)志MOVA,SBUF;取接收的數(shù)據(jù)MOVX@DPTR,A;接收的數(shù)據(jù)→緩沖區(qū)CJNER0,#7FH,LOOP;128個(gè)字節(jié)接收完沒有?CLRET1;接收完畢則關(guān)T1及關(guān)串行口中斷CLRESSJMPSENDLOOP:INCR0;修改計(jì)數(shù)指針I(yè)NCDPTR;修改地址指針SEND:RETI;中斷返回2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用例3.設(shè)多機(jī)單工通訊如圖所示。通訊程序應(yīng)實(shí)現(xiàn)如下功能:主機(jī):先向從機(jī)發(fā)送一幀地址信息,然后再向從機(jī)發(fā)送10個(gè)數(shù)據(jù)信息。從機(jī):接收主機(jī)發(fā)來的地址信息,并與本機(jī)的地址號(hào)相比較,若不符合,仍保持SM2=1不變;若相符,則使SM2清零,準(zhǔn)備接收后續(xù)數(shù)據(jù)信息,直至接收完10個(gè)數(shù)據(jù)信息。2、口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用80C51主機(jī)程序流程如下:初始化設(shè)置指針開中斷置TB8=1,發(fā)送地址信息等待中斷主程序清發(fā)送中斷標(biāo)志清TB8位準(zhǔn)備發(fā)送后續(xù)數(shù)據(jù)信息啟動(dòng)發(fā)送修改指針判全部數(shù)據(jù)發(fā)送完否關(guān)串行口中斷中斷返回NY串行口中斷服務(wù)程序2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用從機(jī)程序流程如下:設(shè)置指針開中斷等待中斷初始化SM2=1主程序2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用與本機(jī)地址相比較是否相符合從機(jī)程序流程如下:串行口中斷服務(wù)程序清接收中斷標(biāo)志RI從串行口取數(shù)據(jù)判RB8位=1?清SM2位中斷返回取數(shù)據(jù)送緩沖區(qū)判數(shù)據(jù)是否全部接收完畢?修改指針置SM2=1YNNYYN2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用程序清單如下:主機(jī):

ORG0000HLJMPMAINT;主程序入口地址ORG0023HLJMPINTSE1;串行口中斷入口地址MAINT:MOVPCON,#80H;波特率加倍MOVSCON,#80H;串行口方式2MOVDPTR,#DAADT;置數(shù)據(jù)地址指針MOVR0,#00H;置發(fā)送數(shù)據(jù)字節(jié)初值MOVR2,#ADAD1;從機(jī)地址號(hào)→R2SETBEA;CPU開中斷2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用程序清單如下:主機(jī)主程序(續(xù))SETBES;串行口開中斷SETBTR8;置位TB8,作為地址幀標(biāo)識(shí)MOVA,R2;發(fā)送地址幀信息MOVSBUF,ASJMP$;等待中斷2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用主機(jī)串行口中斷服務(wù)程序:INTSE1:CLRTI;清發(fā)中斷標(biāo)志CLRTB8;清TB8,準(zhǔn)備發(fā)送數(shù)據(jù)幀MOVXA,@DPTR;發(fā)送一個(gè)數(shù)據(jù)字節(jié)MOVSBUF,AINCDPTR;修改指針I(yè)NCR0CJNER0,#0AH,LOP;判數(shù)據(jù)字節(jié)是否發(fā)完CLRES;發(fā)送完則關(guān)串行口中斷LOP:RETI;中斷返回2、串行口在其它方式下的應(yīng)用三、80C51單片機(jī)串行口的應(yīng)用從機(jī):ORG0000HLJMPMAINR;從機(jī)主程序入口地址ORG0023HLJMPINTSE2;串行口中斷入口地址MAINR:MOVPCON,#80H;波特率加倍MOVSCON,#0B0H;串行口方式2,接收狀態(tài)MO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論