第4章 內(nèi)部資源_第1頁(yè)
第4章 內(nèi)部資源_第2頁(yè)
第4章 內(nèi)部資源_第3頁(yè)
第4章 內(nèi)部資源_第4頁(yè)
第4章 內(nèi)部資源_第5頁(yè)
已閱讀5頁(yè),還剩81頁(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、第第4 4章章 MCS-51的內(nèi)部資源的內(nèi)部資源定時(shí)/計(jì)數(shù)器串行通信及其接口中斷 4.1 4.1 定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器 4 4.1.0 .1.0 定時(shí)定時(shí)/ /計(jì)數(shù)器的概計(jì)數(shù)器的概述述 4 4.1.1 .1.1 定時(shí)定時(shí)/ /計(jì)數(shù)器的結(jié)構(gòu)與原理計(jì)數(shù)器的結(jié)構(gòu)與原理 4 4.1.2 .1.2 定時(shí)定時(shí)/ /計(jì)數(shù)器的控制計(jì)數(shù)器的控制 4.1.3 4.1.3 定時(shí)定時(shí)/ /計(jì)數(shù)器的工作方式及應(yīng)用計(jì)數(shù)器的工作方式及應(yīng)用 4.1.4 4.1.4 編程舉例編程舉例 4.1.0 概述 1.1.定時(shí)與計(jì)數(shù)定時(shí)與計(jì)數(shù)計(jì)數(shù):就是數(shù)(動(dòng)詞)數(shù)(名詞)即數(shù)數(shù)計(jì)數(shù):就是數(shù)(動(dòng)詞)數(shù)(名詞)即數(shù)數(shù) 數(shù)電中有,加法(數(shù)

2、電中有,加法(+1+1)或減法()或減法(-1-1)計(jì)數(shù)器。)計(jì)數(shù)器。 若計(jì)數(shù)器的輸入若計(jì)數(shù)器的輸入CP脈沖來(lái)自固定頻率源,也脈沖來(lái)自固定頻率源,也可以用作為定時(shí)器??梢杂米鳛槎〞r(shí)器。 即:定時(shí)長(zhǎng)度即:定時(shí)長(zhǎng)度= =Tcp*N 定時(shí)、延時(shí)定時(shí)、延時(shí)2.2.軟件延時(shí)與硬件延時(shí)軟件延時(shí)與硬件延時(shí) 軟件延時(shí):編程軟件延時(shí):編程 硬件延時(shí):數(shù)字電路硬件延時(shí):數(shù)字電路 脈沖電路定時(shí):?jiǎn)畏€(wěn)態(tài)脈沖電路定時(shí):?jiǎn)畏€(wěn)態(tài) 軟硬件延時(shí):在編程控制下的定時(shí)軟硬件延時(shí):在編程控制下的定時(shí)/ /計(jì)數(shù)器,它能貢獻(xiàn)延時(shí)功能,占用計(jì)數(shù)器,它能貢獻(xiàn)延時(shí)功能,占用CPU時(shí)間少時(shí)間少4.1.1 4.1.1 定時(shí)定時(shí)/ /計(jì)數(shù)器的結(jié)構(gòu)和

3、工作原理計(jì)數(shù)器的結(jié)構(gòu)和工作原理MCS-51MCS-51單片機(jī)內(nèi)部設(shè)有兩個(gè)單片機(jī)內(nèi)部設(shè)有兩個(gè)1616位可編程定時(shí)位可編程定時(shí)/ /計(jì)數(shù)器,簡(jiǎn)稱為定計(jì)數(shù)器,簡(jiǎn)稱為定時(shí)器時(shí)器0(0(T0T0) )和定時(shí)器和定時(shí)器1(1(T1T1) )。1616位的定時(shí)器位的定時(shí)器/ /計(jì)數(shù)器分別由兩個(gè)計(jì)數(shù)器分別由兩個(gè)8 8位寄存器組成,即:位寄存器組成,即:T0T0由由TH0TH0和和TL0TL0構(gòu)成,構(gòu)成,T1T1由由TH1TH1和和TL1TL1構(gòu)成。每個(gè)寄存器均可單獨(dú)訪問(wèn),構(gòu)成。每個(gè)寄存器均可單獨(dú)訪問(wèn),用于存放定時(shí)初值或計(jì)數(shù)初值的。用于存放定時(shí)初值或計(jì)數(shù)初值的。一個(gè)一個(gè)8 8位的模式控制寄存器位的模式控制寄存器

4、TMOD , 設(shè)定設(shè)定定時(shí)器的工作模式定時(shí)器的工作模式一個(gè)一個(gè)8 8位的狀態(tài)控制寄存器位的狀態(tài)控制寄存器TCONTCON。 控制控制定時(shí)器的啟動(dòng)與停止定時(shí)器的啟動(dòng)與停止,并保存,并保存T0T0、T1T1的的溢出和中斷標(biāo)志溢出和中斷標(biāo)志 控制信號(hào)控制信號(hào) (啟動(dòng))(啟動(dòng)) 選擇方式開關(guān)選擇方式開關(guān)GATE為選通門為選通門 C/T=0,定時(shí),定時(shí), /INTx是與中斷有關(guān)的引腳信號(hào)是與中斷有關(guān)的引腳信號(hào) 信號(hào)來(lái)自晶振頻率信號(hào)來(lái)自晶振頻率/12/12 TRx為定時(shí)為定時(shí)/ /計(jì)數(shù)器的運(yùn)行控制位計(jì)數(shù)器的運(yùn)行控制位 C/T=0,計(jì)數(shù),計(jì)數(shù)控制信號(hào)為控制信號(hào)為“1”時(shí)開關(guān)閉合時(shí)開關(guān)閉合 來(lái)自外部事件信號(hào)來(lái)

5、自外部事件信號(hào)控制信號(hào)控制信號(hào)=(/GATE+/INTx)TRx 停止由計(jì)數(shù)器溢出中斷控制停止由計(jì)數(shù)器溢出中斷控制1 1 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu)2 定時(shí)/計(jì)數(shù)器的原理1 1)定時(shí))定時(shí)/ /計(jì)數(shù)器的定時(shí)功能計(jì)數(shù)器的定時(shí)功能l計(jì)數(shù)器的加計(jì)數(shù)器的加1 1信號(hào)由振蕩器的信號(hào)由振蕩器的1212分頻信號(hào)產(chǎn)生,即分頻信號(hào)產(chǎn)生,即每過(guò)一每過(guò)一個(gè)機(jī)器周期,計(jì)數(shù)器加個(gè)機(jī)器周期,計(jì)數(shù)器加1 1,直至計(jì)滿溢出。,直至計(jì)滿溢出。l定時(shí)器的定時(shí)時(shí)間與系統(tǒng)的時(shí)鐘頻率有關(guān)。定時(shí)器的定時(shí)時(shí)間與系統(tǒng)的時(shí)鐘頻率有關(guān)。 因一個(gè)機(jī)器周期等于因一個(gè)機(jī)器周期等于1212個(gè)時(shí)鐘周期,所以個(gè)時(shí)鐘周期,所以計(jì)數(shù)頻率應(yīng)計(jì)數(shù)頻

6、率應(yīng)為系統(tǒng)時(shí)鐘頻率的十二分之一為系統(tǒng)時(shí)鐘頻率的十二分之一。如果晶振頻率為。如果晶振頻率為12MHz12MHz,則機(jī)器周期為則機(jī)器周期為1 1 s s。通過(guò)改變定時(shí)器的定時(shí)初值,并適當(dāng)。通過(guò)改變定時(shí)器的定時(shí)初值,并適當(dāng)選擇定時(shí)器的長(zhǎng)度選擇定時(shí)器的長(zhǎng)度(8(8位、位、1313位或位或1616位位) ),可以調(diào)整定時(shí)時(shí),可以調(diào)整定時(shí)時(shí)間。間。 2 2)定時(shí))定時(shí)/ /計(jì)數(shù)器的計(jì)數(shù)功能計(jì)數(shù)器的計(jì)數(shù)功能l 通過(guò)外部計(jì)數(shù)輸入引腳通過(guò)外部計(jì)數(shù)輸入引腳T0(P3.4)T0(P3.4)和和T1(P3.5)T1(P3.5)對(duì)外部信對(duì)外部信號(hào)計(jì)數(shù),外部脈沖的下降沿將觸發(fā)計(jì)數(shù)。號(hào)計(jì)數(shù),外部脈沖的下降沿將觸發(fā)計(jì)數(shù)。l

7、因檢測(cè)一個(gè)由因檢測(cè)一個(gè)由1 1至至0 0的跳變需要兩個(gè)機(jī)器周期,故的跳變需要兩個(gè)機(jī)器周期,故外部外部信號(hào)的最高計(jì)數(shù)頻率為時(shí)鐘頻率的二十四分之一信號(hào)的最高計(jì)數(shù)頻率為時(shí)鐘頻率的二十四分之一。如果晶。如果晶振頻率為振頻率為12MHz12MHz,則最高計(jì)數(shù)頻率為,則最高計(jì)數(shù)頻率為0.5MHz0.5MHz。為了確保給。為了確保給定電平在變化前至少被采樣一次,定電平在變化前至少被采樣一次,外部計(jì)數(shù)脈沖的高電平外部計(jì)數(shù)脈沖的高電平與低電平保持時(shí)間均需在一個(gè)機(jī)器周期以上與低電平保持時(shí)間均需在一個(gè)機(jī)器周期以上。 3 3 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的應(yīng)用計(jì)數(shù)器的應(yīng)用 定時(shí)器定時(shí)器/ /計(jì)數(shù)器具有定時(shí)和計(jì)數(shù)兩種功能,

8、應(yīng)用范圍如下計(jì)數(shù)器具有定時(shí)和計(jì)數(shù)兩種功能,應(yīng)用范圍如下1. 1. 定時(shí)與延時(shí)控制方面定時(shí)與延時(shí)控制方面 可產(chǎn)生定時(shí)中斷信號(hào),以設(shè)計(jì)出各種不同頻率的可產(chǎn)生定時(shí)中斷信號(hào),以設(shè)計(jì)出各種不同頻率的信號(hào)源;信號(hào)源;產(chǎn)生產(chǎn)生定時(shí)掃定時(shí)掃描信號(hào)描信號(hào),對(duì)鍵盤進(jìn)行掃描以獲得控制信號(hào),對(duì)顯示器進(jìn)行掃描以不間斷,對(duì)鍵盤進(jìn)行掃描以獲得控制信號(hào),對(duì)顯示器進(jìn)行掃描以不間斷地顯示數(shù)據(jù)。地顯示數(shù)據(jù)。2. 2. 測(cè)量外部脈沖方面測(cè)量外部脈沖方面 對(duì)外部脈沖信號(hào)進(jìn)行計(jì)數(shù)可測(cè)量脈沖信號(hào)的寬度、周期,也可實(shí)現(xiàn)自對(duì)外部脈沖信號(hào)進(jìn)行計(jì)數(shù)可測(cè)量脈沖信號(hào)的寬度、周期,也可實(shí)現(xiàn)自動(dòng)計(jì)數(shù)。動(dòng)計(jì)數(shù)。3. 3. 監(jiān)控系統(tǒng)工作方面監(jiān)控系統(tǒng)工作方面

9、對(duì)系統(tǒng)進(jìn)行定時(shí)掃描,當(dāng)系統(tǒng)工作異常時(shí),使系統(tǒng)自動(dòng)復(fù)位,重新啟對(duì)系統(tǒng)進(jìn)行定時(shí)掃描,當(dāng)系統(tǒng)工作異常時(shí),使系統(tǒng)自動(dòng)復(fù)位,重新啟動(dòng)以恢復(fù)正常工作。動(dòng)以恢復(fù)正常工作。4.1.2 4.1.2 定時(shí)定時(shí)/ /計(jì)數(shù)器的寄存器計(jì)數(shù)器的寄存器 1 模式控制寄存器TMOD 2 狀態(tài)控制寄存器TCON1 定時(shí)器模式寄存器TMOD 定時(shí)器方式寄存器定時(shí)器方式寄存器TMOD的作用是設(shè)置的作用是設(shè)置T0、T1的工作方式的工作方式TMOD的格式:的格式:各位的功能說(shuō)明各位的功能說(shuō)明:(1) GATE:門控位:門控位。GATE=0:軟件啟動(dòng)定時(shí)器軟件啟動(dòng)定時(shí)器,即用指令使,即用指令使TCON中的中的TR1(TR0)置置1即可啟

10、動(dòng)定時(shí)器即可啟動(dòng)定時(shí)器1(定時(shí)器定時(shí)器0)。GATE=1:軟件和硬件共同啟動(dòng)定時(shí)器軟件和硬件共同啟動(dòng)定時(shí)器,即用指令使,即用指令使TCON中的中的TR1(TR0)置置1時(shí),只有外部中斷時(shí),只有外部中斷/INT0(/INT1)引腳輸入高電平時(shí)才能啟動(dòng)定時(shí)器引腳輸入高電平時(shí)才能啟動(dòng)定時(shí)器1(定時(shí)器定時(shí)器0)。 ( (2) C/T:功能選擇位。:功能選擇位。C/T=0時(shí),以定時(shí)器方式工作。時(shí),以定時(shí)器方式工作。C/T=1時(shí),以計(jì)數(shù)器方式工作。時(shí),以計(jì)數(shù)器方式工作。(3) M1、M0:方式選擇位:方式選擇位。 定時(shí)器工作方式選擇位定義定時(shí)器工作方式選擇位定義 M1 M0M1 M0工作方式工作方式功能描

11、述功能描述0 00 0方式方式0 01313位計(jì)數(shù)器位計(jì)數(shù)器0 10 1方式方式1 11616位計(jì)數(shù)器位計(jì)數(shù)器1 01 0方式方式2 2自動(dòng)重裝初值自動(dòng)重裝初值8 8位計(jì)數(shù)器位計(jì)數(shù)器1 11 1方式方式3 3定時(shí)器定時(shí)器0 0:分為兩個(gè)獨(dú)立的:分為兩個(gè)獨(dú)立的8 8位計(jì)數(shù)器位計(jì)數(shù)器定時(shí)器定時(shí)器1 1:無(wú)中斷的計(jì)數(shù)器:無(wú)中斷的計(jì)數(shù)器2 定時(shí)器控制寄存器TCON TCON的作用是控制定時(shí)器的啟動(dòng)與停止,并保存的作用是控制定時(shí)器的啟動(dòng)與停止,并保存T0、T1的溢出和中斷標(biāo)志。的溢出和中斷標(biāo)志。 (1) TF1(TCON.7):定時(shí)器定時(shí)器1溢出標(biāo)志位溢出標(biāo)志位。當(dāng)定時(shí)器。當(dāng)定時(shí)器1計(jì)滿溢出時(shí),由硬件自

12、動(dòng)使計(jì)滿溢出時(shí),由硬件自動(dòng)使TF1置置1,并申請(qǐng)中斷,并申請(qǐng)中斷(2)2)TR1(TCON.6):定時(shí)器定時(shí)器1啟??刂莆粏⑼?刂莆?。GATE=0時(shí),用軟件使時(shí),用軟件使TR1置置1即啟動(dòng)定時(shí)器即啟動(dòng)定時(shí)器1,若用軟件使若用軟件使TR1清清0則停止定時(shí)器則停止定時(shí)器1。GATE=1時(shí),用軟件使時(shí),用軟件使TR1置置1的同時(shí)外部中斷的同時(shí)外部中斷INT1的引腳輸入高電平才能啟動(dòng)定時(shí)器的引腳輸入高電平才能啟動(dòng)定時(shí)器1。(3)(3)TF0(TCON.5):定時(shí)器定時(shí)器0溢出標(biāo)志位。溢出標(biāo)志位。其功能同其功能同TF1 (4) TR0(TCON.4):定時(shí)器定時(shí)器0啟停控制位。啟??刂莆弧F涔δ芡涔δ?/p>

13、同TR1 (5) IE1(TCON.3):外部中斷外部中斷1請(qǐng)求標(biāo)志位。請(qǐng)求標(biāo)志位。 (6) IT1(TCON.2):外部中斷外部中斷1觸發(fā)方式選擇位。觸發(fā)方式選擇位。 (7) IE0(TCON.1):外部中斷外部中斷0請(qǐng)求標(biāo)志位。請(qǐng)求標(biāo)志位。 (8) IT0(TCON.0):外部中斷外部中斷0 0觸發(fā)方式選擇位。觸發(fā)方式選擇位。4.1.3 4.1.3 定時(shí)定時(shí)/ /計(jì)數(shù)器的工作模式計(jì)數(shù)器的工作模式2 2模式模式1 1(1616位位) TFl是定時(shí)器溢出標(biāo)志。當(dāng)滿足條件(TRl1)AND(GATE0) 為真時(shí),接通計(jì)數(shù)輸入。當(dāng)計(jì)數(shù)值由全1再增1變?yōu)槿?時(shí),使TFl置1,請(qǐng)求中斷。 若TR1=1

14、和GATE=1? 則THl+TLl是否計(jì)數(shù)取決于/INT引腳的信號(hào),當(dāng)由0變1時(shí),開始計(jì)數(shù),當(dāng)/INTl由1變0時(shí)停止計(jì)數(shù)。3 3 工作模式工作模式2 2 模式模式2 2把定時(shí)器寄存器把定時(shí)器寄存器TL1TL1或或TL0)TL0)配置成一個(gè)可以自配置成一個(gè)可以自動(dòng)重裝載的動(dòng)重裝載的8 8位計(jì)數(shù)器。位計(jì)數(shù)器。 TL1TL1計(jì)數(shù)溢出時(shí),不僅使計(jì)數(shù)溢出時(shí),不僅使溢出標(biāo)志溢出標(biāo)志TF1TF1置置1 1,而且還,而且還自動(dòng)把自動(dòng)把TH1TH1中的內(nèi)容重裝中的內(nèi)容重裝載到載到TL1TL1中。中。 TH1TH1的內(nèi)容可以靠軟件預(yù)的內(nèi)容可以靠軟件預(yù)置,重裝載后其內(nèi)容不變。置,重裝載后其內(nèi)容不變。4.1.4 4

15、.1.4 編程舉例編程舉例 定時(shí)定時(shí)/計(jì)數(shù)器可用匯編或計(jì)數(shù)器可用匯編或C語(yǔ)言實(shí)現(xiàn)編程,無(wú)論使用語(yǔ)言實(shí)現(xiàn)編程,無(wú)論使用匯編語(yǔ)言還是匯編語(yǔ)言還是C語(yǔ)言,都需要對(duì)定時(shí)語(yǔ)言,都需要對(duì)定時(shí)/計(jì)數(shù)器初始化操作,計(jì)數(shù)器初始化操作,其步驟如下:其步驟如下: 把工作方式控制字寫入把工作方式控制字寫入TMOD寄存器中,寄存器中, 把定時(shí)或計(jì)數(shù)初值裝入把定時(shí)或計(jì)數(shù)初值裝入TLx,THx寄存器中寄存器中 置位置位ETx允許定時(shí)允許定時(shí)/計(jì)數(shù)器中斷計(jì)數(shù)器中斷 置位置位EA使使CPU開放中斷開放中斷 置位置位TRx以啟動(dòng)計(jì)數(shù)以啟動(dòng)計(jì)數(shù)例例1:編寫一段程序,讓編寫一段程序,讓51MCU的的P1.7輸出輸出1ms的方波(用定

16、的方波(用定時(shí)器時(shí)器T1完成),完成),fosc=12MHz。定時(shí)器初值計(jì)算定時(shí)器初值計(jì)算( T機(jī)機(jī)=1us)此時(shí)定時(shí)時(shí)間采用)此時(shí)定時(shí)時(shí)間采用0.5ms采用方式采用方式1:N=65536-500/1=65036=0FE0C所以(所以(TH1)=0FEH,(,(TL1)=0CH注意定時(shí)器的初注意定時(shí)器的初值計(jì)算方法!值計(jì)算方法!程序流程程序流程:開開 始始P1.7置置1T1模式設(shè)置模式設(shè)置T1初值設(shè)置初值設(shè)置(0.5ms)中斷設(shè)置中斷設(shè)置開中斷開中斷循環(huán)等待中斷循環(huán)等待中斷啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器T1中斷入口中斷入口T1初值設(shè)置初值設(shè)置(0.5ms)中斷返回中斷返回P1.7取反取反主程序流程主程序

17、流程中斷服務(wù)子程序流程中斷服務(wù)子程序流程ORG 0000H;主程序;主程序 AJMP MAIN ORG 001BH;定時(shí)中斷;定時(shí)中斷1入口入口 AJMP SERT1MAIN:SETB P1.7 MOV TMOD,#10H;設(shè);設(shè)T1為方式為方式1 MOV TH1,#0FEH;給;給T1賦初值賦初值 MOV TL1,#0CH SETB ET1;開定時(shí)器;開定時(shí)器T1中斷中斷 SETB EA SETB TR1;啟動(dòng)定時(shí)器;啟動(dòng)定時(shí)器T1 SJMP $SERT1:MOV TH1,#0FEH;定時(shí)器回賦初值;定時(shí)器回賦初值 MOV TL1,#0CH CPL P1.7 RETIEND中斷程序基本結(jié)構(gòu)中

18、斷程序基本結(jié)構(gòu)定時(shí)器初始化、開中斷定時(shí)器初始化、開中斷中斷服務(wù)程序中斷服務(wù)程序 例例2:設(shè)定時(shí)設(shè)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T0為定時(shí)狀態(tài),模式為定時(shí)狀態(tài),模式1,定時(shí),定時(shí)2ms,每當(dāng),每當(dāng)2ms到申請(qǐng)中斷:將到申請(qǐng)中斷:將A的內(nèi)容左環(huán)移一次送的內(nèi)容左環(huán)移一次送P1口。晶振頻率為口。晶振頻率為6MHz ORG 0000H ;給出首地址;給出首地址 AJMP MAIN ;轉(zhuǎn)主程序;轉(zhuǎn)主程序 ORG 000BH ;T0中斷服務(wù)程序中斷服務(wù)程序 MOV TL0,#18H ;送;送2ms時(shí)間常數(shù)時(shí)間常數(shù) MOV TH0,#0FCH MOV P1,A RL A ;A累加器內(nèi)容左移一次送累加器內(nèi)容左移一次送P1口

19、口 RETIMAIN: MOV SP,#53H ;主程序;主程序 MOV TMOD,#01H ;T0初始化初始化 MOV TL0,#18H MOV TH0,#0FCH MOV A,#01H ;累加器;累加器A置置01H STEB TR0 ;啟動(dòng);啟動(dòng)T0計(jì)數(shù)計(jì)數(shù) SETB ET0 ;允許;允許T0中斷中斷 SETB EA ;CPU開中斷開中斷 SJMP $ ;等待;等待例例3:設(shè)設(shè)T0工作于模式工作于模式2,產(chǎn)生,產(chǎn)生500S定時(shí)中斷,中斷服定時(shí)中斷,中斷服務(wù)程序:把累加器務(wù)程序:把累加器A的內(nèi)容減的內(nèi)容減1,然后送,然后送P1口顯示。設(shè)口顯示。設(shè)晶振頻率為晶振頻率為6MHz。 ORG 000

20、0H AJMP MN ORG 000BH DEC A MOV P1,A RETI MN: MOV SP,#53H MOV TMOD,#02H MOV TL0,#06H ; 500時(shí)間常數(shù)時(shí)間常數(shù) MOV TH0,#06H SETB TR0 ;啟動(dòng);啟動(dòng)T0計(jì)數(shù)計(jì)數(shù) SETB ET0 ;允許;允許T0中斷中斷 SETB EA ;CPU開中斷開中斷 SJMP $ ;等待;等待 END 例例4 4:利用:利用GATE=1GATE=1,TRxTRx =1 =1,只有,只有/ /INTxINTx引腳輸入高電平時(shí)引腳輸入高電平時(shí),TxTx才被允許計(jì)數(shù),利用此,我們將外部輸入正方波經(jīng)才被允許計(jì)數(shù),利用此,我

21、們將外部輸入正方波經(jīng)/ /INTxINTx引腳上輸入引腳上輸入, ,測(cè)試出正方波的寬度。測(cè)試出正方波的寬度。 ORG 2000H ORG 2000H ;T0T0初始化初始化 MOV TMOD,#09H MOV TMOD,#09H ;模式;模式1 1、定時(shí)、定時(shí)、GATEGATE置置1 1 MOV TL0,#00H MOV TL0,#00H MOV TH0,#00H MOV TH0,#00H JB P3.2,$ JB P3.2,$ ;等待;等待/INT0/INT0低電平低電平, , SETB TR0 SETB TR0 JNB P3.2,$ JNB P3.2,$ ;等待;等待/INT0/INT0上

22、升沿上升沿 JB P3.2,$ JB P3.2,$ ;等待;等待/INT/INT下降沿下降沿 CLR TR CLR TR ;關(guān);關(guān)T0T0 MOV A,TL0 MOV A,TL0 MOV B,TH0 MOV B,TH0 ;計(jì)算脈寬或顯示;計(jì)算脈寬或顯示 4.2.1 4.2.1 通用異步收發(fā)器通用異步收發(fā)器UARTUART 4.2.2 4.2.2 串行通信接口串行通信接口 4.2.3 4.2.3 多處理機(jī)通信多處理機(jī)通信 4.2.4 4.2.4 串行通信應(yīng)用舉例串行通信應(yīng)用舉例4.2 4.2 串行通訊及其接口串行通訊及其接口4.2 4.2 串行通訊及其接口串行通訊及其接口 串行通信的基本概念串行

23、通信的基本概念 0 1 0 0 1 0 0 1D0D1D2D3D4D5D6D7狀態(tài)控制(選通)計(jì)算機(jī)計(jì)算機(jī)(或外設(shè)) 0 1 0 0 1 0 0 1(a)8T計(jì)算機(jī)計(jì)算機(jī)計(jì)算機(jī)(或外設(shè))(b).通信的兩種基本方式通信的兩種基本方式 (a) (a) 并行通信;并行通信;(b) (b) 串行通信串行通信4.2.14.2.1串行通訊的工作方式串行通訊的工作方式1 1異步傳送的格式異步傳送的格式 起始位起始位:表示字傳送的開始:表示字傳送的開始 字符位字符位:規(guī)定低位與起始位相連,先傳低位:規(guī)定低位與起始位相連,先傳低位 停止位停止位:表示字傳送結(jié)束,停止位后可加高電平的:表示字傳送結(jié)束,停止位后可加

24、高電平的空閑位空閑位。 一幀一幀:從起始位到截止位。:從起始位到截止位。 起始位、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位起始位、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位2 2數(shù)據(jù)傳送的速率數(shù)據(jù)傳送的速率波特率波特率 波特率波特率: : 每秒鐘傳送多少位。每秒鐘傳送多少位。例如:計(jì)算某計(jì)算機(jī)的串行傳送,每秒傳送例如:計(jì)算某計(jì)算機(jī)的串行傳送,每秒傳送120120個(gè)字個(gè)字的數(shù)據(jù),一個(gè)字的編碼為的數(shù)據(jù),一個(gè)字的編碼為1010位,則有數(shù)據(jù)的傳送速位,則有數(shù)據(jù)的傳送速率為?率為? 120 120101012001200(位秒)(位秒) 有效的數(shù)據(jù)位只有有效的數(shù)據(jù)位只有7 7位,表明有效數(shù)位傳送速率為位,表明有效數(shù)位傳送速率為 7

25、7120120840840(位秒)(位秒)結(jié)論:有效數(shù)據(jù)傳送速率結(jié)論:有效數(shù)據(jù)傳送速率不等于不等于波特率。波特率。圖圖3.2.1 3.2.1 串行通信數(shù)據(jù)傳送的三種方式串行通信數(shù)據(jù)傳送的三種方式(a) (a) 單工方式;單工方式;(b) (b) 半雙工方式;半雙工方式;(c) (c) 全雙工方式全雙工方式ASSB(a)(b)(c)ABAB3.3. 串行數(shù)據(jù)傳送的方向串行數(shù)據(jù)傳送的方向4通用異步接收通用異步接收/發(fā)送發(fā)送UARTUART(Universal Asynchronous Receiver/Transmitter)特點(diǎn)特點(diǎn): 1 由硬件完成并行轉(zhuǎn)串行輸出,又能將串行轉(zhuǎn)并行接由硬件完成并

26、行轉(zhuǎn)串行輸出,又能將串行轉(zhuǎn)并行接 收。在收。在 收收/發(fā)中能識(shí)別奇偶錯(cuò)誤,幀錯(cuò)誤和溢出(丟失)錯(cuò)誤等發(fā)中能識(shí)別奇偶錯(cuò)誤,幀錯(cuò)誤和溢出(丟失)錯(cuò)誤等 2 采用外部時(shí)鐘同步的方式,時(shí)鐘周期是數(shù)據(jù)周期的采用外部時(shí)鐘同步的方式,時(shí)鐘周期是數(shù)據(jù)周期的1/16 3 MCS-51的串行通訊接口是具有的串行通訊接口是具有UART功能的可編程的功能的可編程的全雙工全雙工傳送的通訊接口,內(nèi)部有互相獨(dú)立的接收和發(fā)送緩沖器傳送的通訊接口,內(nèi)部有互相獨(dú)立的接收和發(fā)送緩沖器SBUF,但共用一個(gè)字地址但共用一個(gè)字地址99H。MCS-51MCS-51串行口結(jié)構(gòu)示意圖串行口結(jié)構(gòu)示意圖4.2.2 4.2.2 MCS-51-51的

27、串行通訊接口的串行通訊接口1 1) 串行控制寄存器串行控制寄存器SCON(字地址為(字地址為98H98H) SM0SM1SM2RENTB8RB8TIRI9F9E9D9C9B9A9998串行口操作方式選擇位串行口操作方式選擇位SM0和和SM1SM0 SM1 方式方式功功 能能波波 特特 率率0 00 00 10 11 1 0 01 l1 l0 01 12 23 3同步移位寄存器同步移位寄存器8 8位數(shù)據(jù)位位數(shù)據(jù)位UARTUART9 9位數(shù)據(jù)位位數(shù)據(jù)位UARTUART9 9位數(shù)據(jù)位位數(shù)據(jù)位UARTUARTfosc/l2fosc/l2可可 變變foscfosc6464或或fosc/32fosc/32

28、可可 變變SM2 多處理機(jī)通信使能位多處理機(jī)通信使能位REN 允許接收控制位允許接收控制位 TB8 發(fā)送數(shù)據(jù)第發(fā)送數(shù)據(jù)第8位位 RB8 接收數(shù)據(jù)第接收數(shù)據(jù)第8位位 TI 發(fā)送中斷標(biāo)志發(fā)送中斷標(biāo)志RI 接收中斷標(biāo)志接收中斷標(biāo)志 SM0SM1SM2RENTB8RB8TIRI9F9E9D9C9B9A9998 串行控制寄存器串行控制寄存器SCONSCON(字地址為(字地址為98H98H) 2)2)特殊功能寄存器特殊功能寄存器PCONPCON(字地址為字地址為87H87H)PCONPCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱SMODSMODGF1GF1GF0GF0

29、PDPDIDLIDLSMOD=1=1,串行口波特率加倍。串行口波特率加倍。PCONPCON寄存器沒(méi)有位尋址寄存器沒(méi)有位尋址。 SMODSMOD:在串行口工作方式:在串行口工作方式 1 1、2 2、3 3 中,是波特中,是波特 率加倍位率加倍位 =1 =1 時(shí),波特率加倍時(shí),波特率加倍 =0 =0 時(shí),波特率不加倍。時(shí),波特率不加倍。 ( (在在PCONPCON中只有這一個(gè)位與串口有關(guān)中只有這一個(gè)位與串口有關(guān)) ) 發(fā)送時(shí)發(fā)送時(shí),只需將發(fā)送數(shù)據(jù)輸入,只需將發(fā)送數(shù)據(jù)輸入SBUFSBUF,CPUCPU將自動(dòng)啟動(dòng)將自動(dòng)啟動(dòng)和完成串行數(shù)據(jù)的發(fā)送;和完成串行數(shù)據(jù)的發(fā)送; 接收時(shí)接收時(shí),CPUCPU將自動(dòng)把

30、接收到的數(shù)據(jù)存入將自動(dòng)把接收到的數(shù)據(jù)存入SBUFSBUF,用戶,用戶只需從只需從SBUFSBUF中讀出接收數(shù)據(jù)中讀出接收數(shù)據(jù)。3)3) 串行數(shù)據(jù)緩沖器串行數(shù)據(jù)緩沖器SBUFSBUF 在在邏輯上邏輯上只有一個(gè)只有一個(gè),既表示發(fā)送寄存器,又表示接收寄,既表示發(fā)送寄存器,又表示接收寄存器,具有同一個(gè)單元地址存器,具有同一個(gè)單元地址99H99H,用,用同一寄存器名同一寄存器名SBUFSBUF。 在在物理上物理上有兩個(gè)有兩個(gè),一個(gè)是發(fā)送緩沖寄存器,另一個(gè)是接,一個(gè)是發(fā)送緩沖寄存器,另一個(gè)是接收緩沖寄存器。收緩沖寄存器。指令指令 MOV SBUFMOV SBUF,A A 啟動(dòng)一次數(shù)據(jù)發(fā)送啟動(dòng)一次數(shù)據(jù)發(fā)送,

31、 ,可向可向SBUFSBUF 再發(fā)送下一個(gè)數(shù)再發(fā)送下一個(gè)數(shù)指令指令 MOV AMOV A,SBUFSBUF 完成一次數(shù)據(jù)接收完成一次數(shù)據(jù)接收,SBUF,SBUF可再可再 接收下一個(gè)數(shù)接收下一個(gè)數(shù)2 MCS-512 MCS-51串行接口的四種工作方式串行接口的四種工作方式1 1)方式)方式0 0 移位寄存器方式,移位寄存器方式,RXDRXD為數(shù)據(jù)的輸入、輸出端,為數(shù)據(jù)的輸入、輸出端,TXDTXD為同步信號(hào)為同步信號(hào)輸出端。傳送輸出端。傳送波特率為波特率為fOSC/12fOSC/12,發(fā)送和接收均為,發(fā)送和接收均為8 8位數(shù)據(jù),位數(shù)據(jù), 低位在前,高位在后。低位在前,高位在后。 由于波特率是固定的

32、,所以不需要定時(shí)由于波特率是固定的,所以不需要定時(shí)/ /計(jì)數(shù)器產(chǎn)生波特率,計(jì)數(shù)器產(chǎn)生波特率,當(dāng)以中斷方式傳送數(shù)據(jù)時(shí),中斷標(biāo)志當(dāng)以中斷方式傳送數(shù)據(jù)時(shí),中斷標(biāo)志TITI和和RIRI必須由軟件清除必須由軟件清除。 方式0發(fā)送和接收時(shí)序方式方式0 0接收時(shí),接收時(shí),RENREN為串行口接收允許接收控制位,為串行口接收允許接收控制位,REN=0REN=0, 禁止接收。禁止接收。方式方式0 0下,下,SCONSCON中的中的TB8TB8、RB8RB8位沒(méi)有用到位沒(méi)有用到,發(fā)送或接收完,發(fā)送或接收完8 8位數(shù)位數(shù)據(jù)由硬件將據(jù)由硬件將TITI或中斷標(biāo)志位或中斷標(biāo)志位RIRI置置“1”1”,CPUCPU響應(yīng)中斷

33、。響應(yīng)中斷。 TI TI或或RIRI標(biāo)志位須由用戶軟件清標(biāo)志位須由用戶軟件清“0”0”,可采用如下指令:,可采用如下指令:CLR CLR TITI;TITI位清位清“0”0”CLR CLR RI RI ;RIRI位清位清“0”0”方式方式0 0時(shí),時(shí),SM2SM2位位( (多機(jī)通信控制位多機(jī)通信控制位) )必須為必須為0 0。注意:注意: 2)方式)方式1 1方式方式1 1用于數(shù)據(jù)的串行發(fā)送和接收。用于數(shù)據(jù)的串行發(fā)送和接收。TXDTXD腳和腳和RXDRXD腳分別用于發(fā)腳分別用于發(fā)送和接收數(shù)據(jù)。送和接收數(shù)據(jù)。方式方式1 1收、發(fā)一幀的數(shù)據(jù)為收、發(fā)一幀的數(shù)據(jù)為1010位,位,1 1位起始位位起始位

34、(0)(0),8 8位數(shù)據(jù)位位數(shù)據(jù)位,1 1位停止位位停止位(1)(1),先發(fā)送或接收最低位。,先發(fā)送或接收最低位。 波特率波特率由下式確定:由下式確定:方式方式1 1波特率波特率=(2=(2SMODSMOD/32)/32)定時(shí)器定時(shí)器T1T1的溢出率的溢出率SMOD為為PCON寄存器寄存器的最高位的值的最高位的值(0(0或或1)1)。下一幀接收的有效條件是,同時(shí)滿足下面兩個(gè)條件:下一幀接收的有效條件是,同時(shí)滿足下面兩個(gè)條件: RIRI0 0,即上次傳送接收的中斷標(biāo)志已清除;,即上次傳送接收的中斷標(biāo)志已清除; SM20 0或接收到停止位為或接收到停止位為1 1。方式方式1 1時(shí)序圖時(shí)序圖3 3

35、)方式)方式2 2方式方式2 2為為9 9位數(shù)據(jù)異步通信方式位數(shù)據(jù)異步通信方式。 每幀數(shù)據(jù)均為每幀數(shù)據(jù)均為1111位,位,1 1位起始位位起始位0 0,8 8位數(shù)據(jù)位位數(shù)據(jù)位( (先低先低位位) ),1 1位可程控的第位可程控的第9 9位數(shù)據(jù)和位數(shù)據(jù)和1 1位停止位。位停止位。方式方式2 2波特率波特率=(2=(2SMODSMOD/64)/64)f foscosc方式方式2 2發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置TB8(TB8(例如,雙例如,雙機(jī)通信時(shí)的奇偶校驗(yàn)位或多機(jī)通信時(shí)的地址機(jī)通信時(shí)的奇偶校驗(yàn)位或多機(jī)通信時(shí)的地址/ /數(shù)據(jù)的標(biāo)數(shù)據(jù)的標(biāo)志位志位) )。方式方式2

36、 2發(fā)送時(shí)序發(fā)送時(shí)序方式方式2 2接收接收 SM0SM0、SM1=10SM1=10,且,且REN=1REN=1。數(shù)據(jù)由。數(shù)據(jù)由RXDRXD端端輸入,接收輸入,接收1111位信息。位信息。當(dāng)位檢測(cè)邏輯采樣到當(dāng)位檢測(cè)邏輯采樣到RXDRXD引腳從引腳從1 1到到0 0的負(fù)跳變,并的負(fù)跳變,并判斷起始位有效后,便開始接收一幀信息。判斷起始位有效后,便開始接收一幀信息。在接收完第在接收完第9 9位數(shù)據(jù)后,需滿足以下兩個(gè)條件,才能位數(shù)據(jù)后,需滿足以下兩個(gè)條件,才能將接收到的數(shù)據(jù)送入將接收到的數(shù)據(jù)送入SBUFSBUF。 (1) (1) RI=0RI=0,意味著接收緩沖器為空。,意味著接收緩沖器為空。(2)

37、(2) SM2=0SM2=0或接收到的第或接收到的第9 9位數(shù)據(jù)位位數(shù)據(jù)位RB8=1RB8=1。方式方式2 2接收時(shí)序接收時(shí)序 4 4)方式)方式3 3當(dāng)當(dāng)SM0SM0、SM1=11SM1=11時(shí),串行口工作在方式時(shí),串行口工作在方式3 3。方式。方式3 3波特率可變波特率可變的的9 9位數(shù)據(jù)異步通信方式。位數(shù)據(jù)異步通信方式。方式方式3 3的波特率由下式確定:的波特率由下式確定:方式方式3 3波特率波特率 =)1(25612322THfOSCSMOD方式3時(shí)序圖 MCS-51-51串行接口的工作過(guò)程串行接口的工作過(guò)程 1)1) 發(fā)送過(guò)程發(fā)送過(guò)程, ,CPU執(zhí)行執(zhí)行MOV SBUF,A指令將數(shù)據(jù)

38、寫入指令將數(shù)據(jù)寫入SBUF自動(dòng)啟動(dòng)移位寄存器按起始位、數(shù)據(jù)低位、高位、奇自動(dòng)啟動(dòng)移位寄存器按起始位、數(shù)據(jù)低位、高位、奇偶校驗(yàn)、停止位順序發(fā)送,一幀完后,硬件自動(dòng)使偶校驗(yàn)、停止位順序發(fā)送,一幀完后,硬件自動(dòng)使TI=1申請(qǐng)申請(qǐng)中斷,中斷后由軟件清除中斷,中斷后由軟件清除 2) 接收過(guò)程接收過(guò)程,執(zhí)行,執(zhí)行CLR RI指令,串行口以所選定波特率的指令,串行口以所選定波特率的16倍速率采樣倍速率采樣RXD端狀態(tài),當(dāng)采到端狀態(tài),當(dāng)采到RXD的下降沿時(shí)啟動(dòng)接的下降沿時(shí)啟動(dòng)接收器接收一幀代碼,并把該代碼拼成并行碼送入接收緩沖寄收器接收一幀代碼,并把該代碼拼成并行碼送入接收緩沖寄存器中。接收完后置存器中。接收

39、完后置RI=1向向CPU申請(qǐng)中斷。中斷后由軟件申請(qǐng)中斷。中斷后由軟件清除清除 四種工作方式的區(qū)別主要表現(xiàn)在幀格式及波特率兩個(gè)方面。四種工作方式的區(qū)別主要表現(xiàn)在幀格式及波特率兩個(gè)方面。工作方式工作方式幀幀 格格 式式波波 特特 率率方式方式0 08 8位全是數(shù)據(jù)位位全是數(shù)據(jù)位, ,沒(méi)有起始位、停止位沒(méi)有起始位、停止位固定固定, ,即每個(gè)機(jī)器周期傳送一即每個(gè)機(jī)器周期傳送一位數(shù)據(jù)位數(shù)據(jù)方式方式1 11010位位, ,其中其中1 1位起始位位起始位,8,8位數(shù)據(jù)位位數(shù)據(jù)位,1,1位位停止位停止位不固定不固定, ,取決于取決于T1T1溢出率和溢出率和SMODSMOD方式方式2 21111位位, ,其中其

40、中1 1位起始位位起始位,9,9位數(shù)據(jù)位位數(shù)據(jù)位,1,1位位停止位停止位固定固定, ,即即2 2SMODSMODfosc /64fosc /64方式方式3 3同方式同方式2 2同方式同方式1 1方式方式2 2、3 3其中數(shù)據(jù)字的其中數(shù)據(jù)字的第第9 9位位。多處理機(jī)通信中,該位為。多處理機(jī)通信中,該位為1 1時(shí)表示該幀為地址信息,主要用于選擇與相同地址的從機(jī)時(shí)表示該幀為地址信息,主要用于選擇與相同地址的從機(jī)進(jìn)行通訊。非多處理機(jī)通信中,該位是奇偶位。進(jìn)行通訊。非多處理機(jī)通信中,該位是奇偶位。(2). 2). 在波特率的選擇上:在波特率的選擇上: 方式方式0 0的波特率的波特率 =fosc/12 固

41、定固定 方式方式2 2的波特率的波特率 = = 064/132/SMODfSMODfOSCOSC; 方式方式1 1、3 3的波特率的波特率 = )1(25612322THfOSCSMOD波特率波特率 = 2= 2SMODSMOD(T1T1溢出率)溢出率)/ 32/ 32 在實(shí)際應(yīng)用時(shí),通常是先確定波特率,后根據(jù)波在實(shí)際應(yīng)用時(shí),通常是先確定波特率,后根據(jù)波特率求特率求T1T1定定時(shí)初值,因此上式又可寫為:時(shí)初值,因此上式又可寫為: 溢出率:溢出率:T1T1溢出的頻繁程度溢出的頻繁程度 T1T1溢出一次所需時(shí)間的倒數(shù)溢出一次所需時(shí)間的倒數(shù)。 解決的方法只有調(diào)整單片機(jī)的時(shí)鐘頻率解決的方法只有調(diào)整單片

42、機(jī)的時(shí)鐘頻率foscfosc,通常采用,通常采用11.0592MHz11.0592MHz晶振晶振。3 3、常用波特率及其產(chǎn)生條件常用波特率及其產(chǎn)生條件 常用波特率通常按規(guī)范取常用波特率通常按規(guī)范取12001200、24002400、48004800、96009600、,若采用晶振,若采用晶振12MHz12MHz和和6MHz6MHz,則計(jì)算得,則計(jì)算得出的出的T1T1定時(shí)初值將不是一個(gè)整數(shù),產(chǎn)生波特率誤定時(shí)初值將不是一個(gè)整數(shù),產(chǎn)生波特率誤差而影響串行通信的同步性能。差而影響串行通信的同步性能。串行口程序設(shè)計(jì)舉例串行口程序設(shè)計(jì)舉例1. 1. 串行口初始化串行口初始化1)串行口的波特率選擇:常選fo

43、sc11.0592MHz,其優(yōu)點(diǎn)是能容易獲得標(biāo)準(zhǔn)波特率,常用定時(shí)/計(jì)數(shù)器T1在工作模式2作為串行口波特率發(fā)生器,常用的標(biāo)準(zhǔn)波特率和TH1初值的關(guān)系有: fosc11.0592MHz 19200bps SMOD1 TH1初值為FDH 9600bps SMOD0 TH1初值為FDH 4800bps SMOD0 TH1初值為FAH 2400bps SMOD0 TH1初值為F4H 1200bps SMOD0 TH1初值為E8H2)用定時(shí))用定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T1產(chǎn)生產(chǎn)生波特率波特率的初始化:的初始化: 初始化對(duì)初始化對(duì)TMOD寄存器送控制字,定時(shí)器寄存器送控制字,定時(shí)器1的工作模式的工作模式2,采用,

44、采用8位自動(dòng)裝位自動(dòng)裝入初值。入初值。 根據(jù)波特率選擇計(jì)算或查表將時(shí)間常數(shù)送入根據(jù)波特率選擇計(jì)算或查表將時(shí)間常數(shù)送入TH1,TL1;令;令TR1=1啟動(dòng)定時(shí)啟動(dòng)定時(shí)器器/計(jì)數(shù)器計(jì)數(shù)器1工作;工作;3)串行口初始化串行口初始化(1)SCON串行控制寄存器(工作狀態(tài)控制字)的初始化串行控制寄存器(工作狀態(tài)控制字)的初始化, (2)對(duì))對(duì)PCON寄存器送控制字,實(shí)際上僅對(duì)寄存器送控制字,實(shí)際上僅對(duì)D7位位SMOD控制位控制位 1或或0。(3)串行口用中斷方式接收)串行口用中斷方式接收/發(fā)送數(shù)據(jù)時(shí),串行口和發(fā)送數(shù)據(jù)時(shí),串行口和CPU開中斷。對(duì)開中斷。對(duì)IE寄存寄存器送中斷控制字或置位相應(yīng)的控制位。器送

45、中斷控制字或置位相應(yīng)的控制位。(4)啟動(dòng)串行口,)啟動(dòng)串行口,當(dāng)為發(fā)送時(shí)用當(dāng)為發(fā)送時(shí)用MOV SBUF,A指令;指令; 接收時(shí)用接收時(shí)用 CLR RI指令。指令。2. 2. 串行口程序計(jì)舉例串行口程序計(jì)舉例 移位寄存器2. 2. 串行口程序計(jì)舉例串行口程序計(jì)舉例 設(shè)有甲、乙兩臺(tái)單片機(jī),用子程序調(diào)用的方法進(jìn)行設(shè)有甲、乙兩臺(tái)單片機(jī),用子程序調(diào)用的方法進(jìn)行串串行單工行單工通訊功能:通訊功能: 甲機(jī)發(fā)送:甲機(jī)發(fā)送: 從內(nèi)部從內(nèi)部RAMRAM單元單元20H25H20H25H中取出中取出6 6個(gè)個(gè)ASCIIASCII碼數(shù)據(jù)碼數(shù)據(jù),在最高位加上奇偶校驗(yàn)位后串行口發(fā)送。波特率為,在最高位加上奇偶校驗(yàn)位后串行口

46、發(fā)送。波特率為12001200(foscfosc=11.0592MHz=11.0592MHz) 乙機(jī)接收:乙機(jī)接收: 接收機(jī)把接收到的接收機(jī)把接收到的6 6個(gè)個(gè)ASCIIASCII碼數(shù)據(jù),先檢查奇碼數(shù)據(jù),先檢查奇偶校驗(yàn)。若傳送正確,將數(shù)據(jù)依次存放在內(nèi)部偶校驗(yàn)。若傳送正確,將數(shù)據(jù)依次存放在內(nèi)部RAMRAM區(qū)區(qū)20H25H20H25H單元中。若奇偶出錯(cuò),則將出錯(cuò)信息單元中。若奇偶出錯(cuò),則將出錯(cuò)信息“FFH”FFH”存入存入相應(yīng)的單元。相應(yīng)的單元。甲機(jī)發(fā)送甲機(jī)發(fā)送:主程序主程序 ORG 2000H MOV TMOD,#20H MOV TH1,#0E8H MOV TL1,#0E8H MOV SCON,

47、#40H SETB TR1 MOV R0,#20H MOV R7,#06HLOOP: MOV A,R0 LCALL OUT1 INC R0 DJNZ R7,LOOP OUT1: MOV C,P CPL C MOV ACC.7,C MOV SBUF,A JNB TI,$ CLR TI RET乙機(jī)接收:主程序乙機(jī)接收:主程序 ORG 2000H MOV TMOD,#20H MOV TH1,#0E8H MOV TL1,#0E8H SETB TR1 MOV R0,#20H MOV R7,#06HLOOP: LCALL IN1 JCERROR MOV R0,ALOOP1: INC R0 DJNZ R7,

48、LOOPIN1: MOV SCON,#50H JNB RI,$ CLR RI MOV A,SBUF MOV C,PCPLC ANL A,#7FHRET ERROR: MOV R0,#0FFH SJMP LOOP14.3 4.3 中中 斷斷 在單片機(jī)中,當(dāng)在單片機(jī)中,當(dāng)CPU在執(zhí)行程序在執(zhí)行程序時(shí),由單片機(jī)內(nèi)部或外部的原因引起時(shí),由單片機(jī)內(nèi)部或外部的原因引起的隨機(jī)事件要求的隨機(jī)事件要求CPU暫時(shí)停止正在執(zhí)暫時(shí)停止正在執(zhí)行的程序,而轉(zhuǎn)向執(zhí)行一個(gè)用于處理行的程序,而轉(zhuǎn)向執(zhí)行一個(gè)用于處理該隨機(jī)事件的程序,處理完后又返回該隨機(jī)事件的程序,處理完后又返回被中止的程序斷點(diǎn)處繼續(xù)執(zhí)行,這一被中止的程序斷點(diǎn)處繼

49、續(xù)執(zhí)行,這一過(guò)程就稱為過(guò)程就稱為中斷中斷。 主程序 中斷服務(wù)程序 返回 主程序 主程序 斷點(diǎn) RETI 響應(yīng)中斷 請(qǐng)求 1 1、中斷概念、中斷概念 CPUCPU在處理某一事件在處理某一事件A A時(shí),發(fā)生了另一事件時(shí),發(fā)生了另一事件B B請(qǐng)求請(qǐng)求CPUCPU迅速去處迅速去處理(理(中斷發(fā)生或中斷請(qǐng)求中斷發(fā)生或中斷請(qǐng)求);); CPUCPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B B(中斷響應(yīng)和中斷中斷響應(yīng)和中斷服務(wù)服務(wù));); 待待CPUCPU將事件將事件B B處理完畢后,再回到原來(lái)事件處理完畢后,再回到原來(lái)事件A A被中斷的地方被中斷的地方繼續(xù)處理事件繼續(xù)處理事件A

50、A(中斷返回中斷返回)。)。中斷請(qǐng)求中斷請(qǐng)求中斷響應(yīng)中斷響應(yīng)中斷服務(wù)中斷服務(wù)中斷返回中斷返回中中 斷斷事件事件B的的處理過(guò)程處理過(guò)程事件事件A事件事件B 1 1) 中斷是隨機(jī)產(chǎn)生的。目的是處理外設(shè)中斷源中斷是隨機(jī)產(chǎn)生的。目的是處理外設(shè)中斷源的各種事務(wù),而子程序是編寫程序中事先安排的,的各種事務(wù),而子程序是編寫程序中事先安排的,是為主程序服務(wù)的。是為主程序服務(wù)的。 2 2) 中斷時(shí)必須保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)。中斷時(shí)必須保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)。 3 3)返回命令也不同。)返回命令也不同。2 中斷的功能中斷系統(tǒng)中斷系統(tǒng)是指能實(shí)現(xiàn)中斷功能的硬件和軟件。是指能實(shí)現(xiàn)中斷功能的硬件和軟件。中斷系統(tǒng)的中斷系統(tǒng)的功能功能一般包

51、括一般包括l進(jìn)行中斷優(yōu)先級(jí)排隊(duì)進(jìn)行中斷優(yōu)先級(jí)排隊(duì)l實(shí)現(xiàn)中斷嵌套實(shí)現(xiàn)中斷嵌套l自動(dòng)響應(yīng)中斷自動(dòng)響應(yīng)中斷l(xiāng)實(shí)現(xiàn)中斷返回實(shí)現(xiàn)中斷返回中斷的中斷的優(yōu)點(diǎn)優(yōu)點(diǎn):l可以提高可以提高CPUCPU的工作效率的工作效率l實(shí)現(xiàn)實(shí)時(shí)處理實(shí)現(xiàn)實(shí)時(shí)處理l處理故障處理故障(1) (1) 進(jìn)行中斷優(yōu)先級(jí)排隊(duì)進(jìn)行中斷優(yōu)先級(jí)排隊(duì) 通常,單片機(jī)中有多個(gè)中斷源,設(shè)計(jì)人員能按輕重緩急通常,單片機(jī)中有多個(gè)中斷源,設(shè)計(jì)人員能按輕重緩急給每個(gè)中斷源的中斷請(qǐng)求賦予一定的中斷優(yōu)先級(jí)。給每個(gè)中斷源的中斷請(qǐng)求賦予一定的中斷優(yōu)先級(jí)。 當(dāng)兩個(gè)或兩個(gè)以上的中斷源同時(shí)請(qǐng)求中斷時(shí),當(dāng)兩個(gè)或兩個(gè)以上的中斷源同時(shí)請(qǐng)求中斷時(shí),CPU可通可通過(guò)過(guò)中斷優(yōu)先級(jí)排隊(duì)電路中

52、斷優(yōu)先級(jí)排隊(duì)電路首先響應(yīng)中斷優(yōu)先級(jí)高的中斷請(qǐng)求首先響應(yīng)中斷優(yōu)先級(jí)高的中斷請(qǐng)求,等到處理完優(yōu)先級(jí)高的中斷請(qǐng)求后,再來(lái)響應(yīng)優(yōu)先級(jí)低,等到處理完優(yōu)先級(jí)高的中斷請(qǐng)求后,再來(lái)響應(yīng)優(yōu)先級(jí)低的中斷請(qǐng)求。的中斷請(qǐng)求。 中斷優(yōu)先級(jí)的處理原則是:不同級(jí)的中斷源同時(shí)申請(qǐng)中中斷優(yōu)先級(jí)的處理原則是:不同級(jí)的中斷源同時(shí)申請(qǐng)中斷時(shí):斷時(shí):先高后低,先高后低,正處理低級(jí)中斷又收到高級(jí)中斷請(qǐng)求時(shí)正處理低級(jí)中斷又收到高級(jí)中斷請(qǐng)求時(shí):停低轉(zhuǎn)高停低轉(zhuǎn)高,處理高級(jí)中斷卻收到低級(jí)中斷請(qǐng)求時(shí):,處理高級(jí)中斷卻收到低級(jí)中斷請(qǐng)求時(shí):高不高不睬低,睬低,同一級(jí)的中斷源同時(shí)申請(qǐng)中斷時(shí):同一級(jí)的中斷源同時(shí)申請(qǐng)中斷時(shí):事先規(guī)定事先規(guī)定(2) 2) 實(shí)

53、現(xiàn)中斷嵌套實(shí)現(xiàn)中斷嵌套(3) 自動(dòng)響應(yīng)中斷自動(dòng)響應(yīng)中斷 中斷源向中斷源向CPU發(fā)出的中斷請(qǐng)求是隨機(jī)的。通常,發(fā)出的中斷請(qǐng)求是隨機(jī)的。通常,CPU總總是在每條指令的最后狀態(tài)對(duì)中斷請(qǐng)求信號(hào)進(jìn)行是在每條指令的最后狀態(tài)對(duì)中斷請(qǐng)求信號(hào)進(jìn)行檢測(cè)檢測(cè); 當(dāng)某一中斷源發(fā)出中斷請(qǐng)求時(shí),當(dāng)某一中斷源發(fā)出中斷請(qǐng)求時(shí),CPU能根據(jù)相關(guān)條件能根據(jù)相關(guān)條件(如如中斷優(yōu)先級(jí)、是否允許中斷中斷優(yōu)先級(jí)、是否允許中斷)進(jìn)行進(jìn)行判斷判斷,決定是否,決定是否響應(yīng)響應(yīng)這個(gè)這個(gè)中斷請(qǐng)求。中斷請(qǐng)求。 若允許響應(yīng)這個(gè)中斷請(qǐng)求,若允許響應(yīng)這個(gè)中斷請(qǐng)求,CPU在執(zhí)行完相關(guān)指令后,在執(zhí)行完相關(guān)指令后,會(huì)自動(dòng)完成會(huì)自動(dòng)完成斷點(diǎn)地址壓入堆棧、中斷矢量

54、地址送入程序計(jì)數(shù)斷點(diǎn)地址壓入堆棧、中斷矢量地址送入程序計(jì)數(shù)器器PC、撤除本次中斷請(qǐng)求標(biāo)志,、撤除本次中斷請(qǐng)求標(biāo)志,轉(zhuǎn)入轉(zhuǎn)入執(zhí)行相應(yīng)中斷服務(wù)程執(zhí)行相應(yīng)中斷服務(wù)程序。序。(4) (4) 實(shí)現(xiàn)中斷返回實(shí)現(xiàn)中斷返回 CPU響應(yīng)某一中斷源中斷請(qǐng)求,在執(zhí)行中斷服務(wù)程序響應(yīng)某一中斷源中斷請(qǐng)求,在執(zhí)行中斷服務(wù)程序最后的中斷返回指令時(shí),會(huì)自動(dòng)彈出堆棧區(qū)中保存的斷點(diǎn)最后的中斷返回指令時(shí),會(huì)自動(dòng)彈出堆棧區(qū)中保存的斷點(diǎn)地址,返回到中斷前的原程序中。地址,返回到中斷前的原程序中。 中斷系統(tǒng)主要由與中斷有關(guān)的中斷系統(tǒng)主要由與中斷有關(guān)的4個(gè)特殊功能寄存器和硬個(gè)特殊功能寄存器和硬件查詢電路等組成。件查詢電路等組成。l定時(shí)器控

55、制寄存器定時(shí)器控制寄存器TCON 用于保存中斷信息。用于保存中斷信息。l串行口控制寄存器串行口控制寄存器SCON 用于保存中斷信息。用于保存中斷信息。l中斷允許寄存器中斷允許寄存器IE 用于控制中斷的開放和關(guān)閉。用于控制中斷的開放和關(guān)閉。l中斷優(yōu)先級(jí)寄存器中斷優(yōu)先級(jí)寄存器IP用于設(shè)定優(yōu)先級(jí)別。用于設(shè)定優(yōu)先級(jí)別。l硬件查詢電路硬件查詢電路用于判定用于判定5個(gè)中斷源的自然優(yōu)先級(jí)別個(gè)中斷源的自然優(yōu)先級(jí)別。MCS-51中斷系統(tǒng)的構(gòu)成中斷系統(tǒng)的構(gòu)成 中斷源中斷源 MSC-51單片機(jī)有單片機(jī)有5個(gè)中斷源個(gè)中斷源 外部中斷外部中斷0/INT0 外部中斷外部中斷1/INT1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0中斷

56、中斷 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1中斷中斷 串行口中斷串行口中斷那些部件可以向那些部件可以向CPUCPU發(fā)出中斷申請(qǐng)發(fā)出中斷申請(qǐng)呢?呢?中斷系統(tǒng)及其管理中斷系統(tǒng)及其管理定時(shí)定時(shí)/計(jì)數(shù)控制寄存器計(jì)數(shù)控制寄存器TCON TFl : 定時(shí)器定時(shí)器1溢出標(biāo)志溢出標(biāo)志 TR1:定時(shí)器:定時(shí)器1運(yùn)行控制位運(yùn)行控制位 TF0:定時(shí)器:定時(shí)器0溢出標(biāo)志溢出標(biāo)志 TR0:定時(shí)器:定時(shí)器0運(yùn)行控制位運(yùn)行控制位 IEl :外部沿觸發(fā)中斷:外部沿觸發(fā)中斷1請(qǐng)求標(biāo)志。請(qǐng)求標(biāo)志。 ITl: 外部中斷外部中斷1類型控制位。靠軟件來(lái)設(shè)置或清除,類型控制位。靠軟件來(lái)設(shè)置或清除, ITl1時(shí),是下降沿觸發(fā),時(shí),是下降沿觸發(fā),I

57、T10時(shí),是低電平觸發(fā)。時(shí),是低電平觸發(fā)。IE0:外部沿觸發(fā)中斷:外部沿觸發(fā)中斷0請(qǐng)求標(biāo)志。請(qǐng)求標(biāo)志。IT0 :外部中斷:外部中斷0類型控制位。類型控制位。TF1TR1TF0TR0IE1IT1IE0IT08F8E8D8C8B8A8988串行控制寄存器串行控制寄存器SCONSCON(字地址98H TI(SCON.1) 發(fā)送中斷標(biāo)志。在任何模式中,都必須由軟件來(lái)清除TI。 RI(SCON.0) 接收中斷標(biāo)志。必須靠軟件清除RI。在系統(tǒng)復(fù)位時(shí),SCON中的所有位都被清除。SM0SM1SM2RENTB8RB8TIRI9F9E9D9C9B9A9998中斷允許控制寄存器中斷允許控制寄存器IE(字地址為字地

58、址為(0A8H) EX0=1:允許允許外部中斷外部中斷0申請(qǐng)中斷申請(qǐng)中斷 EX1=1:允許允許外部中斷外部中斷1申申請(qǐng)中斷請(qǐng)中斷 ET0=1:允許允許定時(shí)器定時(shí)器T0申請(qǐng)中斷申請(qǐng)中斷 ET1=1:允許允許定時(shí)器定時(shí)器T1申請(qǐng)中斷申請(qǐng)中斷 ES =1:允許允許串口串口申請(qǐng)中斷申請(qǐng)中斷 EA =1 :中斷中斷總控位總控位 打開允許中斷打開允許中斷, =0禁止任何中斷禁止任何中斷例如:允許例如:允許INT0INT0和和INT1INT1申請(qǐng)中斷申請(qǐng)中斷可用可用 MOV IE,#85H ;或MOV 0A8H,#85H (不好) SETB EA ;開中斷總控位;開中斷總控位 SETB EX0SETB EX

59、0;允許;允許INT0INT0中斷和中斷和SETB EX1SETB EX1;允許;允許INT1INT1中斷中斷D7D6D5D4D3D2D1D0EAESET1EX1ET0EX01 1:允許:允許0 0:禁止:禁止 中斷優(yōu)先級(jí)控制(硬件優(yōu)先中斷優(yōu)先級(jí)控制(硬件優(yōu)先+ +軟件優(yōu)先)軟件優(yōu)先) 硬件優(yōu)先硬件優(yōu)先單片機(jī)內(nèi)部有一個(gè)默認(rèn)的中斷優(yōu)先級(jí)順單片機(jī)內(nèi)部有一個(gè)默認(rèn)的中斷優(yōu)先級(jí)順序序外部中斷外部中斷0 0 優(yōu)先級(jí)最優(yōu)先級(jí)最高高定時(shí)器定時(shí)器T0T0外部中斷外部中斷1 1定時(shí)器定時(shí)器T1T1串口串口 優(yōu)先級(jí)最優(yōu)先級(jí)最低低優(yōu)先級(jí)控制寄存器優(yōu)先級(jí)控制寄存器IPIP(0B8H0B8H) PX0(IP.0):外部中

60、斷):外部中斷0優(yōu)先級(jí)設(shè)定位優(yōu)先級(jí)設(shè)定位 PT0(IP.1):定時(shí)):定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T0優(yōu)先級(jí)設(shè)定位優(yōu)先級(jí)設(shè)定位 PX1(IP.2):外部中斷):外部中斷1優(yōu)先級(jí)設(shè)定位優(yōu)先級(jí)設(shè)定位 PT1(IP.3):定時(shí)):定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T1優(yōu)先級(jí)設(shè)定位優(yōu)先級(jí)設(shè)定位 PS (IP.4):): 串行口優(yōu)先級(jí)設(shè)定位串行口優(yōu)先級(jí)設(shè)定位 例如:例如:PX0=0,PT0=0,PX1=1,PT1=0,PS=1 結(jié)果:中斷優(yōu)先級(jí)順序人為設(shè)置為,結(jié)果:中斷優(yōu)先級(jí)順序人為設(shè)置為, PX1, PS, PX0,PT0,PT1。D7D6D5D4D3D2D1D0-PSPT1PX1PT0PX01 1:優(yōu)先:優(yōu)先0 0:滯后:滯后 優(yōu)先級(jí)對(duì)中斷

溫馨提示

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