第五章MCS-51_定時(shí)計(jì)數(shù)器_第1頁(yè)
第五章MCS-51_定時(shí)計(jì)數(shù)器_第2頁(yè)
第五章MCS-51_定時(shí)計(jì)數(shù)器_第3頁(yè)
第五章MCS-51_定時(shí)計(jì)數(shù)器_第4頁(yè)
第五章MCS-51_定時(shí)計(jì)數(shù)器_第5頁(yè)
已閱讀5頁(yè),還剩77頁(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、第五章MCS-51定時(shí)/計(jì)數(shù)器、串行口及中斷系統(tǒng) 本章重點(diǎn)討論:本章重點(diǎn)討論: 1. 1. 定時(shí)定時(shí)/ /計(jì)數(shù)器;計(jì)數(shù)器; 2. 2. 全雙工串行口;全雙工串行口; 3. 3. 中斷系統(tǒng)。中斷系統(tǒng)。 5.1 MCS-51定時(shí)/計(jì)數(shù)器 5.1.1 定時(shí)器/計(jì)數(shù)器的基本概念 5.1.2 MCS-51定時(shí)/計(jì)數(shù)器的組成5.1.3 定時(shí)器/計(jì)數(shù)器的控制方法5.1.4 定時(shí)器、計(jì)數(shù)器的初始化5.1.5 舉例5.1.6 定時(shí)計(jì)數(shù)器總結(jié)計(jì)數(shù)概念的引入1生活中計(jì)數(shù)的例子處處可見(jiàn)。例:錄音機(jī)上的計(jì)數(shù)器、家里面用的電度表、汽車上的里程表等等。再舉一個(gè)工業(yè)生產(chǎn)中的例子,線纜行業(yè)在電線生產(chǎn)出來(lái)之后要計(jì)米,也就是測(cè)量長(zhǎng)

2、度,怎么測(cè)法呢?用尺量?不現(xiàn)實(shí),太長(zhǎng)不說(shuō),要一邊做一邊量呢,怎么辦呢?行業(yè)中有很巧妙的方法,用一個(gè)周長(zhǎng)是1米的輪子,將電纜繞在上面一周,由線帶輪轉(zhuǎn),這樣輪轉(zhuǎn)一周不就是線長(zhǎng)1米嘛,所以只要記下輪轉(zhuǎn)了多少圈,就可以知道走過(guò)的線有多長(zhǎng)了。計(jì)數(shù)概念的引入2石油工業(yè)中,也有大量計(jì)數(shù)的問(wèn)題。比如如何確定油層的深度?通常采用的方法是在裸眼井完鉆測(cè)井以后,需要下金屬套管固井,每一根套管的長(zhǎng)度是一樣的,比如10米,在每根套管的接箍處都打上磁標(biāo)記。下完套管就要用水泥固井,然后套管就被永久埋在地下。為了產(chǎn)出石油,下一步就是在測(cè)井以后確定的層位處射孔。這時(shí)在射孔槍的上面就通過(guò)電纜接了一根磁定位儀器,這個(gè)儀器可以測(cè)量到

3、套管接箍上的磁標(biāo)記,并且可以計(jì)量磁標(biāo)記的數(shù)目,因此就可以確定射孔槍的目標(biāo)油層的深度。當(dāng)然10m以內(nèi)的深度是靠地面測(cè)量電纜長(zhǎng)度確定的。計(jì)數(shù)器的容量1從一個(gè)生活中的例子看起:一個(gè)水盆在水龍頭下,水龍沒(méi)關(guān)緊,水一滴滴地滴入盆中。水滴不斷落下,盆的容量是有限的,過(guò)一段時(shí)間之后,水就會(huì)逐漸變滿。那么單片機(jī)中的計(jì)數(shù)器有多大的容量呢?8031單片機(jī)中有兩個(gè)計(jì)數(shù)器,分別稱之為T0和T1,這兩個(gè)計(jì)數(shù)器分別是由兩個(gè)8位的RAM單元組成的,即每個(gè)計(jì)數(shù)器都是16位的計(jì)數(shù)器,最大的計(jì)數(shù)量是65535。計(jì)數(shù)器的容量2一般的下井電纜長(zhǎng)度在7000m,根據(jù)井眼長(zhǎng)度的不同還有更長(zhǎng)或更短的電纜,可以依據(jù)需要選取。因此,計(jì)數(shù)器的容

4、量就是由電纜長(zhǎng)度決定的。計(jì)數(shù)與定時(shí)的關(guān)系n8031中的計(jì)數(shù)器除了可以作為計(jì)數(shù)之用外,還可以用作時(shí)鐘,時(shí)鐘的用途當(dāng)然很大,如學(xué)校的打鈴器,電視機(jī)定時(shí)關(guān)機(jī),空調(diào)定時(shí)開關(guān)等等,那么計(jì)數(shù)器是如何作為定時(shí)器來(lái)用的呢?n一個(gè)鬧鐘,將它定時(shí)在1個(gè)小時(shí)后鬧響,換言之,也可以說(shuō)是秒針走了(3600)次后鬧響,所以時(shí)間就轉(zhuǎn)化為秒針走的次數(shù),也就是計(jì)數(shù)的次數(shù)了??梢?jiàn),計(jì)數(shù)的次數(shù)和時(shí)間之間的確十分相關(guān)。那么它們的關(guān)系是什么呢?那就是秒針每一次走動(dòng)的時(shí)間正好是1秒。n因此只要計(jì)數(shù)脈沖的間隔相等,計(jì)數(shù)脈沖的周期已知,則計(jì)數(shù)值就代表了時(shí)間的流逝。溢出n讓我們?cè)賮?lái)看水滴的例子,當(dāng)水不斷落下,盆中的水不斷變滿,最終有一滴水使得

5、盆中的水滿了。這時(shí)如果再有一滴水落下,就會(huì)發(fā)生什么現(xiàn)象?水會(huì)漫出來(lái),用個(gè)術(shù)語(yǔ)來(lái)講就是“溢出”。 n水溢出是流到地上,而計(jì)數(shù)器溢出后將使得TF0變?yōu)椤?”。至于TF0是什么我們稍后再談。一旦TF0由0變成1,就是產(chǎn)生了變化,產(chǎn)生了變化就會(huì)引發(fā)事件,就象定時(shí)的時(shí)間一到,鬧鐘就會(huì)響一樣。溢出2 如果電纜的最大長(zhǎng)度為7000m ,那么磁標(biāo)記計(jì)數(shù)器計(jì)滿700以后,就要產(chǎn)生一個(gè)溢出信號(hào),這個(gè)溢出信號(hào)意味著電纜已經(jīng)放到頭了,需要地面的纜車立即停止工作,否則可能造成射孔槍落井的事故。計(jì)數(shù)器溢出后會(huì)引發(fā)什么事件,我們下面再介紹,現(xiàn)在我們來(lái)研究另一個(gè)問(wèn)題:要有多少個(gè)計(jì)數(shù)脈沖才會(huì)使TF0由0變?yōu)??任意定時(shí)及計(jì)數(shù)的

6、方法剛才已研究過(guò),MCS-51計(jì)數(shù)器的容量是16位,也就是最大的計(jì)數(shù)值到65536,因此計(jì)數(shù)計(jì)到65536就會(huì)產(chǎn)生溢出。問(wèn)題是在現(xiàn)實(shí)生活中,經(jīng)常會(huì)有少于65536個(gè)計(jì)數(shù)值的要求,如包裝線上,一打?yàn)?2瓶,一瓶藥片為100粒,怎么樣來(lái)滿足這個(gè)要求呢?n提示:如果是一個(gè)空的盆要10000滴水滴進(jìn)去才會(huì)滿,如果在開始滴水之前就先放入一勺水,還需要10000滴嗎?n我們采用預(yù)置數(shù)的方法,要計(jì)數(shù)100次,那就先放進(jìn)65436,再來(lái)100個(gè)脈沖,不就到了65536了嗎。n定時(shí)也是如此,每個(gè)脈沖是1微秒,則計(jì)滿65536個(gè)脈沖需時(shí)65.536毫秒。如果現(xiàn)在只要10毫秒定時(shí)怎么辦?n10個(gè)毫秒為10000個(gè)微

7、秒,所以,只要在計(jì)數(shù)器里面放進(jìn)65536-10000=55536就可以了。 5.1.2 MCS-51定時(shí)定時(shí)/ /計(jì)數(shù)器的組成計(jì)數(shù)器的組成T1與定時(shí)/計(jì)數(shù)器相關(guān)的特殊功能寄存器 特殊功能寄存器 : TH0 TH1 存放計(jì)數(shù)初值的高8位 TL0 TL1 存放計(jì)數(shù)初值的低8位 TMOD (定時(shí)器工作模式寄存器) TCON (定時(shí)器控制寄存器 ) % T0和T1都是16位的可預(yù)置加1計(jì)數(shù)器% T0和T1都是16位的可編程定時(shí)/計(jì)數(shù)器% T0由兩個(gè)8位的寄存器TH0和TL0組成% T1由兩個(gè)8位的寄存器TH1和TL1組成5.1.3 5.1.3 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的控制方法計(jì)數(shù)器的控制方法 定時(shí)器

8、/計(jì)數(shù)器的工作由TCON和TMOD控制。由軟件把控制字寫入TCON和TMOD,用來(lái)設(shè)置T0和T1的工作方式和控制功能。當(dāng)8051系統(tǒng)復(fù)位時(shí),TCON和TMOD所有位都被清0。一.工作模式控制寄存器TMOD(89H)定時(shí)器工作模式寄存器TMODGATEC/TM10MGATE C/T1M0M控 制 T1控 制 T089H和T 類同01M0M00011011方 式方式0方式1方式2方式301定時(shí)器模式計(jì)數(shù)器模式01與INT 無(wú)關(guān)00與INT 有關(guān)二.定時(shí)器控制寄存器TCON(88H) TCON位地址0DD1D2D3D4D5D6D7IT0IE0IT11IETR0TF0TR1TF188898A8B8C8

9、D8E8F見(jiàn)下一節(jié)00:停T 計(jì)數(shù)01:?jiǎn) 計(jì)數(shù)00:無(wú)T 中斷(硬件復(fù)位)1:有T 溢出中斷00:無(wú)T 中斷(硬件復(fù)位)10:停T 計(jì)數(shù)1:有T 溢出中斷1:?jiǎn) 計(jì)數(shù)111 定時(shí)器工作模式寄存器TCON M1和M0 工作方式選擇位這兩位可形成四種編碼,對(duì)應(yīng)四種工作方式: M1 M0 方式 功 能 描 述 0 0 0 為13位定時(shí)器/計(jì)數(shù)器,TL存放低5位,TH存高8位 0 1 1 為16位定時(shí)器/計(jì)數(shù)器 1 0 2 可自動(dòng)再裝入的8位定時(shí)器/計(jì)數(shù)器 1 1 3 僅適于T0,兩個(gè)8位定時(shí)器/計(jì)數(shù)器三.定時(shí)器/計(jì)數(shù)器的四種工作模式高8位和低5位的一個(gè)13位計(jì)數(shù)器的運(yùn)行方式,見(jiàn)下圖. 當(dāng)TL1

10、的低5 位溢出時(shí),向TH1進(jìn)位,而TH1溢出(回零)時(shí)向TF1標(biāo)志進(jìn)位(硬件置位TF1),并申請(qǐng)中斷。還可以通過(guò)查詢TF1是否置位來(lái)判斷TH1是否回零溢出。 。 中斷請(qǐng)求方式3只適合于定時(shí)器T0, TH0和TL0按兩個(gè)獨(dú)立的8位計(jì)數(shù)器工作.5.1.4 定時(shí)器、計(jì)數(shù)器的初始化1. 1. 初始化的步驟初始化的步驟 MCS-51MCS-51內(nèi)部的內(nèi)部的T/CT/C是可編程的是可編程的, ,其工作方式和模式通過(guò)程其工作方式和模式通過(guò)程序進(jìn)行設(shè)定和控制序進(jìn)行設(shè)定和控制, ,稱為對(duì)稱為對(duì)T/CT/C的初始化。初始化的步驟是:的初始化。初始化的步驟是: 1)1)確定工作方式,即根據(jù)題目要求先給確定工作方式,

11、即根據(jù)題目要求先給TMODTMOD送一個(gè)方送一個(gè)方式控制字。式控制字。 2)2)計(jì)算計(jì)數(shù)初值計(jì)算計(jì)數(shù)初值/ /定時(shí)初值,并寫入定時(shí)初值,并寫入TH0TH0、TL0TL0或或 TH1TH1、 TL1TL1中。中。 3)3)根據(jù)需要,根據(jù)需要,置位置位EAEA使使CPUCPU開放中斷開放中斷,同時(shí)置位,同時(shí)置位ETxETx允許允許T/CT/C中斷。中斷。IPIP設(shè)定中斷優(yōu)先級(jí)。設(shè)定中斷優(yōu)先級(jí)。 4)4)給給TCONTCON送命令控制字,即置位送命令控制字,即置位TRxTRx啟動(dòng)啟動(dòng)T/CT/C計(jì)數(shù)。計(jì)數(shù)。 2計(jì)數(shù)器初值的計(jì)算 81613222。 132查詢方式START設(shè)定工作方式啟動(dòng)T0定時(shí)載入

12、初值TF0=0?否是輸出方波軟件TF0=0END4) 查詢方式: 可以使CPU采用查詢TF0的方式處理T/C0定時(shí)溢出,編程簡(jiǎn)單,但效率較低。 程序中查詢采用JNB TF0,$ 指令,目的是當(dāng)判到TF11后,必須用軟件復(fù)位TF1,為下次計(jì)數(shù)器回零溢出做好準(zhǔn)備,這條指令具有判TF1為1后清零的雙重功能。例5-2 利用GATE門控位測(cè)量從INT1引腳輸入的正脈沖寬度。解:1. 確定工作方式 (1)送方式控制字 (TMOD)1001 0000B90H ; T/C1定時(shí),方式1 ,GATE1 。(2)計(jì)算初值 由于被測(cè)正脈沖寬度未知, 假設(shè)寬度= 65.536ms,fosc12MHz ,則: 計(jì)數(shù)個(gè)數(shù)

13、:X65536(最大) 定時(shí)初值:C65536-X65536-655360, (TH1)00H,(TL1)00H。 (3)編程方法 對(duì)P3.3(INT1)引腳輸入的脈沖采用查詢的方法。 ) 被測(cè)脈寬 置1 TR1 TH1TL1從0開始計(jì)數(shù) 清0 TR1,停止T/C1計(jì)數(shù)脈沖測(cè)試原理 ORG 0000H MAIN:MOV TMOD,#90H;置T1方式控制字 MOV TL1,#00H; MOV TH1,#00H;T1從0開始計(jì)數(shù) JB P3.3,$;等 低電平 SETB TR1; T1允許計(jì)數(shù) JNB P3.3, $ ;等 高電平 JB P3.3, $ ;等 低電平 CLR TR1;停止計(jì)數(shù) 程

14、序清單:1INT1INT1INT5.1.6 定時(shí)計(jì)數(shù)器總結(jié)在單片機(jī)實(shí)時(shí)應(yīng)用系統(tǒng)中,實(shí)現(xiàn)定時(shí)和對(duì)外部事件計(jì)數(shù)的功能 。 定時(shí):對(duì)周期已知的脈沖信號(hào)計(jì)數(shù) 計(jì)數(shù):對(duì)外部事件計(jì)數(shù),對(duì)周期未知的外來(lái)脈沖信號(hào)計(jì)數(shù) 采用軟件占用CPU的時(shí)間,降低了CPU的使用效率; 采用專門的硬件電路,參數(shù)調(diào)節(jié)不便; 采用可編程的定時(shí)器/計(jì)數(shù)器是較好的方法; 可以方便靈活地修改定時(shí)或計(jì)數(shù)的參數(shù)或方式; 與CPU并行工作,大大提高了CPU的工作效率 5.2 MCS-51串行口5.2.1 5.2.1 串行口概述串行口概述80518051的通訊:即單片機(jī)與外界進(jìn)行信息交換。的通訊:即單片機(jī)與外界進(jìn)行信息交換。 通訊方式:通訊方式

15、: 并行通訊:并行通訊:數(shù)據(jù)的各位同時(shí)發(fā)送或接受數(shù)據(jù)的各位同時(shí)發(fā)送或接受 串行通訊:串行通訊:數(shù)據(jù)一位一位順序發(fā)送或接受數(shù)據(jù)一位一位順序發(fā)送或接受串行口通訊方式串行口通訊方式 單工通訊:?jiǎn)喂ねㄓ崳和ㄓ嵔涌谥荒馨l(fā)送或接受的單向通訊方式通訊接口只能發(fā)送或接受的單向通訊方式 半雙工通訊:半雙工通訊:通訊接口既可發(fā)送又可接受,但不能同通訊接口既可發(fā)送又可接受,但不能同 時(shí)進(jìn)行時(shí)進(jìn)行 全雙工通訊:全雙工通訊:通訊接口能同時(shí)發(fā)送接受的通訊方式通訊接口能同時(shí)發(fā)送接受的通訊方式異步傳送方式與同步傳送 異步通訊:異步通訊:利用起始位表示字符的開始,用停止位利用起始位表示字符的開始,用停止位 表示字符結(jié)束表示字符

16、結(jié)束D0D1D2D3D4D5D6D7D010P0起始位數(shù)據(jù)位D0D7校驗(yàn)位 結(jié)束位第n個(gè)字符(幀)2. 同步通訊:在異步通訊中,每個(gè)字符要用起始位和停止位作為字符開始和結(jié)束的標(biāo)志,占用了時(shí)間;所以在數(shù)據(jù)塊傳遞時(shí),為了提高速度,常去掉這些標(biāo)志,采用同步傳送。由于數(shù)據(jù)塊傳遞開始要用同步字符來(lái)指示,同時(shí)要求由時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端與接收端之間的同步,故硬件較復(fù)雜。串行通信的數(shù)據(jù)傳送率串行通信的數(shù)據(jù)傳送率 傳送率:傳送率:數(shù)據(jù)傳送速度數(shù)據(jù)傳送速度 波特率(波特率(baud ratebaud rate):):異步通信中數(shù)據(jù)傳輸速率的單異步通信中數(shù)據(jù)傳輸速率的單位,其含義每秒傳送多少位二進(jìn)制數(shù)。位,其含義每秒傳

17、送多少位二進(jìn)制數(shù)。 例:數(shù)據(jù)傳送的速率為例:數(shù)據(jù)傳送的速率為120120個(gè)字符每秒,每個(gè)字符有個(gè)字符每秒,每個(gè)字符有1 1個(gè)個(gè)起始位、起始位、8 8個(gè)數(shù)據(jù)位和一個(gè)停止位組成,則其傳送波特率個(gè)數(shù)據(jù)位和一個(gè)停止位組成,則其傳送波特率為:為: 波特1200/1200/12010sbsb 每一位的傳送時(shí)間為波特率的倒數(shù):每一位的傳送時(shí)間為波特率的倒數(shù):mssbbtd833. 01200115.2.2 MCS-51串行口結(jié)構(gòu)發(fā)送控制器發(fā)送控制器發(fā)送發(fā)送SBUFSBUF(99H)(99H)接受接受SBUFSBUF(99H)(99H)門門接受控制器接受控制器+ +串行口中斷串行口中斷串串行行控控制制寄寄存存

18、器器(98H)(98H)輸入移位寄存器輸入移位寄存器定定時(shí)時(shí)器器T1T1內(nèi)部總線內(nèi)部總線TI TIRIRITXD(P3.1)RXD(P3.0)888 物理空間上各自獨(dú)立的發(fā)送寄存器和接收寄存器,有相同名物理空間上各自獨(dú)立的發(fā)送寄存器和接收寄存器,有相同名字和地址空間,但不會(huì)出現(xiàn)沖突,因?yàn)榘l(fā)送寄存器只寫不讀,字和地址空間,但不會(huì)出現(xiàn)沖突,因?yàn)榘l(fā)送寄存器只寫不讀,接受寄存器只讀不寫。接受寄存器只讀不寫。串行口控制寄存器SCOND7D6D5D4D3D2D1D0SM0 SM1 SM2 REN TB8RB8TIRISM0SM1:串行口方式選擇位SM0SM1方式 功 能 說(shuō) 明 0 0 08位同步移位寄存

19、器方式(用于I/O擴(kuò)展) 0 1 110位UART,波特率可變(T1溢出率/n) 1 0 211位UART,波特率fosc/64或fosc/32 1 1 311位UART,波特率可變(T1溢出率/n)SM2SM2:允許方式:允許方式2 2和方式和方式3 3多機(jī)通訊位多機(jī)通訊位REN: 接收允許控制位。由軟件置位以允許接收,又由軟件清0 來(lái)禁止接收。TB8: 是要發(fā)送數(shù)據(jù)的第9位。在方式2或方式3中,要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。例如,可約定作為奇偶校驗(yàn)位,或在多機(jī)通訊中作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)志位。RB8: 接收到的數(shù)據(jù)的第9位。在方式0中不使用RB8。在方式1中,若(SM2

20、)=0,RB8為接收到的停止位。在方式2或方,式3中,RB8為接收到的第9位數(shù)據(jù)。TI: 發(fā)送中斷標(biāo)志。在方式0中,第8位發(fā)送結(jié)束時(shí),由硬件置位。在其它方式的發(fā)送停止位前,由硬件置位。TI置位既表示一幀信息發(fā)送結(jié)束,同時(shí)也是申請(qǐng)中斷,也可用軟件查詢的方法獲得數(shù)據(jù)已發(fā)送完畢的信息,或用中斷的方式來(lái)發(fā)送下一個(gè)數(shù)據(jù)。TI必須用軟件清0。RI: 接收中斷標(biāo)志位。在方式0,當(dāng)接收完第8位數(shù)據(jù)后,由硬件置位。在其它方式中,在接收到停止位的中間時(shí)刻由硬件置位(例外情況見(jiàn)于SM2的說(shuō)明)。RI置位表示一幀數(shù)據(jù)接收完畢,可用查詢的方法獲知或者用中斷的方法獲知。RI也必須用軟件清0。特殊功能寄存器PCON:是為了

21、在CHMOS的80C51單片機(jī)上實(shí)現(xiàn)電源控制而附加的。其中最高位是SMOD。5.2.3 串行口工作方式一、方式0 方式0為移位寄存器輸入/輸出方式??赏饨右莆患拇嫫饕詳U(kuò)展I/O口,也可以外接同步輸入/輸出設(shè)備。8位串行數(shù)據(jù)者是從RXD(P3.0)輸入或輸出,TXD(P3.1)用來(lái)輸出同步脈沖。 1、方式0發(fā)送 串行數(shù)據(jù)從RXD引腳輸出,TXD引腳輸出移位脈沖。CPU將數(shù)據(jù)寫入發(fā)送寄存器時(shí),立即啟動(dòng)發(fā)送,將8位數(shù)據(jù)以fosc/12的固定波特率從RXD輸出,低位在前,高位在后。發(fā)送完一幀數(shù)據(jù)后,發(fā)送中斷標(biāo)志TI由硬件置位。 2、方式0接收 當(dāng)串行口以方式0接收時(shí),先置位允許接收控制位REN。此時(shí),

22、RXD為串行數(shù)據(jù)輸入端,TXD仍為同步脈沖移位輸出端。當(dāng)(RI)=0和(REN)=1同時(shí)滿足時(shí),開始接收。當(dāng)接收到第8位數(shù)據(jù)時(shí),將數(shù)據(jù)移入接收寄存器,并由硬件置位RI。二、方式二、方式1 方式方式1為波特率可變的為波特率可變的10位異步通訊接口方式。發(fā)送或接收一位異步通訊接口方式。發(fā)送或接收一幀信息,包括幀信息,包括1個(gè)起始位個(gè)起始位0,8個(gè)數(shù)據(jù)位和個(gè)數(shù)據(jù)位和1個(gè)停止位個(gè)停止位1。1. 方式方式1發(fā)送發(fā)送 當(dāng)當(dāng)CPU執(zhí)行一條指令將數(shù)據(jù)寫入發(fā)送緩沖執(zhí)行一條指令將數(shù)據(jù)寫入發(fā)送緩沖SBUF時(shí),就啟動(dòng)時(shí),就啟動(dòng) 發(fā)送。串行數(shù)據(jù)從發(fā)送。串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就由硬引腳輸出,發(fā)送完一

23、幀數(shù)據(jù)后,就由硬件置位件置位TI。2. 方式方式1接受接受 在在(REN)=1時(shí),串行口采樣時(shí),串行口采樣RXD引腳,當(dāng)采樣到引腳,當(dāng)采樣到1至至0的跳變的跳變時(shí),確認(rèn)是開始位時(shí),確認(rèn)是開始位0,就開始接收一幀數(shù)據(jù)。只有當(dāng)(,就開始接收一幀數(shù)據(jù)。只有當(dāng)(RI)=0且停止位為且停止位為1或者(或者(SM2)=0時(shí),停止位才進(jìn)入時(shí),停止位才進(jìn)入RB8,8位數(shù)據(jù)位數(shù)據(jù)才能進(jìn)入接收寄存器,并由硬件置位中斷標(biāo)志才能進(jìn)入接收寄存器,并由硬件置位中斷標(biāo)志RI;否則信息丟;否則信息丟失。所以在方式失。所以在方式1接收時(shí),應(yīng)先用軟件清零接收時(shí),應(yīng)先用軟件清零RI和和SM2標(biāo)志。標(biāo)志。 在串行通訊中,收發(fā)雙方的數(shù)

24、據(jù)傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時(shí)器T1的溢出率控制。 方式方式0和方式和方式2的波特率:的波特率: 在方式0,每個(gè)及其周期發(fā)送或接受一位數(shù)據(jù),波特率的數(shù)值固定為時(shí)鐘頻率(fosc)的1/12,且不受SMOD的影響。 在方式2中,波特率由PCON中的選擇位SMOD來(lái)決定, 當(dāng)SMOD=0時(shí),波特率為1/64fosc 當(dāng)SMOD=1時(shí),波特率為1/32fosc, 方式方式1和方式和方式3的波特率:的波特率:)1(322的溢出率波特率TSMOD 其中,T1的溢出率取決于計(jì)數(shù)速率和定時(shí)器的預(yù)制值。T1計(jì)

25、數(shù)率取決于它工作在定時(shí)器狀態(tài)還是計(jì)數(shù)器狀態(tài),當(dāng)工作于定時(shí)器狀態(tài)時(shí),T1計(jì)數(shù)脈沖為fosc/12;當(dāng)工作于計(jì)數(shù)器狀態(tài)時(shí),T1計(jì)數(shù)脈沖取決于外部輸入時(shí)鐘頻率。 例5_3 應(yīng)用串行口方式0輸出,在串行口外接移位寄存器,構(gòu)成顯示器接口.如圖所示,三片(理論上可以為n片,為舉例方便而用三片)74LS164串接成24位并行輸出移位寄存器,每片74LS164接一個(gè)共陽(yáng)極8段LED顯示器,構(gòu)成三維數(shù)據(jù)顯示,這里P1.0作串行輸出選擇信號(hào)(只有P1.0為高時(shí),串行同步信號(hào)TXD才能輸出),這種顯示器稱為靜態(tài)顯示,CPU不必為顯示服務(wù)而頻繁執(zhí)行掃描任務(wù). 設(shè)顯示緩沖區(qū)設(shè)在DISBUF開始的區(qū)域中.解:1. 確定工

26、作方式 (1)送方式控制字 (SCON)0000 0000B00H ; 串行口以方式0輸出5.2.4 串行口應(yīng)用P1.0RXDTXD8051e74LS1643 4g5f6 10d11c12b13aLED0e74LS1643 4g5f6 10d11c12b13aLED1e74LS1643 4g5f6 10d11c12b13aLED2&8989895V5V1.21.21.2DISPLY:MOV SCON,#00H;選擇串行口為方式;選擇串行口為方式0發(fā)送發(fā)送 MOV R7,#3H;字節(jié)計(jì)數(shù);字節(jié)計(jì)數(shù) MOV R0,DISBUF;R0指向顯示緩沖區(qū)指向顯示緩沖區(qū) SETB P1.0; 選通選通TXD

27、同步移位時(shí)鐘同步移位時(shí)鐘L1: MOV A, R0 ;取要顯示的數(shù);取要顯示的數(shù)MOV SBUF,A ; 開始發(fā)送開始發(fā)送 JNB TI, $ ; 等待一幀發(fā)送完等待一幀發(fā)送完 CLR TI ; 清發(fā)送中斷標(biāo)志清發(fā)送中斷標(biāo)志 INC R0 ; 修改顯示緩沖區(qū)指針修改顯示緩沖區(qū)指針DJNZ R7, L1 ; 三個(gè)三個(gè)LED實(shí)現(xiàn)完了否實(shí)現(xiàn)完了否? CLR P1.0 ; 關(guān)關(guān)TXD RET ; 返回返回DISBUF: DB 11H, D7H, 18H, D8H 程序清單:第5章 MCS-51的中斷系統(tǒng) 實(shí)時(shí)測(cè)控,單片機(jī)能及時(shí)地響應(yīng)和處理單片機(jī)外部事件或內(nèi)部事件所提出的中斷請(qǐng)求。5.1 5.1 中斷的

28、概念中斷的概念 CPU正在執(zhí)行程序時(shí),單片機(jī)外部或內(nèi)部發(fā)生的某一事件,請(qǐng)求CPU迅速去處理。 CPU暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)到中斷服務(wù)處理程序處理所發(fā)生的事件。 處理完該事件后,再回到原來(lái)被中止的地方,繼續(xù)原來(lái)的工作,這稱為中斷。 CPU處理事件的過(guò)程,稱為CPU的中斷響應(yīng)過(guò)程。圖5-1所示。對(duì)事件的整個(gè)處理過(guò)程,稱為中斷處理(或中斷服務(wù))。能夠?qū)崿F(xiàn)中斷處理功能的部件稱為中斷系統(tǒng);產(chǎn)生中斷的請(qǐng)求源稱為中斷請(qǐng)求源。中斷源向CPU提出的處理請(qǐng)求,稱為中斷請(qǐng)求(或中斷申請(qǐng))。進(jìn)入中斷保護(hù)現(xiàn)場(chǎng)中斷處理恢復(fù)現(xiàn)場(chǎng) 中斷返回中斷方式優(yōu)點(diǎn):大大地提高了CPU的工作效率。5.2 MCS-51中斷系統(tǒng)的結(jié)構(gòu)有5個(gè)中

29、斷請(qǐng)求源,兩個(gè)中斷優(yōu)先級(jí),可兩級(jí)嵌套。中斷系統(tǒng)結(jié)構(gòu)示意圖如下圖所示。 5.3 中斷請(qǐng)求源五個(gè)中斷請(qǐng)求源 :(1)INT0*外部中斷請(qǐng)求0,由引腳INT0*輸入,中斷請(qǐng)求標(biāo)志為IE0。(2)INT1*外部中斷請(qǐng)求1,由引腳INT1*輸入,中斷請(qǐng)求標(biāo)志為IE1。(3)定時(shí)器/計(jì)數(shù)器T0溢出中斷請(qǐng)求,中斷請(qǐng)求標(biāo)志為TF0。(4)定時(shí)器/計(jì)數(shù)器T1溢出中斷請(qǐng)求,中斷請(qǐng)求標(biāo)志為TF1。(5)串行口中斷請(qǐng)求,中斷請(qǐng)求標(biāo)志為TI或RI。 由特殊功能寄存器TCON和SCON的相應(yīng)位鎖存。TCON為定時(shí)器/計(jì)數(shù)器的控制寄存器,字節(jié)地址為88H。包含:(1)T0和T1的溢出中斷請(qǐng)求標(biāo)志位TF1和TF0(2)外部中

30、斷請(qǐng)求標(biāo)志位IE1與IE0。格式如下所示:各標(biāo)志位的功能: (1)IT0選擇外部中斷請(qǐng)求0為跳沿觸發(fā)方式還是電平觸發(fā)方式: IT0=0,為電平觸發(fā)方式。 IT0=1,為邊沿觸發(fā)方式。 可由軟件置“1”或清“0”。(2)IE0外部中斷請(qǐng)求0的中斷請(qǐng)求標(biāo)志位。 IE0=0,無(wú)中斷請(qǐng)求。 IE0=1,外部中斷0有中斷請(qǐng)求。當(dāng)CPU響應(yīng)該中斷,轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件清“0”IE0。(3)IT1外部中斷請(qǐng)求1為邊沿觸發(fā)方式還是電平觸發(fā)方式,意義與IT0類似。(4)IE1外部中斷請(qǐng)求1的中斷請(qǐng)求標(biāo)志位,意義與IE0類似。(5)TF0T0溢出中斷請(qǐng)求標(biāo)志位。T0計(jì)數(shù)后,溢出時(shí),由硬件置“1”TF0,向C

31、PU申請(qǐng)中斷,CPU響應(yīng)TF0中斷時(shí),硬件自動(dòng)清“0”TF0,TF0也可由軟件清0。(6)TF1T1的溢出中斷請(qǐng)求標(biāo)志位,功能和TF0類似。 TR1、TR0 2個(gè)位與中斷無(wú)關(guān)。 當(dāng)MCS-51復(fù)位后,TCON被清0,則CPU無(wú)中斷。SCON為串行口控制寄存器,字節(jié)地址為98H。串行口的發(fā)送中斷和接收中斷的中斷請(qǐng)求標(biāo)志TI和RI,格式如下:各標(biāo)志位的功能: (1)TI發(fā)送中斷請(qǐng)求標(biāo)志位。串口每發(fā)送完一幀串行數(shù)據(jù)后,硬件自動(dòng)置“1”TI。必須在中斷服務(wù)程序中用軟件對(duì)TI標(biāo)志清“0”。 (2)RI接收中斷請(qǐng)求標(biāo)志位。串口接收完一個(gè)數(shù)據(jù)幀,硬件自動(dòng)置“1”RI標(biāo)志。必須在中斷服務(wù)程序中用軟件對(duì)RI標(biāo)志

32、清“0”。 5.4 中斷控制 5.4.1 中斷允許寄存器IE CPU對(duì)中斷源的開放或屏蔽,由片內(nèi)的中斷允許寄存器IE控制。字節(jié)地址為A8H,可位尋址。格式如下:IE對(duì)中斷的開放和關(guān)閉為兩級(jí)控制 總的開關(guān)中斷控制位EA(IE.7位): EA=0,所有中斷請(qǐng)求被屏蔽。 EA=1,CPU開放中斷,但五個(gè)中斷源的中斷請(qǐng)求是否允許,還要由IE中的5個(gè)中斷請(qǐng)求允許控制位決定。IE中各位的功能如下:(1)EA:中斷允許總控制位0:CPU屏蔽所有的中斷請(qǐng)求(CPU關(guān)中斷);1:CPU開放所有中斷(CPU開中斷)。(2)ES:串行口中斷允許位0:禁止串行口中斷;1:允許串行口中斷。 (3)ET1:定時(shí)器/計(jì)數(shù)器

33、T1的溢出中斷允許位0:禁止T1溢出中斷;1:允許T1溢出中斷。(4)EX1:外部中斷1中斷允許位0:禁止外部中斷1中斷;1:允許外部中斷1中斷。(5)ET0:定時(shí)器/計(jì)數(shù)器T0的溢出中斷允許位0:禁止T0溢出中斷;1:允許T0溢出中斷。(6)EX0:外部中斷0中斷允許位。0:禁止外部中斷0中斷;1:允許外部中斷0中斷。 MCS-51復(fù)位后,IE清0,所有中斷請(qǐng)求被禁止。若使某一個(gè)中斷源被允許中斷,除了IE相應(yīng)的位的被置“1” ,還必須使EA位=1。改變IE的內(nèi)容,可由位操作指令來(lái)實(shí)現(xiàn),即: SETB bit; CLR bit。例5-1 若允許片內(nèi)2個(gè)定時(shí)器/計(jì)數(shù)器中斷,禁止其它中斷源的中斷請(qǐng)

34、求。編寫設(shè)置IE的相應(yīng)程序段(1)用位操作指令來(lái)編寫如下程序段:CLR ES ;禁止串行口中斷 CLR EX1 ;禁止外部中斷1中斷CLR EX0;禁止外部中斷0中斷 SETB ET0 ;允許定時(shí)器/計(jì)數(shù)器T0中斷 SETB ET1 ;允許定時(shí)器/計(jì)數(shù)器T1中斷 SETB EA ;CPU開中斷(2)用字節(jié)操作指令來(lái)編寫: MOV IE,#8AH或者用: MOV 0A8H,#8AH ;A8H為IE寄存器字節(jié)地址5.4.2 中斷優(yōu)先級(jí)寄存器IP兩個(gè)中斷優(yōu)先級(jí),可實(shí)現(xiàn)兩級(jí)中斷嵌套。如圖5-6示。 可歸納為下面兩條基本規(guī)則:(1)低優(yōu)先級(jí)可被高優(yōu)先級(jí)中斷,反之則不能。(2)同級(jí)中斷不會(huì)被它的同級(jí)中斷源

35、所中斷。若CPU正在執(zhí)行高優(yōu)先級(jí)的中斷,則不能被任何中斷源所中斷。中斷優(yōu)先級(jí)寄存器IP,其字節(jié)地址為B8H。IP各個(gè)位的含義:(1)PS串行口中斷優(yōu)先級(jí)控制位1:高優(yōu)先級(jí)中斷;0:低優(yōu)先級(jí)中斷。(2)PT1定時(shí)器T1中斷優(yōu)先級(jí)控制位1:高優(yōu)先級(jí)中斷;0:低優(yōu)先級(jí)中斷。(3)PX1外部中斷1中斷優(yōu)先級(jí)控制位1:高優(yōu)先級(jí)中斷;0:低優(yōu)先級(jí)中斷。(4)PT0定時(shí)器T0中斷優(yōu)先級(jí)控制位1:高優(yōu)先級(jí)中斷;0:低優(yōu)先級(jí)中斷。(5)PX0外部中斷0中斷優(yōu)先級(jí)控制位1:高優(yōu)先級(jí)中斷;0:低優(yōu)先級(jí)中斷。 由軟件可改變各中斷源的中斷優(yōu)先級(jí)。 MCS-51的中斷系統(tǒng)有兩個(gè)不可尋址的“優(yōu)先級(jí)激活觸發(fā)器”:一個(gè)用來(lái)指示

36、某高優(yōu)先級(jí)的中斷正在執(zhí)行,所有后來(lái)的中斷均被阻止。另一個(gè)用來(lái)指示某低優(yōu)先級(jí)的中斷正在執(zhí)行,所有同級(jí)中斷都被阻止,但不阻斷高優(yōu)先級(jí)的中斷請(qǐng)求。在同時(shí)收到幾個(gè)同一優(yōu)先級(jí)的中斷請(qǐng)求時(shí),優(yōu)先響應(yīng)哪一個(gè)中斷,取決于內(nèi)部的查詢順序。查詢順序如下: 中斷源 中斷級(jí)別外部中斷0最高T0溢出中斷外部中斷1T1溢出中斷串行口中斷最低例5-2 設(shè)置IP寄存器的初始值,使2個(gè)外中斷請(qǐng)求為高優(yōu)先級(jí),其它中斷請(qǐng)求為低優(yōu)先級(jí)。(1)用位操作指令 SETB PX0 ;2個(gè)外中斷為高優(yōu)先級(jí) SETB PX1 CLR PS ;串口為低優(yōu)先級(jí)中斷CLR PT0 ;2個(gè)定時(shí)器/計(jì)數(shù)器低優(yōu)先級(jí)中斷CLR PT1(2)用字節(jié)操作指令 M

37、OV IP,#05H或: MOV 0B8H,#05H ;B8H為IP寄存器的字節(jié)地址 5.5 響應(yīng)中斷請(qǐng)求的條件 一個(gè)中斷請(qǐng)求被響應(yīng),需滿足以下必要條件:(1)IE寄存器中的中斷總允許位EA=1。(2)該中斷源發(fā)出中斷請(qǐng)求,即該中斷源對(duì)應(yīng)的中 斷請(qǐng)求標(biāo)志為“1”。 (3)該中斷源的中斷允許位=1,即該中斷沒(méi)有被屏蔽。(4)無(wú)同級(jí)或更高級(jí)中斷正在被服務(wù)。中斷響應(yīng)的主要過(guò)程:首先由硬件自動(dòng)生成一條長(zhǎng)調(diào)用指令: LCALL addr16接著就由CPU執(zhí)行該指令,將PC的內(nèi)容壓入堆棧以保護(hù)斷點(diǎn),再將中斷入口地址裝入PC。各中斷源服務(wù)程序的入口地址是固定的,如下所示: 中斷源 入口地址 外部中斷0 00

38、03H 定時(shí)器/計(jì)數(shù)器T0 000BH外部中斷1 0013H 定時(shí)器/計(jì)數(shù)器T1001BH串行口中斷0023H中斷響應(yīng)是有條件的,遇到下列三種情況之一時(shí),中斷響應(yīng)被封鎖: (1)CPU正在處理同級(jí)的或更高優(yōu)先級(jí)的中斷。 (2)所查詢的機(jī)器周期不是所當(dāng)前正在執(zhí)行指令的最后一個(gè)機(jī)器周期。只有在當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷響應(yīng)。(3)正在執(zhí)行的指令是RETI或是訪問(wèn)IE或IP的指令。需要再去執(zhí)行完一條指令,才能響應(yīng)新的中斷請(qǐng)求。 如果存在上述三種情況之一,CPU將丟棄中斷查詢結(jié)果,不能對(duì)中斷進(jìn)行響應(yīng)。5.6 中斷請(qǐng)求的撤消1定時(shí)器/計(jì)數(shù)器中斷請(qǐng)求的撤消 中斷請(qǐng)求被響應(yīng)后。硬件會(huì)自動(dòng)清TF0或TF

39、1。2外部中斷請(qǐng)求的撤消 (1)跳沿方式外部中斷請(qǐng)求的撤消是自動(dòng)撤消的。(2)電平方式外部中斷請(qǐng)求的撤消:除了標(biāo)志位清“0”之外,還需在中斷響應(yīng)后把中斷請(qǐng)求信號(hào)引腳從低電平強(qiáng)制改變?yōu)楦唠娖健?串行口中斷請(qǐng)求的撤消響應(yīng)串行口的中斷后,CPU無(wú)法知道是接收中斷還是發(fā)送中斷,還需測(cè)試這兩個(gè)中斷標(biāo)志位的狀態(tài),以判定是接收操作還是發(fā)送操作,然后才能清除。所以串行口中斷請(qǐng)求的撤消只能用軟件清除CLR TI ;清TI標(biāo)志位CLR RI ;清RI標(biāo)志位5.7 中斷服務(wù)程序的設(shè)計(jì)一、中斷服務(wù)程序設(shè)計(jì)的任務(wù) 基本任務(wù): (1)設(shè)置中斷允許控制寄存器IE。 (2)設(shè)置中斷優(yōu)先級(jí)寄存器IP。 (3)對(duì)外中斷源,是采用電平觸發(fā)還是跳沿觸發(fā)。 (4)編寫中斷服務(wù)程序,處理中斷請(qǐng)求。前2條一般放在主程序的初始化程序段中。例5-3 假設(shè)允許外部中斷0中斷,并設(shè)定它為高級(jí)中斷,其它中斷源為低級(jí)中斷,采用跳沿觸發(fā)方式。在主程序中編寫如下程序段: SETB EA ;CPU開中斷 SETB Ex0 ;允許外中斷0產(chǎn)生中斷 SETB PX0 ;外中斷0為高級(jí)中斷 SETB IT0 ;外中斷

溫馨提示

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