《器講:中斷與定時》PPT課件.ppt_第1頁
《器講:中斷與定時》PPT課件.ppt_第2頁
《器講:中斷與定時》PPT課件.ppt_第3頁
《器講:中斷與定時》PPT課件.ppt_第4頁
《器講:中斷與定時》PPT課件.ppt_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

,單片機(jī)的中斷系統(tǒng),單片機(jī)中斷系統(tǒng),中斷的定義所謂中斷,是指CPU正在處理某些事務(wù)的時候,外部又發(fā)生了某一事件,請求CPU及時處理。于是,CPU暫時中斷當(dāng)前的工作,轉(zhuǎn)而處理所發(fā)生的事件。處理完畢,再回到原來被中斷的地方,繼續(xù)原來的工作。這樣的過程,稱為中斷。,中斷示意圖,中斷源中斷申請開放中斷保護(hù)現(xiàn)場中斷服務(wù)恢復(fù)現(xiàn)場中斷返回,中斷涉及的幾個環(huán)節(jié),手機(jī),手機(jī)鈴聲響了提醒你去接,你準(zhǔn)備去接電話,一開始你正在看我的視頻教程,在電腦上暫停我的這個視頻教程,你開始接電話,掛斷電話回來,繼續(xù)看我的視頻教程,AT89S52單片機(jī)的中斷源及TCON,S52系列有6個中斷源(比S51多一個T2)2個外部中斷請求:INT0,INT13個片內(nèi)定時器/計數(shù)器T0和T1中斷請求:TF0,TF1,(TF2)1個串行口中斷請求:TI/RI,定時器控制寄存器TCON(88H),TF1TR1TF0TR0IE1IT1IE0IT0,TCON,TF0/TF1:定時器0/定時器1溢出中斷申請標(biāo)志位:=0:定時器未溢出;=1:定時器溢出申請中斷,進(jìn)中斷后自動清零。,TR0/TR1:定時器運行啟??刂莆唬?0:定時器停止運行;=1:定時器啟動運行。,TCON:Timer控制寄存器,是管理定時器工作的SFR(其中低4位管外部中斷),定時器控制寄存器TCON(88H),TF1TR1TF0TR0IE1IT1IE0IT0,TCON,IE0/IE1:外部中斷申請標(biāo)志位:=0:沒有外部中斷申請;=1:有外部中斷申請。,IT0/IT1:外部中斷請求的觸發(fā)方式選擇位:=0:在INT0/INT1端申請中斷的信號低電平觸發(fā);=1:在INT0/INT1端申請中斷的信號負(fù)跳變觸發(fā).,TCON:Timer控制寄存器,低4位管理外部中斷,在CPU已經(jīng)開放了外部中斷允許的前提下:在INT0/INT1引腳輸入一個負(fù)脈沖或低電平,TCON寄存器中的IE0/IE1標(biāo)志位自動變“1”,檢測到IE0/IE1變“1”后,將產(chǎn)生指令:執(zhí)行中斷服務(wù)程序,并將IE0/IE1標(biāo)志位自動清“0”,以備下次申請。,外部中斷(INT0,INT1)申請過程,TF1TR1TF0TR0IE1IT1IE0IT0,TCON,EAET2ESET1EX1ET0EX0,IE,中斷允許寄存器IE(0A8H),EX0/EX1/ET1/ET0/ES位:分別是INT0/1,Timer0/1,串行口的中斷允許控制位:=0時禁止中斷;=1時允許中斷。ET2:T2中斷允許控制位(僅52系列有)=0時禁止中斷;=1時允許中斷。EA:總的中斷允許控制位(總開關(guān)):=0時禁止全部中斷;=1時允許中斷。,中斷系統(tǒng)硬件結(jié)構(gòu),注:各中斷允許控制位=0,開關(guān)斷開;=1,開關(guān)接通,IE0,EX0,TF0,IE1,TF1,TI,ES,ET1,EX1,ET0,外部中斷請求0,外部中斷請求1,內(nèi)部定時器0,內(nèi)部定時器1,內(nèi)部串行口,T,R,RI,IE寄存器,EA位,IP寄存器,各單路開關(guān),總開關(guān),中斷源標(biāo)志位查詢機(jī)構(gòu),高中斷級中斷請求,低中斷級中斷請求,中斷入口,中斷源標(biāo)志位,INT0,INT1,中斷入口,中斷源標(biāo)志位,PT2PSPT1PX1PT0PX0,IP,PX0/PX1:INT0/1優(yōu)先級控制位:=0時屬低優(yōu)先級;=1時屬高優(yōu)先級。PT0/PT1/PT2:T0/1/2中斷優(yōu)先級控制位:=0時屬低優(yōu)先級;=1時屬高優(yōu)先級。PS1:串行口中斷優(yōu)先級控制位:=0時屬低優(yōu)先級;=1時屬高優(yōu)先級。,中斷優(yōu)先級控制寄存器IP(0B8H),【例】PX1=1;外中斷INT1被設(shè)置成高優(yōu)先級PT0=0;定時器T0被設(shè)置成低優(yōu)先級總線方式IP=0 x04;/IP=00000100將PX1設(shè)為1PT0設(shè)為0;,對同時發(fā)生多個中斷申請時:不同優(yōu)先級的中斷同時申請(很難遇到)先高后低相同優(yōu)先級的中斷同時申請(很難遇到)按序執(zhí)行正處理低優(yōu)先級中斷又接到高級別中斷高打斷低正處理高優(yōu)先級中斷又接到低級別中斷高不理低,中斷優(yōu)先級處理原則,單片機(jī)的中斷矢量與優(yōu)先級,中斷矢量:單片機(jī)的6個中斷源分別對應(yīng)有各自的中斷服務(wù)程序入口地址中斷矢量,最高優(yōu)先級最低優(yōu)先級,5interruptm修飾符,interruptmC51中斷函數(shù)必須通過它進(jìn)行修飾。在C51程序設(shè)計中,當(dāng)函數(shù)定義時用了interruptm修飾符,系統(tǒng)編譯時把對應(yīng)函數(shù)轉(zhuǎn)化為中斷函數(shù),自動加上程序頭段和尾段,并按51系統(tǒng)中斷的處理方式自動把它安排在程序存儲器中的相應(yīng)位置。,在該修飾符中,m的取值為031,對應(yīng)的中斷情況如下:0外部中斷01定時/計數(shù)器T02外部中斷13定時/計數(shù)器T14串行口中斷5定時/計數(shù)器T2其它值預(yù)留。,C51編譯器從絕對地址8m+3處產(chǎn)生一個中斷向量,其中m為中斷號,也即interrupt后面的數(shù)字。該向量包含一個到中斷函數(shù)入口地址的絕對跳轉(zhuǎn)。,【例】編寫一個用于統(tǒng)計外中斷0的中斷次數(shù)的中斷服務(wù)程序intx;voidint0()interrupt0using1x+;,usingn修飾符修飾符usingn用于指定本函數(shù)內(nèi)部使用的工作寄存器組,其中n的取值為03,表示寄存器組號??梢允÷允÷院笙到y(tǒng)自動選擇,中斷函數(shù)注意如下:(1)中斷函數(shù)不能進(jìn)行參數(shù)傳遞,如果中斷函數(shù)中包含任何參數(shù)聲明都將導(dǎo)致編譯出錯。(2)中斷函數(shù)沒有返回值,如果企圖定義一個返回值將得不到正確的結(jié)果,建議在定義中斷函數(shù)時將其定義為void類型,以明確說明沒有返回值。,單片機(jī)的定時/計數(shù)器,定時器計數(shù)器的概念,一、計數(shù)的概念選票:畫“正”。這就是計數(shù),生活中計數(shù)的例子處處可見。比如一個水盆在水龍頭下,水龍沒關(guān)緊,水一滴滴地滴入盆中。水滴持續(xù)落下,盆的容量是有限的,過一段時間之后,水就會逐漸變滿。51單片機(jī)中有兩個計數(shù)器,分別稱之為T0和T1,這兩個計數(shù)器分別是由兩個8位的RAM單元組成的,即每個計數(shù)器都是16位的計數(shù)器,最大的計數(shù)量是65536。二、定時計數(shù)器是如何作為定時器來用的呢?比如一個鬧鐘,將它定時在1個小時后響鬧,我們也能說成是秒針走了(3600)次,所以時間就轉(zhuǎn)化為秒針走的次數(shù)的,也就是計數(shù)的次數(shù)了,可見,計數(shù)的次數(shù)和時間之間十分相關(guān)。那么它們的關(guān)系是什么呢?也就是秒針每一次走動的時間要正好是1秒。只要計數(shù)脈沖的間隔相等,則計數(shù)值就代表了時間的流逝。由此,單片機(jī)中的定時器和計數(shù)器是同一個東西,只不過計數(shù)器是記錄的外部的觸發(fā)脈沖,而定時器則是由單片機(jī)供給一個非常穩(wěn)定的計數(shù)源。供給定時器的是計數(shù)源是機(jī)器周期,也就是由單片機(jī)的晶體震蕩器經(jīng)過12分頻后獲得的一個脈沖源(機(jī)器周期)。晶振的頻率是很準(zhǔn)確的,所以這個計數(shù)脈沖的時間間隔也很準(zhǔn)。一個12M的晶振,它供給給計數(shù)器的脈沖時間間隔是1微秒。計數(shù)脈沖的間隔與晶振有關(guān),12M的晶振,計數(shù)脈沖的間隔是1微秒。,這是邏輯圖,可以看到T1是一個單刀雙擲開關(guān),說明定一個定時/計數(shù)器同一時刻要么作定時用,要么作計數(shù)用,不能同時用;接通T1引腳時作為外部計數(shù)用。(T0的引腳是P3.4,T1的引腳是P3.5)。,比如滴水的例子,當(dāng)水持續(xù)落下,盆中的水逐漸變滿,最終會有一滴水使得盆中的水全滿了。這個時候如果再有一滴水落下,水會漫出來,用術(shù)語來講就是“溢出”,而每一滴水落下,用術(shù)語來說就是發(fā)出一個計數(shù)脈沖。水溢出是流到地上,而計數(shù)器溢出后就會引發(fā)一個定時中斷事件,就象定時的時間一到,鬧鐘就會響一樣。現(xiàn)在另一個問題是:要有多少個計數(shù)脈沖才會產(chǎn)生事件。剛才已研究過,計數(shù)器的容量是16位,也就是最大的計數(shù)值到65536,因此計數(shù)計到65536就會產(chǎn)生溢出。這個沒有問題,問題是我們現(xiàn)實生活中,經(jīng)常會有少于65536個計數(shù)值的要求,如制藥廠包裝線上,一瓶藥片為100粒,500瓶為一箱那么怎么樣來滿足這個要求呢?舉例如果是一個空的水盆要1萬滴水滴進(jìn)去才會滿,我在開始滴水之前就先放入一勺水,還需要10000滴嗎?對了,這時我們就采用預(yù)置數(shù)的辦法,我要計100,那我就先放進(jìn)65436,再來100個脈沖,不就到了65536了嗎。定時也是如此,每個脈沖是1微秒,則計滿65536個脈沖需時65.536毫秒,但現(xiàn)在我只要10毫秒,怎么辦?10個毫秒為10000個微秒,所以,只要在計數(shù)器里面放進(jìn)55536就可以了。,溢出的概念和設(shè)置任意定時計數(shù)的方法,3個16位定時器/計數(shù)器(51系列有2個16位Timer少一個T2)定時器:對片內(nèi)機(jī)器時鐘(周期方波)進(jìn)行計數(shù)計數(shù)器:對Tx引腳輸入的負(fù)脈沖進(jìn)行計數(shù),與Timer工作有關(guān)的特殊功能寄存器:TCON和TMOD,AT89S52單片機(jī)的定時器/計數(shù)器,單片機(jī)定時/計數(shù)器內(nèi)部結(jié)構(gòu),單片機(jī)定時/計數(shù)器內(nèi)部結(jié)構(gòu)圖,定時器的2個特殊功能寄存器(TCON),TF1TR1TF0TR0IE1IT1IE0IT0,定時器控制寄存器TCON(88H),TF0/TF1:定時器0/1計數(shù)溢出標(biāo)志位。=1計數(shù)溢出;=0計數(shù)未滿TF0/TF1標(biāo)志位可用于申請中斷或供CPU查詢。在進(jìn)入中斷服務(wù)程序時會自動清零;但在查詢方式時必須軟件清零。,TR0/TR1:定時器0/1運行控制位。=1啟動計數(shù);=0停止計數(shù),TR0/TR1:定時器0/1運行控制位:TR0/TR1=0時,Timer0/1停止計數(shù)TR0/TR1=1時,Timer0/1啟動計數(shù),定時器T0/T1中斷申請過程,在已經(jīng)開放T0/T1中斷允許且已被啟動的前提下:T0/T1加滿溢出時TF0/TF1標(biāo)志位自動置“1”檢測到TCON中TF0/TF1變“1”后,將產(chǎn)生指令:執(zhí)行中斷服務(wù)程序,TF0/TF1標(biāo)志位會自動清“0”,以備下次中斷申請。,定時/計數(shù)器可按片內(nèi)機(jī)器周期定時,也可對由T0/T1引腳輸入一個負(fù)脈沖進(jìn)行加法計數(shù),TF1TR1TF0TR0IE1IT1IE0IT0,TCON(88H),GATEC/TM1M0GATEC/TM1M0,定時器方式寄存器TMOD(89H),T1,T0,M1,M0:工作方式定義位(定義4種方式):,C/T:計數(shù)器/定時器選擇位=1外部事件計數(shù)器。對T0/T1引腳的負(fù)脈沖計數(shù);=0片內(nèi)時鐘定時器。對機(jī)器周期脈沖計數(shù)定時,00:13位定時器幾乎不用01:16位定時器經(jīng)常用到10:可自動重裝的8位定時器經(jīng)常用到11:T0分為2個8位Timer;T1此時不工作幾乎不用,GATEC/TM1M0GATEC/TM1M0,T1,T0,GATE門控位:Timer可由軟件與硬件兩者控制GATE=0普通用法Timer的啟/停由軟件對TRx位寫“1”/“0”控制,定時器方式寄存器TMOD,(89H),GATE=1門控用法Timer的啟/停由軟件對TR0/TR1位寫“1”/“0”和在INT0/INT1引腳上出現(xiàn)的信號的高/低共同控制,GATE=0時,定時/計數(shù)是否工作,只取決于TR0是否為1。GATE=1,只有TR0為1,且INT0管腳也是高電平,定時/計數(shù)才工作。從電路上看到GATE是一個非門,它與INTx組成一個或門,這個或門與TR0又組成一個與門。當(dāng)GATE=0時,則GATE=1(非門),此時無論INT0為高或低,它們相或之后必然為1,此時只要TR0=1,則工作,TR0=0則不工作,不受INT0的影響。當(dāng)GATE=1時,GATE=0,則INT0=1時,它們相或為1,此時定時器是否工作受TR0影響;若INT0=0,則無論TR0為什么,定時器都不能工作,即當(dāng)GATE=0時,定時器受INT0和TR0共同的作用。所以,GATE位的狀態(tài)決定定時器運行控制取決于TR0的一個條件還是TR0和INT0引腳這兩個條件。當(dāng)GATE=1時,由于GATE信號封鎖了與門,使引腳INT0信號無效。而這時候如果TR0=1,則接通模擬開關(guān),使計數(shù)器進(jìn)行加法計數(shù),即定時/計數(shù)工作。而TR0=0,則斷開模擬開關(guān),停止計數(shù),定時/計數(shù)不能工作。當(dāng)GATE=0時,與門的輸出端由TR0和INT0電平的狀態(tài)確定,此時如果TR0=1,INT0=1與門輸出為1,允許定時/計數(shù)器計數(shù),在這種情況下,運行控制由TR0和INT0兩個條件共同控制,TR0是確定定時/計數(shù)器的運行控制位,由軟件置位或清“0”。,振蕩器,12,TLxTHx(8位)(8位),TFx,申請中斷,Tx端,TRx位,GATE位,INTx端,1,計數(shù)/定時由C/T位決定工作方式0(13位)永遠(yuǎn)不用工作方式3(T0拆為雙8位)幾乎無用工作方式1(16位)經(jīng)常用到工作方式2(8位自動重裝)經(jīng)常用到,從初值按機(jī)器周期或外部脈沖遞加,溢出位TFx申請中斷;中斷允許由ETx位和EA位控制,,定時器/計數(shù)器的定時/計數(shù)范圍工作方式0:13位定時/計數(shù)方式,因此,最多能計到2的13次方,也就是8192次。工作方式1:16位定時/計數(shù)方式,因此,最多能計到2的16次方,也就是65536次。工作方式2和工作方式3,都是8位的定時/計數(shù)方式,因此,最多能計到2的8次方,也說是256次。預(yù)置值計算:用最大計數(shù)量減去需要的計數(shù)次數(shù)即可。,串行口與串行通信,串行通信的基本特征是數(shù)據(jù)逐位順序進(jìn)行傳送串行通信的格式及約定(如:同步方式、通訊速率、數(shù)據(jù)塊格式、信號電平等)不同,形成了多種串行通信的協(xié)議與接口標(biāo)準(zhǔn)。常見的有:通用異步收發(fā)器(UART)本課程介紹的串口通用串行總線(USB)I2C總線CAN總線SPI總線RS-232C,RS-485,RS422A標(biāo)準(zhǔn)等等,全雙工串行接口(UART),數(shù)據(jù)通信的幾個術(shù)語:并行:數(shù)據(jù)各位同時進(jìn)行傳送串行:數(shù)據(jù)逐位順序進(jìn)行傳送,全雙工:(串行通信)收/發(fā)可同時進(jìn)行半雙工:(串行通信)收/發(fā)不可同時進(jìn)行,異步串行通信:以字符為單位進(jìn)行傳送同步串行通信:以數(shù)據(jù)塊為單位進(jìn)行傳送波特率(bps.):單位時間傳送的位數(shù),51單片機(jī)的串行接口,SBUF(發(fā)),SBUF(收),發(fā)送控制器TI,接收控制器RI,移位寄存器,波特率發(fā)生器T1,1,A累加器,(門)移位寄存器,RxD,TxD,去申請中斷,引腳,引腳,CPU內(nèi)部,SM0SM1SM2RENTB8RB8TIRI,SCON,SM0,SM1:串行口4種工作方式的選擇位。00方式0:8位移位寄存器I/O,波特率固定為fosc/1201方式1:8位UART(1+8+1位),波特率可變,按公式計算10方式2:9位UART(1+8+1+1位),波特率固定=foscx1/32或1/6411方式3:9位UART(1+8+1+1位),波特率可變,按公式計算,SM2:串行口多機(jī)通信控制位(作為方式2、方式3的附加控制位),串行口控制寄存器SCON(98H),RI,TI:串行口收/發(fā)數(shù)據(jù)申請中斷標(biāo)志位1申請中斷;0不申請中斷,TB8:方式2、3中,是要發(fā)送的第9位數(shù)據(jù)。多機(jī)通信中,TB8=0表示發(fā)送的是數(shù)據(jù);TB8=1表示發(fā)送的是地址。(奇偶校驗),RB8:在方式2、3中,是收到的第9位數(shù)據(jù)。在多機(jī)通信中,用作區(qū)別地址幀/數(shù)據(jù)幀的標(biāo)志。(奇偶校驗),SM0SM1SM2RENTB8RB8TIR1,REN:串行口接收允許控制位=1表示允許接收;=0禁止接收。,SCON,SMODGF1GF0PD1DL,電源控制寄存器PCON(97H)特殊功能寄存器PCON不能按位尋址,SMOD:在串行口工作方式1、2、3中,是波特率加倍位=1時,波特率加倍=0時,波特率不加倍。(在PCON中只有這一個位與串口有關(guān)),PCON,串行口工作方式0,工作方式0:8位移位寄存器I/O方式,發(fā)送:SBUF中的串行數(shù)據(jù)由RxD逐位移出;TxD輸出移位時鐘,頻率=fosc1/12;每送出8位數(shù)據(jù)TI就自動置1;需要用軟件清零TI。,接收:串行數(shù)據(jù)由RxD逐位移入SBUF中;TxD輸出移位時鐘,頻率=fosc1/12;每接收8位數(shù)據(jù)RI就自動置1;需要用軟件清零RI。,經(jīng)常配合“串入并出”“并入串出”移位寄存器一起使用擴(kuò)展接口74HC16474HC165等我們開發(fā)板不涉及這方面所以不做講解,工作方式0:8位移位寄存器I/O方式,常用于串行通訊。除發(fā)/收8位數(shù)據(jù)外,還在D0位前有一個起始位“0”;在D7位后有一個停止位“1”。,方式1工作時:發(fā)送端自動添加一個起始位和一個停止位;接收端自動去掉一個起始位和一個停止位。,工作方式1:8位UART(1+8+1位)波特率可變,波特率可變用定時器T1作波特率發(fā)生器:公式:波特率=(2SMOD/32)T1的溢出率,波特率=(2SMOD/32)T1的溢出率,溢出率:T1溢出的頻繁程度即:T1溢出一次所需時間的倒數(shù)。,初值X=2n-,2SMODfosc32波特率12,波特率=,2SMODfosc3212(2n-X),其中:X是定時器初值,初值X=2n-,2SMODfosc32波特率12,用T1工作于方式2來產(chǎn)生波特率1200,已知晶振頻率=6MHz。要求出T1的初值:,初值X=28-,20610632120012,=256-=256-13.02,6106460800,243=0F3H結(jié)果后面要用到,常用波特率和T1初值查表,RxD引腳為接收端,TxD引腳為發(fā)送端,由波特率發(fā)生器T1控制發(fā)送速度,不同于方式0:收/發(fā)都需要由TxD送出移位時鐘。,T1作波特率發(fā)生器時初始化包括:選定時器工作方式2(TMOD選8位自動重裝);將計算出的初值X賦給TH1,TL1;啟動T1(TR1=1);注意!對T1不要開中斷!,工作方式1的接收/發(fā)送,串行口的初始化包括:對SCON選工作方式對PCON設(shè)波特率加倍位“SMOD”(缺省值=0)如果是接收數(shù)據(jù),仍要先置“1”REN位,SM0SM1SM2RENTB8RB8TIR1,SCON,SM0,SM1:串行口工作方式選擇位。01:方式1,8位UART(1+8+1位),REN:串行口接收允許位。REN=1允許接收,串行口控制寄存器SCON,01010000,TB8,RB8,TI,RI等位由運行中間的情況決定,可先寫成“0”,SM2:串行口多機(jī)通信控制位,作為方式2、3的附加控制位,此處不用,可寫成“0”,由于波特率固定,常用于單片機(jī)間通訊。數(shù)據(jù)由8+1位組成,通常附加的一位(TB8/RB8)用于“奇偶校驗”。,工作方式2:9位UART(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論