第7章74中斷應(yīng)用_第1頁(yè)
第7章74中斷應(yīng)用_第2頁(yè)
第7章74中斷應(yīng)用_第3頁(yè)
第7章74中斷應(yīng)用_第4頁(yè)
第7章74中斷應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩68頁(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)介

第7章MCS-51微型計(jì)算機(jī)系統(tǒng)原理及應(yīng)用《新編微機(jī)原理與應(yīng)用》—中國(guó)電力出版社2014/0667.4

MCS-51中斷系統(tǒng)與應(yīng)用§7.4.1

MCS-51中斷系統(tǒng)MCS-51中典型的8051單片機(jī)有5個(gè)中斷源,分別為2個(gè)從INT0、INT1(P3.2、P3.3)上輸入的外部中斷源0和外部中斷源1,2個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器T/C0、T/C1的溢出中斷源和1個(gè)片內(nèi)串行口發(fā)送或接收中斷源。2014/0662014/0661)8051中斷源

(1)外部中斷類(lèi)

外部中斷是由外部原因引起的,即外部中斷0(INT0)和外部中斷1(INT1):INT0——外部中斷0請(qǐng)求信號(hào),由P3.2引腳輸入。由IT0(TCON.0)決定中斷請(qǐng)求信號(hào)是低電平有效還是下降沿有效。一旦輸入信號(hào)有效,即向CPU申請(qǐng)中斷,并且使IE0=1。INT1——外部中斷1請(qǐng)求信號(hào),由P3.3引腳輸入。由IT1(TCON.2)決定中斷請(qǐng)求信號(hào)是低電平有效還是下降沿有效。一旦輸入信號(hào)有效,即向CPU申請(qǐng)中斷,并且使IE1=1。1、中斷源和中斷標(biāo)志2014/066(2)定時(shí)中斷:當(dāng)定時(shí)器/計(jì)數(shù)器中的計(jì)數(shù)結(jié)構(gòu)發(fā)生計(jì)數(shù)溢出時(shí),即表明定時(shí)時(shí)間到或計(jì)數(shù)值已滿,這時(shí)就以計(jì)數(shù)溢出信號(hào)作為中斷請(qǐng)求,去置位一個(gè)溢出標(biāo)志位,中斷源可以由單片機(jī)芯片外部引入。TF0——溢出中斷請(qǐng)求。當(dāng)定時(shí)器T0產(chǎn)生溢出時(shí),其中斷請(qǐng)求標(biāo)志TF0=1,請(qǐng)求中斷處理。TF1——定時(shí)器T1溢出中斷請(qǐng)求。當(dāng)定時(shí)器T1產(chǎn)生溢出時(shí),其中斷請(qǐng)求標(biāo)志TF1=1,請(qǐng)求中斷處理。(3)串行口中斷:為串行數(shù)據(jù)的傳送需要而設(shè)置的。RI或TI——串行中斷請(qǐng)求。當(dāng)接收或發(fā)送完一串行幀數(shù)據(jù)時(shí),使內(nèi)部串行口中斷請(qǐng)求標(biāo)志RI或TI=1,并請(qǐng)求中斷。2014/066單元地址88H(1)定時(shí)器/計(jì)數(shù)器控制寄存器TCON(88H)2)中斷標(biāo)志2014/066(2)串行口控制寄存器SCON(98H)TIRI

99H98HTI—串行口發(fā)送中斷標(biāo)志位。串行口發(fā)送完一組數(shù)據(jù)時(shí),向CPU發(fā)出中斷申請(qǐng),同時(shí)也使TI由硬件自動(dòng)置位。CPU響應(yīng)此中斷后,須由軟件復(fù)位。RI—串行口接收中斷標(biāo)志位。串行口接收到一組數(shù)據(jù)時(shí),向CPU發(fā)出中斷申請(qǐng),同時(shí)也使RI由硬件自動(dòng)置位。CPU響應(yīng)此中斷后,須由軟件復(fù)位。MCS-51系統(tǒng)復(fù)位后,TCON和SCON中各位被復(fù)位成“0”狀態(tài)。2014/0662、MCS-51對(duì)中斷請(qǐng)求的控制1)對(duì)中斷允許的控制中斷允許總控位EA,配合各中斷源的中斷允許控制位共同實(shí)現(xiàn)對(duì)中斷請(qǐng)求的控制。這些中斷允許控制位集成在中斷允許寄存器IE(A8H)中。EAESET1EX1ET0EX0

AFHACHABHAAHA9HA8HEA—CPU中斷允許總控位,(位地址為AFH)。當(dāng)EA=1時(shí),CPU開(kāi)放中斷,每個(gè)中斷源是允許還是禁止分別由各自的允許位確定。當(dāng)EA=0,CPU關(guān)閉所有中斷請(qǐng)求,稱(chēng)關(guān)中斷。2014/066ES—串行口中斷允許控制位,位地址為ACH。當(dāng)ES=1,允許串行口中斷,當(dāng)ES=0,禁止串行口中斷。ET1—定時(shí)器/計(jì)數(shù)器T/C1的溢出中斷允許控制位,位地址為ACH。當(dāng)ET1=1,允許T/C1中斷,當(dāng)ET1=0,禁止T/C1中斷。EX1—外部中斷1的中斷允許控制位,位地址為AAH。當(dāng)EX1=1,允許外部中斷1中斷,當(dāng)EX1=0,禁止外部中斷1中斷。ET0—定時(shí)器/計(jì)數(shù)器T/C0的溢出中斷允許控制位,位地址為A9H。當(dāng)ET0=1,允許T/C0中斷,當(dāng)ET0=0,禁止T/C0中斷。EX0—外部中斷0的中斷允許控制位,位地址為A8H。當(dāng)EX0=1,允許外部中斷0中斷,當(dāng)EX0=0,禁止外部中斷0中斷。2014/066中斷允許寄存器IE的單元地址是A8H,各控制位也可位尋址,故既可以用字節(jié)傳送指令也可以用位操作指令來(lái)對(duì)各個(gè)中斷請(qǐng)求加以控制。例:開(kāi)放T1的溢出中斷MOVIE,#88H;

SETBEASETBET12014/0662)中斷優(yōu)先級(jí)的控制MCS-51具有兩個(gè)中斷優(yōu)先級(jí),可由軟件設(shè)置每個(gè)中斷源為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷。IP(B8H):中斷優(yōu)先級(jí)寄存器,鎖存各中斷優(yōu)先級(jí)的控制位,用戶可由軟件設(shè)定。PSPT1PX1PT0PX0BCHBBHBAHB9HB8HPS:串行口中斷優(yōu)先級(jí)控制位。當(dāng)PS=1時(shí),串行口中斷被定義為高優(yōu)先級(jí)中斷,當(dāng)PS=0,串行口中斷被定義為低優(yōu)先級(jí)中斷。PT1:T/C1中斷優(yōu)先級(jí)控制位。當(dāng)PT1=1時(shí),T/C1中斷被定義為高優(yōu)先級(jí)中斷,當(dāng)PT1=0,T/C1中斷被定義為低優(yōu)先級(jí)中斷。2014/066PX1:外部中斷1中斷優(yōu)先級(jí)控制位。當(dāng)PX1=1時(shí),外部中斷1中斷被定義為高優(yōu)先級(jí)中斷,當(dāng)PX1=0,外部中斷1中斷被定義為低優(yōu)先級(jí)中斷。PT0:T/C0中斷優(yōu)先級(jí)控制位。當(dāng)PT0=1時(shí),T/C0中斷被定義為高優(yōu)先級(jí)中斷,當(dāng)PT0=0,T/C0中斷被定義為低優(yōu)先級(jí)中斷。PX0:外部中斷0中斷優(yōu)先級(jí)控制位。當(dāng)PX0=1時(shí),外部中斷0中斷被定義為高優(yōu)先級(jí)中斷,當(dāng)PX0=0,外部中斷0中斷被定義為低優(yōu)先級(jí)中斷。2014/066單片機(jī)響應(yīng)中斷的條件為中斷源有請(qǐng)求(中斷允許寄存器IE=1),且CPU開(kāi)中斷(即EA=1)。這樣,在每個(gè)機(jī)器周期內(nèi),單片機(jī)對(duì)所有中斷源都進(jìn)行順序檢測(cè),并可在任1個(gè)周期的S6期間,找到所有有效的中斷請(qǐng)求,還對(duì)其優(yōu)先級(jí)進(jìn)行排隊(duì)。但是,必須滿足下列條件:3、MCS-51對(duì)中斷的響應(yīng)2014/0661)中斷響應(yīng)的條件(1)無(wú)同級(jí)或高級(jí)中斷正在服務(wù);(2)現(xiàn)行指令執(zhí)行到最后1個(gè)機(jī)器周期且已結(jié)束;(3)若現(xiàn)行指令為RETI或需訪問(wèn)特殊功能寄存器IE或IP的指令時(shí),執(zhí)行完該指令且緊隨其后的另1條指令也已執(zhí)行完。單片機(jī)在下1個(gè)機(jī)器周期的S1期間響應(yīng)中斷。否則,將丟棄中斷查詢的結(jié)果。2014/066①關(guān)中斷②保存斷點(diǎn)③轉(zhuǎn)入中斷入口地址把被響應(yīng)的中斷源所對(duì)應(yīng)的中斷服務(wù)程序的入口地址(中斷矢量)送入PC,從而轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。2)中斷響應(yīng)過(guò)程

中斷源入口地址

外部中斷0 0003H

外部中斷1 0013H定時(shí)器/計(jì)數(shù)器T0 000BH定時(shí)器/計(jì)數(shù)器T1 001BH

串行口中斷 0023H2014/066

3)中斷的響應(yīng)時(shí)間不同的情況對(duì)中斷響應(yīng)的時(shí)間不同:(1)最短的響應(yīng)時(shí)間,需要5個(gè)機(jī)器周期。調(diào)用指令本身要用2個(gè)機(jī)器周期,從外部中斷請(qǐng)求有效到開(kāi)始執(zhí)行中斷服務(wù)程序的第一條指令,至少需要3個(gè)機(jī)器周期。(2)如果遇到中斷受阻,中斷響應(yīng)時(shí)間會(huì)更長(zhǎng)一些。不同中斷受阻情況,附加的等待時(shí)間為1~5個(gè)機(jī)器周期。(3)若系統(tǒng)中只有一個(gè)中斷源,則響應(yīng)時(shí)間為3~8個(gè)機(jī)器周期。如果有兩個(gè)以上中斷源同時(shí)申請(qǐng)中斷,則響應(yīng)時(shí)間將更長(zhǎng)。

2014/0664、中斷請(qǐng)求的撤消1)定時(shí)器/計(jì)數(shù)器中斷請(qǐng)求的撤消

中斷請(qǐng)求被響應(yīng)后。硬件會(huì)自動(dòng)清TF0或TF1。2)外部中斷請(qǐng)求的撤消

(1)跳沿方式外部中斷請(qǐng)求的撤消是自動(dòng)撤消的。(2)電平方式外部中斷請(qǐng)求的撤消:除了標(biāo)志位清“0”之外,還需在中斷響應(yīng)后把中斷請(qǐng)求信號(hào)引腳從低電平強(qiáng)制改變?yōu)楦唠娖健?014/0663)串行口中斷請(qǐng)求的撤消

響應(yīng)串行口的中斷后,CPU無(wú)法知道是接收中斷還是發(fā)送中斷,還需測(cè)試這兩個(gè)中斷標(biāo)志位的狀態(tài),以判定是接收操作還是發(fā)送操作,然后才能清除。所以串行口中斷請(qǐng)求的撤消只能用軟件清除。

CLRTI;清TI標(biāo)志位 CLRRI;清RI標(biāo)志位

用P1.0接在觸發(fā)器的S端作為應(yīng)答線,當(dāng)CPU響應(yīng)中斷后可使用如下指令:

ANLPl,#0FEHORLP1,#01HCLRIE02014/0661、MCS-51中斷系統(tǒng)的初始化中斷初始化是指用戶對(duì)TCON、SCON、IE等特殊功能寄存器中的各控制位進(jìn)行賦值。中斷系統(tǒng)的初始化步驟:①CPU開(kāi)中斷或關(guān)中斷②某中斷源中斷請(qǐng)求的允許或禁止(屏蔽)③設(shè)定所用中斷的中斷優(yōu)先級(jí)④若為外部中斷,則應(yīng)規(guī)定低電平還是負(fù)邊沿的中斷觸發(fā)方式§7.4.2

MCS-51中斷系統(tǒng)應(yīng)用2014/066例:寫(xiě)出INT1為低電平觸發(fā)的中斷系統(tǒng)初始化程序位指令:SETBEA;SETBEX1;開(kāi)INT1中斷SETBPX1;INT1為高優(yōu)先級(jí)CLRIT1;INT1低電平觸發(fā)字節(jié)指令:MOVIE,#84HORLIP,#04HANLTCON,#0FBH2014/066例:寫(xiě)出INT0為負(fù)邊沿觸發(fā)的中斷系統(tǒng)初始化程序位指令:SETBEA;SETBEX0;開(kāi)INT0中斷SETBPX0;INT0為高優(yōu)先級(jí)SETBIT0;INT0下降沿觸發(fā)字節(jié)指令:MOVIE,#81HORLIP,#01HORLTCON,#01H2014/0662、中斷服務(wù)程序編寫(xiě)此程序應(yīng)注意以下幾點(diǎn):①為了要跳到用戶設(shè)計(jì)的中斷服務(wù)程序,在相應(yīng)入口地址安排一條跳轉(zhuǎn)指令;②在中斷服務(wù)程序的末尾,安排一條返回指令RETI;③由于在響應(yīng)中斷時(shí),CPU只自動(dòng)保護(hù)斷點(diǎn),所以CPU的其他現(xiàn)場(chǎng)的保護(hù)和恢復(fù)也必須由用戶在中斷服務(wù)程序中安排。2014/066例:P1.4—P1.7作為輸出口,P1.0—P1.3作為輸入口。要求采用中斷觸發(fā)方式,每中斷一次完成一次讀/寫(xiě)操作,寫(xiě)出CPU響應(yīng)INT0中斷時(shí)的主程序和中斷服務(wù)程序。2014/066ORG0000HAJMPMAIN;ORG0003HAJMPINTVS;…

ORG0100HMAIN:SETBEA;

SETBEX0;

SETBPX0;

SETBIT0;HERE:AJMPHERE;ORG0200HINTVS:MOVA,#0FFH;

MOVP1,A;

MOVA,P1;

SWAPA;

MOVP1,A;

RETIEND2014/0667.5

MCS-51內(nèi)部資源應(yīng)用§7.5.1

MCS-51內(nèi)部定時(shí)計(jì)數(shù)器及其應(yīng)用

MCS-51單片機(jī)內(nèi)部有2個(gè)16位的可編程的定時(shí)器/計(jì)數(shù)器,即定時(shí)器/計(jì)數(shù)器0(T/C0)和定時(shí)器/計(jì)數(shù)器1(T/C1),它們都有定時(shí)和對(duì)外部事件計(jì)數(shù)的功能。T/C0是由兩個(gè)8位的特殊功能寄存器TH0(8CH)和TL0(8AH)組成的,T/C1是由TH1(8DH)和TL1(8BH)組成。通過(guò)對(duì)TH1、TL1、TH0和TL0的初始化編程來(lái)控制T/C0和T/C1的計(jì)數(shù)初值。2014/066圖定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)框圖2014/0661、定時(shí)/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)及工作原理加法計(jì)數(shù)器是計(jì)滿溢出時(shí)才申請(qǐng)中斷,所以在給計(jì)數(shù)器賦初值時(shí),不能直接輸入所需的計(jì)數(shù)值,而應(yīng)輸入的是計(jì)數(shù)器計(jì)數(shù)的最大值與這一計(jì)數(shù)值的差值。設(shè)最大值為M,計(jì)數(shù)值為N,初值為X,則X的計(jì)算方法如下:計(jì)數(shù)狀態(tài):X=M-N定時(shí)狀態(tài):X=M-定時(shí)時(shí)間/T而T=12÷晶振頻率

2014/0662014/0661111102、定時(shí)/計(jì)數(shù)器工作方式及控制寄存器1)定時(shí)器/計(jì)數(shù)器的方式寄存器TMOD2014/066M1M0工作方式控制位

方式0的計(jì)數(shù)最大值:213

方式1的計(jì)數(shù)最大值:216方式2的計(jì)數(shù)最大值:28方式3的計(jì)數(shù)最大值:282014/066

TF0、TF1分別是定時(shí)器/計(jì)數(shù)器T0、T1的溢出標(biāo)志位,加法計(jì)數(shù)器計(jì)滿溢出時(shí)置1,申請(qǐng)中斷,在中斷響應(yīng)后自動(dòng)復(fù)0。TF產(chǎn)生的中斷申請(qǐng)是否被接受,還需要由中斷是否開(kāi)放來(lái)決定。2)定時(shí)器/計(jì)數(shù)器控制寄存器TCONTR1、TR0分別是定時(shí)器/計(jì)數(shù)器T1、T0的運(yùn)行控制位,通過(guò)軟件置1后,定時(shí)器/計(jì)數(shù)器才開(kāi)始工作,在系統(tǒng)復(fù)位時(shí)被清0。2014/0663)定時(shí)/計(jì)數(shù)器的工作方式(1)方式0定時(shí):內(nèi)部機(jī)器周期計(jì)數(shù):外部脈沖信號(hào)方式0:高8位和低5位的13位計(jì)數(shù)器的運(yùn)行方式。當(dāng)TL1/TL0的低5位溢出時(shí),向TH1(TH0)進(jìn)位,而TH1(TH0)溢出時(shí)向TF1(TF0)標(biāo)志進(jìn)位。2014/066方式1(16位計(jì)數(shù)器)(2)方式1:

是一個(gè)16位定時(shí)器/計(jì)數(shù)器,TH1(TH0)和TL1(TL0)均是8位的,構(gòu)成16位計(jì)數(shù)器。2014/066(3)方式2:8位計(jì)數(shù)值自動(dòng)重裝圖方式2(初始常數(shù)自動(dòng)重裝載)計(jì)數(shù)初值計(jì)數(shù)初值2014/066(4)方式3

增加一個(gè)附加的8位定時(shí)器/計(jì)數(shù)器,從而具有3個(gè)定時(shí)器/計(jì)數(shù)器。2014/066工作方式3下的T0:T0分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器:TL0和TH0。TL0使用T0的狀態(tài)控制位C/T、GATE、TR0。而TH0被固定為一個(gè)8位定時(shí)器(不能作外部計(jì)數(shù)模式),并使用定時(shí)器T1的狀態(tài)控制位TR1和TF1,同時(shí)占用定時(shí)器T1的中斷請(qǐng)求源TF1。

方式3只適用于定時(shí)器/計(jì)數(shù)器T0。T1不能工作在方式3,T1方式3時(shí)相當(dāng)于TR1=0,停止計(jì)數(shù)(此時(shí)T1可用來(lái)作串行口波特率產(chǎn)生器)。2014/0664、定時(shí)/計(jì)數(shù)器的應(yīng)用(1)初始化的步驟

①確定工作方式,給TMOD送一個(gè)方式控制字;

②計(jì)算計(jì)數(shù)初值X,并寫(xiě)入TH0、TL0或TH1、TL1;

③根據(jù)需要置位EA使CPU開(kāi)放中斷,同時(shí)置位ETX,允許T/C中斷;

④給TCON送命令控制字,即置位TRX啟動(dòng)T/C計(jì)數(shù)。(2)計(jì)數(shù)器初值的計(jì)算設(shè)需要計(jì)數(shù)器計(jì)數(shù)的個(gè)數(shù)為N,計(jì)數(shù)初值為X,則:

X=M-N2014/066例1:利用T0方式0產(chǎn)生1ms定時(shí),在P1.0引腳上輸出周期為2ms的方波。設(shè)單片機(jī)晶振頻率fosc=12MHZ。(1)計(jì)算初值X則:213-X=1×10-3/(1×10-6),X=8192-1000=7192

方波周期為2ms,則T0定時(shí)為1ms計(jì)數(shù)溢出1次(每1ms產(chǎn)生一次中斷),CPU響應(yīng)中斷后,在中斷服務(wù)程序中對(duì)P1.0取反。即X=00011100

0001

1000B,所以,T0的初值為:

TH0=0E0HTL0=18H(2)初始化程序設(shè)計(jì)

2014/066查詢方式的參考程序:LOOP:MOVTMOD,#00H;置計(jì)數(shù)器的方式控制字

MOVTH0,#0E0H;T0置初值

MOVTL0,#18HSETBEASETBET0

SETBTR0

;接通T0LOOP1:JNBTF0,LOOP1

;查詢TF0標(biāo)志 CLRTR0

;T0溢出,關(guān)閉T0 CPLP1.0;P1.0的狀態(tài)求反

SJMPLOOP2014/066ORG0000H

AJMPMAINORG000BH

AJMPTCOS

ORG1200HTCOS:CPLP1.0MOVTH0,#0E0HMOVTL0,#18HRETIENDORG1000HMAIN:MOVSP,#6FHMOVTMOD,#00HMOVTH0,#0E0HMOVTL0,#18HSETBEASETBET0SETBTR0HERE:SJMPHERE

…………

中斷方式的參考程序:2014/066例:利用T0產(chǎn)生在P1.0引腳上輸出周期為2s的方波。設(shè)單片機(jī)晶振頻率fosc=12MHZ。(1)計(jì)算初值X則:216-X=50ms/(1×10-6)s,X=65536-50000=15536解:方波周期為2s,則T0定時(shí)應(yīng)為1s,計(jì)數(shù)溢出。計(jì)數(shù)值超出最大值。TH0=3CHTL0=B0HT0工作方式,定時(shí)50ms,循環(huán)20次,則實(shí)現(xiàn)1s定時(shí)。(2)初始化程序設(shè)計(jì)

2014/066ORG0000H

AJMPMAINORG000BH

AJMPBRT0

ORG1200HBRT0:DJNZR0,NEXT

CPLP1.0

MOVR0,#20NEXT:MOVTH0,#3CHMOVTL0,#0B0HRETIENDORG1000HMAIN:MOVSP,#6FHMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBEASETBET0SETBTR0MOVR0,#20HERE:SJMPHERE

…………

2014/066§7.5.2

MCS-51內(nèi)部串行口MCS-51單片機(jī)內(nèi)部有1個(gè)全雙工串行口,可同時(shí)發(fā)送和接收數(shù)據(jù)。它有4種工作方式,可供不同場(chǎng)合使用。波特率由軟件設(shè)置,通過(guò)片內(nèi)的定時(shí)/計(jì)數(shù)器產(chǎn)生。接收、發(fā)送均可工作在查詢方式或中斷方式,使用十分靈活。MCS-51的串行口除了用于數(shù)據(jù)通信外,還可以非常方便地構(gòu)成一個(gè)或多個(gè)并行輸入/輸出口,或作串/并轉(zhuǎn)換,用來(lái)驅(qū)動(dòng)鍵盤(pán)與顯示器。2014/0661、MCS-51串行口的結(jié)構(gòu)

51單片機(jī)的串行口由發(fā)送/接收緩沖器以及2個(gè)專(zhuān)用寄存器SCON和PCON組成。用P3.0、P3.1,為RXD和TXD,從而構(gòu)成全雙工的通信方式。2個(gè)獨(dú)立的接收、發(fā)送緩沖器SBUF(特殊功能寄存器)共用一個(gè)字節(jié)地址(99H),用來(lái)發(fā)送和接收。2014/0662014/0661)串行數(shù)據(jù)發(fā)送電路發(fā)送電路由發(fā)送緩沖寄存器SBUF、零檢測(cè)器和發(fā)送控制器等電路組成,用于串行口的發(fā)送。2)串行數(shù)據(jù)接收電路接收電路由接收緩沖寄存器SBUF、接收移位寄存器和接收控制器等組成,用于串行數(shù)據(jù)的接收。2014/0663)串行口數(shù)據(jù)緩沖器SBUF

SBUF是2個(gè)在物理上獨(dú)立的接收、發(fā)送緩沖器,可同時(shí)發(fā)送、接收數(shù)據(jù)。2個(gè)緩沖器只用1個(gè)字節(jié)地址99H,可通過(guò)指令對(duì)SBUF的讀寫(xiě)來(lái)區(qū)別是對(duì)接收緩沖器的操作還是對(duì)發(fā)送緩沖器的操作。

CPU寫(xiě)SBUF,就是修改發(fā)送緩沖器;讀SBUF,就是讀接收緩沖器。串行口對(duì)外也有兩條獨(dú)立的收發(fā)信號(hào)線RXD(P3.0)和TXD(P3.1),因此可以同時(shí)發(fā)送、接收數(shù)據(jù),實(shí)現(xiàn)全雙工傳送。2014/066在進(jìn)行異步通信時(shí),數(shù)據(jù)的發(fā)送和接收分別在各自的時(shí)鐘(TCLK和RCLK)控制下進(jìn)行的,但都必須與字符位數(shù)的波特率保持一致。MCS-51串行口的發(fā)送和接收時(shí)鐘可由兩種方式產(chǎn)生,一種是由主機(jī)頻率fosc經(jīng)分頻后產(chǎn)生,另一種方式是由內(nèi)部定時(shí)器T1或T2的溢出率經(jīng)16分頻后提供。4)串行通信時(shí)鐘2014/0665)發(fā)送和接收控制電路

串行發(fā)送:由指令MOVSBUF,A啟動(dòng),CPU把數(shù)據(jù)(字符)寫(xiě)入串行口的發(fā)送緩沖器SBUF(發(fā))中,然后在移位脈沖的控制下,低位在前,高位在后,從TXD端(方式0除外)一位位地向外發(fā)送。串行口接收:當(dāng)REN置“1”后,允許接收。接收端RXD一位位地接收數(shù)據(jù),直到收到一個(gè)完整的字符數(shù)據(jù)后,使接收中RI置“1”,向CPU申請(qǐng)中斷。CPU響應(yīng)中斷,用指令MOVA,SBUF把接收緩沖器SBUF的內(nèi)容讀入累加器A中。2014/0662、串行口的工作方式

MCS-51的串行口有四種工作方式,由SCON中的SM1和SM0來(lái)決定。1)方式0:同步移位方式

工作方式0為同步移位寄存器方式,其波特率是固定為振蕩頻率fosc的1/12。在這種工作方式下,發(fā)送和接收串行數(shù)據(jù)都通過(guò)RXD(P3.0)進(jìn)行,從TXD(P3.1)輸出移位脈沖,控制外部的移位寄存器移位。2014/0662)方式1:雙機(jī)異步通信方式在方式1,串行口被設(shè)置為波特率可變的8位異步通信接口。

方式1傳送的波特率,取決于定時(shí)器1的溢出率和特殊功能寄存器PCON中SMOD的值,計(jì)算方法如下:方式1波特率=(2SMOD/32)×定時(shí)器T1的溢出率當(dāng)串行口置為方式1,且REN=1,RI=0時(shí),串行口處于接收(輸入狀態(tài))。2014/0661)串行口控制寄存器SCON

SCON寄存器用來(lái)控制串行口的工作方式和狀態(tài),它可以是位尋址。在復(fù)位時(shí)所有位被清0,字地址為98H。SCON的格式為:3、串行口工作方式設(shè)置2014/066SM0、SM1:定義串行口的操作模式,對(duì)應(yīng)4種模式。其中fOSC是振蕩器頻率,UART為通用異步接收和發(fā)送器的英文縮寫(xiě)。SM2:多機(jī)通信控制位。主要用于工作方式2和方式3。2014/0662)特殊功能寄存器PCON

PCON主要是為電源控制設(shè)置的專(zhuān)用寄存器,字節(jié)地址為87H,不能按位尋址。

特殊功能寄存器PCON中,只SMOD與串行口的工作有關(guān),

該位是串行口波特率系數(shù)的控制位:SMOD=1時(shí),波特率加倍,否則不加倍。2014/0664、串行口的工作方式及應(yīng)用

MCS-51的串行口有四種工作方式,由SCON中的SM1和SM0來(lái)決定。1)方式0

工作方式0為同步移位寄存器方式,其波特率是固定為振蕩頻率fosc的1/12。在這種工作方式下,發(fā)送和接收串行數(shù)據(jù)都通過(guò)RXD(P3.0)進(jìn)行,從TXD(P3.1)輸出移位脈沖,控制外部的移位寄存器移位。2014/066串行口每秒鐘發(fā)送或接收的數(shù)據(jù)位數(shù)稱(chēng)為波特率。假設(shè)發(fā)送一位數(shù)據(jù)所需時(shí)間為T(mén),則波特率為1/T。即:SMOD=0,波特率為(1/64)fOSC;SMOD=1,波特率為(1/32)fOSC。方式2波特率=(2SMOD/64)×fosc三、串行口的波特率

(1)方式0的波特率:?jiǎn)纹瑱C(jī)晶振頻率的1/12,即每個(gè)機(jī)器周期接收或發(fā)送一位數(shù)據(jù)。

(2)方式2的波特率:PCON的最高位SMOD的寫(xiě)入值有關(guān):2014/066

(3)方式1和方式3的波特率,除了與SMOD位有關(guān)之外,還與定時(shí)器T1的溢出率有關(guān)。定時(shí)器T1作為波特率發(fā)生器,常選用定時(shí)方式2(8位重裝載初值方式),并且禁止T1中斷。此時(shí)TH1從初值計(jì)數(shù)到產(chǎn)生溢出,它每秒鐘溢出的次數(shù)稱(chēng)為溢出率。于是2014/066例:根據(jù)如下圖的線路連接,請(qǐng)編出發(fā)光二極管自左至右以一定速度顯示的程序。設(shè)發(fā)光二極管為共陰極接法。2014/066ORG2000HMOVSCON,#00H;串行口初始化為方式0。CLRP1.0;禁止CD4094并行輸出。MOVA,#80H;起始顯示碼送A。MOVSBUF,A;8031串行輸出。LOOP:SJMPLOOP;等待串行口輸出完。分析:CD4094是一種8位串行輸入(DATA端)并行輸出的同步移位寄存器。CLK為同步脈沖輸入端。STB為控制端:若STB=0,則8位并行數(shù)據(jù)輸出關(guān)閉,但允許串行數(shù)據(jù)從DATA輸入;若STB=1,則DATA輸入端關(guān)閉,但允許8位數(shù)據(jù)并行輸出。設(shè)串行口采用中斷方式發(fā)送,發(fā)光二極管的顯示時(shí)間依靠延時(shí)程序DELAY實(shí)現(xiàn)。整個(gè)程序由主程序和中斷服務(wù)程序兩部分組成。2014/066中斷服務(wù)程序代碼:ORG0023LJMPSBV;轉(zhuǎn)SBV。ORG0100HSBV:SETBP1.0;點(diǎn)亮發(fā)光二極管。

LCALLDELAY;點(diǎn)亮一段時(shí)間。

CLRTI;清發(fā)送中斷標(biāo)志。

RRA;準(zhǔn)備點(diǎn)亮下一位。

CLRP1.0;滅顯示。

MOVSBUF,A;串行口輸出。

RETI;中斷返回。DELAY:MOVR7,#05HWAIT1:MOVR6,#0FFHWAIT2:DJNZR6,WAIT2DJNZR7,WAIT1RETEND2014/066例:

根據(jù)如圖電路,編出MCS-51串行輸入開(kāi)關(guān)量并把它存入20H單元的程序。要求控制開(kāi)關(guān)KC斷開(kāi)(KC=1)時(shí),8031處于等待狀態(tài),KC合上(KC=0)時(shí)8031開(kāi)始輸入和進(jìn)行模擬。2014/066分析:CD4014是并行輸入串行輸出的同步移位寄存器。其中,Q8為串行輸出端,CLK為同步移位脈沖輸入端,P/S為控制端。若P/S=0,則CD4014可以串行輸出(并行輸入端關(guān)閉);若P/S,則CD4014可以并行輸入數(shù)據(jù)(串行輸出端關(guān)閉)。程序采用對(duì)P1.0查詢,查詢到KC閉合時(shí)再通過(guò)對(duì)P1.1的控制而完成開(kāi)關(guān)量的輸入。ORG2000HSTART:JBP1.0,$;若KC斷開(kāi),則等待。

SETBP1.1;令CD4014并行輸入開(kāi)關(guān)量。

CLRP1.1;CD4014開(kāi)始串行輸出。

MOVSCON,#10H;令串行口方式為0,啟動(dòng)接收。

JNBRI,$;等待接收。

CLRRI;若接收已完,則清RI。

MOVA,SBUF;開(kāi)關(guān)量送累加器A。

MOV20H,A;存入內(nèi)存。

SJMPSTART;準(zhǔn)備下次開(kāi)關(guān)量輸入。

END2014/0662)方式1在方式1,串行口被設(shè)置為波特率可變的8位異步通信接口。

方式1傳送的波特率,取決于定時(shí)器1的溢出率和特殊功能寄存器PCON中SMOD的值,計(jì)算方法如下:方式1波特率=(2SMOD/32)×定時(shí)器T1的溢出率當(dāng)串行口置為方式1,且REN=1,RI=0時(shí),串行口處于接收(輸入狀態(tài))。2014/066

例:用中斷法編出8051單片機(jī)串行口方式1下的發(fā)送程序:fosc=6MHz,定時(shí)器T1做波特率發(fā)生器,波特率為2400bps,選SMOD=1;發(fā)送字符塊在內(nèi)存RAM中的TBLOCK單元,字符塊長(zhǎng)度為20。采用奇校驗(yàn),校驗(yàn)位在數(shù)據(jù)第8位。

解:SM0、SM1=01時(shí)為方式1,在SM2=0,允許發(fā)送數(shù)據(jù),其余各位均取0。則SCON=0100000B=40H

對(duì)于PCON:由于SMOD=1,所以PCON=80H(同系統(tǒng)復(fù)位以后的狀態(tài),可不賦值)。對(duì)于TMOD:由于只用T1,且為定時(shí)方式2,所以

TMOD=00100000B=20H通過(guò)查表確定X=F4H

2014/066主程序:

MOVTMOD,#20H;定時(shí)器T1設(shè)為方式2MOVTL1,#0F4H;裝入定時(shí)器初值MOVTH1,#0F4H;8位重裝值SETBTR1;啟動(dòng)定時(shí)器T1MOVSCON,#40H;串行口設(shè)為方式1MOVPCON,#80H;SMOD=1MOVR0,#TBLOCK;發(fā)送緩沖區(qū)首址MOVR2,#20;數(shù)據(jù)長(zhǎng)度

MOVA,R2MOVSBUF,A;先輸出字符長(zhǎng)度SETBEA;開(kāi)中斷SETBET1;允許T1中斷中斷SETBES;允許串行口中斷SJMP$;等待中斷2014/066中斷服務(wù)程序:

ORG0023H;串行中斷入口LJMPTXSV;轉(zhuǎn)至中斷服務(wù)程序TXSV:CLRES;清串行口中斷CLRTI;清TIMOVA,@R0;發(fā)送字符

MOVC,PSW.0CPLCMOVACC.7,CMOVSBUF,A;啟動(dòng)發(fā)送DJNZR2,NEXT;數(shù)據(jù)未發(fā)送完成CLRESSJMP$NEXT:INCR0;修改地址指針RETI;中斷返回;形成奇校驗(yàn)C2014/0663)方式2和方式3

串行口工作為方式2時(shí),被定義為9位異步通信接口。方式2波特率=(2SMOD/64)fosc

方式3為波特率可變的9位異步通信方式,除了波特率有所區(qū)別之外,其余都與方式2相同。方式3的波特率=(2SMOD/32)×(定時(shí)器T1的溢出率)2014/066常用波特率和定時(shí)器T1初值2014/066圖2.1MCS-51單片機(jī)結(jié)構(gòu)框圖例:用查詢法編出串行口在方式3下的接收程序。設(shè)單片機(jī)主頻為6MHz,波特率為2400bps,接收數(shù)據(jù)區(qū)始址為RBLOCK(內(nèi)部

溫馨提示

  • 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)論