任務三流水燈定時控制課件_第1頁
任務三流水燈定時控制課件_第2頁
任務三流水燈定時控制課件_第3頁
任務三流水燈定時控制課件_第4頁
任務三流水燈定時控制課件_第5頁
已閱讀5頁,還剩161頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

教學導航教學導航1任務單任務單2任務三流水燈定時控制3.1中斷系統(tǒng)3.2定時器/計數(shù)器任務三流水燈定時控制33.1中斷系統(tǒng)3.1.1中斷的概念與作用3.1.2MCS–51單片機中斷系統(tǒng)3.1.3中斷服務函數(shù)3.1中斷系統(tǒng)3.1.1中斷的概念與作用4

3.1.1中斷的概念與作用外部設備是微機的重要組成部分,而微機和外部設備之間不是直接相連的,而是通過不同的接口電路來達到彼此間的信息傳送的。CPU與外部交換信息的方式:(1)程序控制傳送方式(2)中斷傳送方式(3)直接存儲器存?。―MA)方式3.1.1中斷的概念與作用外部設備是微機51.中斷的定義你正在專心看書,突然電話鈴響,于是你記下正在看的書的頁數(shù),去接電話,接完電話后再回來接著看書。日常中斷的例子1.中斷的定義你正在專心看書,突然電話鈴響,于6什么是中斷?中斷是指計算機在執(zhí)行某段程序的過程中,由于計算機系統(tǒng)內(nèi)、外的某種原因,暫時中止原程序的執(zhí)行,轉去執(zhí)行相應的處理程序,并中斷服務程序執(zhí)行完后,再回來繼續(xù)執(zhí)行被中斷的原程序的過程。什么是中斷?中斷是指計算機在執(zhí)行某段程序的過程中,72.中斷的作用1)CPU與外設并行工作。解決CPU速度快、外設速度慢的矛盾。2)實時處理??刂葡到y(tǒng)往往有許多數(shù)據(jù)需要采集或輸出。實時控制中有的數(shù)據(jù)難以估計何時需要交換。3)故障處理。計算機系統(tǒng)的故障往往隨機發(fā)生,如電源斷電、運算溢出、存儲器出錯等。采用中斷技術,系統(tǒng)故障一旦出現(xiàn),就能及時處理。4)實現(xiàn)人機交互:人和單片機交互一般采用鍵盤和按鍵,可以采用中斷的方式實現(xiàn),中斷方式時CPU執(zhí)行效率高,而且可以保證人機交互的實時性,故中斷方式在人機交互中得到廣泛應用。2.中斷的作用1)CPU與外設并行工作。解決CPU速度快83.1.2MCS-51中斷系統(tǒng)中斷系統(tǒng)是指能實現(xiàn)中斷功能的那部分硬件電路和軟件程序。對于MCS-51單片機,大部分中斷電路都是集成在芯片內(nèi)部的,只有和中斷輸入線上的中斷請求信號產(chǎn)生電路才分散在各中斷源電路或接口芯片電路里。3.1.2MCS-51中斷系統(tǒng)中斷系統(tǒng)是指能實現(xiàn)中斷功能9IE0TCONSCONINT0IT0=0

IT0=1INT1IT1=0

IT1=1TF0IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優(yōu)先級矢量地址高級中斷請求自然優(yōu)先級矢量地址低級中斷請求PX0PT0PX1PT1PSIEIP

中斷標志位中斷源允許總允許EA中斷優(yōu)先級3.1.2MCS-51單片機中斷系統(tǒng)IE0TCONSCONINT0IT0=0IT0=1IN101.MCS-51的中斷源和中斷標志中斷源是指引起中斷的事件。在單片機中,中斷源是指引起中斷原因的設備或事件,或發(fā)出中斷請求信號的源泉。通常有I/O設備、實時控制系統(tǒng)中的隨機參數(shù)和信息故障源等。1.MCS-51的中斷源和中斷標志中斷源是指引起中斷的事件111)外部中斷源:MCS-51系列單片機有2個外中斷源,稱為外中斷0和1,經(jīng)由單片機上的P3.2、P3.3這兩個外部引腳引入,為、。

2)內(nèi)部中斷源定時器溢出中斷源。定時器溢出中斷源由內(nèi)部定時器/計數(shù)器產(chǎn)生,屬于內(nèi)部中斷。串行口中斷源。串行口中斷是由內(nèi)部串行口中斷源產(chǎn)生。

(1)中斷源1)外部中斷源:MCS-51系列單片機有2個外中斷源,稱為外121)TCON中的中斷標志位(2)中斷請求標志(MSB)8FH8EH8DH8CH8BH8AH89H88H(LSB)外部中斷INT0中斷標志位(TCON.1):IE0=1,外部中斷1向CPU申請中斷外部中斷INT0觸發(fā)方式控制位(TCON.0):

IT0=0,電平觸發(fā)方式IT0=1,下降沿觸發(fā)方式注意:該寄存器可以位尋址。1)TCON中的中斷標志位(2)中斷請求標志(MSB)8F13提示:①在電平觸發(fā)方式下,CPU響應中斷時,不能自動清除IE0標志。也就是說,IE0狀態(tài)完全由狀態(tài)決定,所以在中斷返回前必須撤除的低電平,否則會引起重復中斷;而在負跳變觸發(fā)方式下,當CPU響應中斷時,硬件會自動使IE0清0。②在負跳變觸發(fā)方式下,為保證CPU能檢測到負跳變,的高、低電平時間至少應保持1個機器周期。采樣INT0采樣INT0采樣INT0提示:①在電平觸發(fā)方式下,CPU響應中斷時,不能自動清除I141)TCON的中斷標志位

TCON8FH8EH8DH8CH8BH8AH89H88HT0溢出中斷標志(TCON.5):T0啟動計數(shù)后,計滿溢出由硬件置位TF0=1,向CPU請求中斷,此標志一直保持到CPU響應中斷后,才由硬件自動清0。也可用軟件查詢該標志,并由軟件清0。1)TCON的中斷標志位TCON8FH8EH152)SCON的中斷標志位(MSB)9FH9EH9DH9CH9BH9AH99H98H(LSB)注意:該寄存器可以位尋址!RI(SCON.0)——串行接收中斷標志。TI(SCON.1)——串行發(fā)送中斷標志。2)SCON的中斷標志位(MSB)9FH9EH16(1)中斷允許控制——中斷允許寄存器IE2.中斷控制(MSB)AFHAEHADHACHABHAAHA9HA8H(LSB)中斷允許寄存器IE對中斷的開放和關閉實行兩級控制。所謂兩級控制,就是有一個總開、關中斷控制位EA,當EA=0時,則屏蔽所有的中斷申請,即任何中斷申請都不接受;當EA=1時,CPU開放中斷,但五個中斷源還要由IE的低5位的各對應控制位的狀態(tài)進行中斷允許控制。(1)中斷允許控制——中斷允許寄存器IE2.中斷控制(17實例3-1如果我們要設置外中斷1、定時器1中斷允許,其它不允許,請設置IE的相應值。位D7D6D5D4D3D2D1D0符號EA××ESET1EX1ET0EX0值10001100(MSB)AFHAEHADHACHABHAAHA9HA8H(LSB)(a)SFR賦值IE=0x8c(b)用位賦值EA=1;CPU開中斷ET1=1;定時/計數(shù)器1允許中斷EX1=1;外中斷T1允許中斷實例3-1如果我們要設置外中斷1、定時器1中斷允許,其它不18(2)中斷優(yōu)先級控制MCS-51單片機有兩個中斷優(yōu)先級:高級中斷和低級中斷。每一個中斷源都可以通過編程確定為高優(yōu)先級中斷或低優(yōu)先級中斷。若CPU當前正在為低優(yōu)先級中斷服務,在開中斷的條件下,它能被另一個高優(yōu)先級中斷請求所中斷,轉去為高級中斷服務,再返回到被中斷了的低級中斷的服務程序,這即為中斷嵌套。

(2)中斷優(yōu)先級控制MCS-51單片機有兩個中斷優(yōu)先級:高級19中斷嵌套過程CPU執(zhí)行高級中斷服務高級中斷請求返回低級中斷程序返回主程序響應高級中斷低級中斷請求CPU執(zhí)行低級中斷響應低級中斷CPU在執(zhí)行的主程序中斷嵌套過程CPU執(zhí)行高級中斷服務高級中斷請求返回低級中斷程20中斷優(yōu)先級寄存器IP(MSB)BFHBEHBDHBCHBBHBAHB9HB8H(LSB)專用寄存器IP為中斷優(yōu)先級寄存器,用戶可用軟件設定相應位為1,對應的中斷源被設置為高優(yōu)先級,相應位為0,對應的中斷源被設置為低優(yōu)先級系統(tǒng)復位時,均為低優(yōu)先級該寄存器可以位尋址中斷優(yōu)先級寄存器IP(MSB)BFHBEH21自然優(yōu)先權順序中

源同級內(nèi)優(yōu)先權排列外部中斷0中斷(IE0)定時器/計數(shù)器0中斷(TF0)外部中斷1中斷(IE1)定時器/計數(shù)器1中斷(TF1)串行接口中斷(TI/RI)

低自然優(yōu)先權順序中斷源同級內(nèi)優(yōu)先權排列外部中斷0中斷22MCS-51系列單片機中斷響應原則:1)高級中斷請求可以中斷正在執(zhí)行的低級中斷。2)同級或低級中斷請求不能中斷正在執(zhí)行的中斷。3)多個中斷源同時向CPU申請中斷,首先響應優(yōu)先級別最高的中斷請求;多個同級中斷源同時向CPU申請中斷,CPU通過內(nèi)部硬件查詢,按自然優(yōu)先級確定優(yōu)先響應哪一個中斷請求。MCS-51系列單片機中斷響應原則:1)高級中斷請求可以中斷23解:IP的首3位沒用,可任意取值,設為000,后面根據(jù)要求寫就可以了。位D7D6D5D4D3D2D1D0符號XXXPSPT1PX1PT0PX0值00000110實例3-2設有如下要求,將T0、外中斷1設為高優(yōu)先級,其它為低優(yōu)先級,求IP的值。IP的值就是06H。解:IP的首3位沒用,可任意取值,設為000,后面根據(jù)要求寫24實例3-3在上例中,如果5個中斷請求同時發(fā)生,求中斷響應的次序。解:響應次序為定時器0→外中斷1→外中斷0→實時器1→串行中斷。位D7D6D5D4D3D2D1D0符號XXXPSPT1PX1PT0PX0值00000110實例3-3在上例中,如果5個中斷請求同時發(fā)生,求中斷響25(1)中斷響應的時序3.中斷響應(1)中斷響應的時序3.中斷響應26(2)CPU響應中斷的條件

①沒有同級或高優(yōu)先級的中斷正在處理;②正在執(zhí)行指令必須執(zhí)行完最后一個機器周期(換言之,正在執(zhí)行的指令完成前,任何中斷請求都得不到響應);③若正在RETI或讀寫IE或IP寄存器,則必須執(zhí)行完當前指令的下一條其它指令之后才會響應。

(2)CPU響應中斷的條件①沒有同級或高優(yōu)先級的27單片機一旦響應中斷請求,就由硬件完成以下功能:①自動清除相應的中斷請求標志位(串行口中斷請求標志RI和TI除外);②保護斷點和現(xiàn)場,把被響應的中斷源所對應的中斷服務程序的入口地址(中斷矢量)送入PC,從而轉入相應的中斷服務程序。③結束中斷服務程序,恢復斷點和現(xiàn)場,并返回響應中斷之前的程序繼續(xù)執(zhí)行。(3)CPU響應中斷的過程單片機一旦響應中斷請求,就由硬件完成以下功能:①自283.1.3中斷服務函數(shù)C51編譯器支持在C語言源程序中直接編寫8051單片機的中斷服務函數(shù),從而減輕使用匯編語言的繁瑣程度,提高了開發(fā)效率。3.1.3中斷服務函數(shù)C51編譯器支持在C語言源程序中直291.中斷服務函數(shù)的一般形式void函數(shù)名(void)interruptm[unsingn]代表中斷號,是一個常量,取值范圍是0-31。C51編譯器允許32個中斷,從8m+3處產(chǎn)生中斷向量代表中斷函數(shù)將要選擇使用的寄存器組,也是一個常量,取值范圍是0~3。1.中斷服務函數(shù)的一般形式void函數(shù)名(void)i30程序存儲器ROM0000H:復位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口(中斷號m=4)0003H:外部中斷0入口(中斷號m=0)000BH:定時器/計數(shù)器0中斷入口(中斷號m=1)0013H:外部中斷1入口(中斷號m=2)001BH:定時器1/計數(shù)器中斷入口(中斷號m=3)002BHMCS-51單片機中斷入口8字節(jié)程序存儲器ROM0000H:復位后,程序的入口地址(PC=031關于USING的說明using不僅可以用于中斷服務函數(shù)的定義中,也可以用于普通的內(nèi)部函數(shù),但不能用于外部函數(shù)。就中斷服務函數(shù)而言如果不使用using,則在進入中斷服務函數(shù)的時候,中斷函數(shù)中所用到的全部工作寄存器都要入棧,函數(shù)返回之前所有的寄存器內(nèi)容出棧;如果使用using,則在進入中斷服務函數(shù)的時候,只將當前工作寄存器組入棧,用using指定的工作寄存器組的內(nèi)容不變也不入棧,函數(shù)返回之前將被保護的工作寄存器組出棧。關于USING的說明using不僅可以用于中斷服務函數(shù)的定義32提示(1)使用using可縮減中斷服務函數(shù)的入棧操作時間,因此可以使中斷得到更及時的處理;但同時,使用using要十分小心,要保證寄存器組切換在所控制的區(qū)域內(nèi),否則會導致錯誤。(2)中斷函數(shù)的編寫包括兩部分:中斷源的初始化函數(shù)和中斷服務函數(shù)。概括地說,中斷源初始化函數(shù)就是對中斷源所需要的一些變量進行設置,其形式與其他普通函數(shù)一樣——一般在主函數(shù)里實現(xiàn);而中斷服務函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應的中斷的時候要執(zhí)行哪些操作。(3)中斷函數(shù)的調(diào)用過程與一般函數(shù)調(diào)用相似,但一般函數(shù)是程序中事先安排好的;而何時調(diào)用中斷函數(shù)事先無法確定,調(diào)用中斷函數(shù)的過程是由硬件自動完成的。提示(1)使用using可縮減中斷服務函數(shù)的入棧操作時33中斷函數(shù)的類型及參數(shù)都為void類型中斷函數(shù)既不能進行參數(shù)傳遞,也沒有返回值,因此,中斷函數(shù)的形式參數(shù)列表和函數(shù)類型標識符名均為void。定時器0的定義方式:voidintr_time0(void)interrupt1{}中斷函數(shù)的類型及參數(shù)都為void類型中斷函數(shù)既不能進行參數(shù)傳342.中斷函數(shù)的編寫(1)中斷的初始化所謂初始化,是對將要用到的MCS-51系列單片機內(nèi)部部件或擴展芯片進行初始工作狀態(tài)設定。針對中斷來說,就是對IE,IP進行初始化編程,實現(xiàn)如下要求:1)CPU開中斷與關中斷。2)某個中斷源中斷請求的允許和禁止(屏蔽)。3)各中斷源優(yōu)先級別的設定。4)外部中斷請求的觸發(fā)方式。2.中斷函數(shù)的編寫(1)中斷的初始化35(2)中斷服務函數(shù)中斷服務函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應的中斷的時候要執(zhí)行哪些操作。(2)中斷服務函數(shù)中斷服務函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應的中斷的36實例【實例3-4】P1.3外接一個揚聲器,當與P3.3(外部中斷1輸入引腳)變?yōu)榈碗娖綍r,揚聲器發(fā)聲。實例【實例3-4】P1.3外接一個揚聲器,當與P3.3(外部37實例3-4#include<reg51.h>sbitp13=P1^3;voidmain(){IT0=0;EA=1;EX1=1;p13=1;while(1);}voidisr_int1()interrupt2{inti;

p13=~p13;for(i=1000;i>0;i--);}實例3-4#include<reg51.h>38實例3-5:電平觸發(fā)與跳變觸發(fā)的比較#include<reg51.h>#include<stdio.h>voidserial_init();voidisr_int0();main(){serial_init();IT0=0;EA=1;EX0=1;while(1);}voidisr_int0()interrupt0{printf("Externalinterrupt0responded\n");}voidserial_init(){SCON=0X52;MOD=(TMOD&0X0F)|0X20;TH1=221;TR1=1;}實例3-5:電平觸發(fā)與跳變觸發(fā)的比較#include<reg39電平觸發(fā)的輸出情況電平觸發(fā)的輸出情況40跳變觸發(fā)輸出情況main(){serial_init();

IT0=1;EA=1;EX0=1;while(1);}跳變觸發(fā)輸出情況41案例4:蒸汽鍋爐參數(shù)越限報警控制液位上、下限SL1、SL2開關取自“色帶指示報警儀”,分別接P1.3,P1.2。蒸汽壓力下限SP開關接P1.1。爐堂溫度上限ST開關接P1.0。P1.7~P1.4輸出接發(fā)光二極管,與4個參數(shù)對應,越限時則相應的LED點亮。案例4:蒸汽鍋爐參數(shù)越限報警控制液位上、下限SL1、SL2開42#include<reg51.h>voidisr_int0(void);main(){IT0=0;EX0=1;EA=1;while(1){}}主函數(shù)(初始化)voidisr_int0(void)interrupt0{chartemp1;P1=0x0ff;temp1=P1;temp1=temp1<<4;P1=temp1;for(i=10;i>0;i--):}#include<reg51.h>主函數(shù)(初始化)void433.2定時器/計數(shù)器3.2.1定時器/計數(shù)器的結構3.2.2

定時器/計數(shù)器的工作方式3.2定時器/計數(shù)器3.2.1定時器/計數(shù)器的結構443.2.1定時器/計數(shù)器的結構

可編程定時,通過對系統(tǒng)時鐘脈沖計數(shù)而獲得延時,MCS-51定時/計數(shù)器的優(yōu)點:可實現(xiàn)定時、計數(shù)功能,有利用實時控制不占用CPU時間定時精度高,修改方便3.2.1定時器/計數(shù)器的結構可編程定時,通過對系統(tǒng)時451.定時/計數(shù)器的組成定時/計數(shù)器的結構框圖

微處理器TH1TL1TH0TL0TCONTMOD工作方式工作方式T1T0P3.5(T1)P3.4(T0)1.定時/計數(shù)器的組成定時/計數(shù)器的結構框圖微TH1TL46(1)結構組成部分兩個16位的二進制定時/計數(shù)器T0、T1T0/T1分別由兩個8位的計數(shù)器組成,均屬SFR寄存器T0由TH0、TL0構成,字節(jié)地址為8CH、8AHT1由TH1、TL1構成,字節(jié)地址為8DH、8BH;相關的控制寄存器方式寄存器TMOD控制寄存器TCON(1)結構組成部分兩個16位的二進制定時/計數(shù)器T0、47定時功能

對片內(nèi)機器周期進行計數(shù),即每個機器周期產(chǎn)生一個計數(shù)脈沖,計數(shù)加1。實時控制、實時采樣、定時控制等。振蕩器÷12加1計數(shù)器TFx申請中斷TX端C/T=0C/T=1控制信號TRx(2)工作原理定時功能振蕩器÷12加1TFx申請中斷TX端C/48(2)工作原理計數(shù)功能

對片外從T0(P3.4)、T1(P3.5)引腳輸入的外部脈沖信號進行計數(shù),下降沿計數(shù)加1。計數(shù)頻率為晶振頻率的1/24。生產(chǎn)線上產(chǎn)品計數(shù)、檢測電機轉速等功能。振蕩器÷12加1計數(shù)器TFx申請中斷TX端C/T=0C/T=1控制信號TRx(2)工作原理計數(shù)功能振蕩器÷12加1TFx申請中斷T49定時/計數(shù)器初值預置初值X的計數(shù)方法(設最大值為M,計數(shù)值為N,初值為X,Tcy=12÷晶振頻率)定時狀態(tài):X=M-定時時間/Tcy計數(shù)狀態(tài):X=M-N要求檢測到100個脈沖,發(fā)中斷請求,通知CPU,選計數(shù)功能,計數(shù)初值為156設定時/計數(shù)器為8位加1計數(shù)器,要求定時每隔100s時間,發(fā)一次中斷請求(設機器周期1s),選定時功能,計數(shù)初值為156定時/計數(shù)器初值預置初值X的計數(shù)方法要求檢測到100個脈沖,502.方式控制寄存器TMODSFR寄存器,地址89H控制T0、T1的工作方式僅可字節(jié)尋址T1方式控制T0方式控制2.方式控制寄存器TMODSFR寄存器,地址89HT1方51定時器工作方式選擇M1和M0:工作方式選擇位M1M0方式說明00013位計數(shù)器(TH的高8位和TL的低5位)01116位計數(shù)器102自動重裝入初值的8位計數(shù)器113定時器0:分成兩個獨立的8位計數(shù)器定時器1:

停止計數(shù)定時器工作方式選擇M1和M0:工作方式選擇位M1M0方式52功能選擇及門控位C/定時/計數(shù)功能選擇位。為“0”,定時模式為“1”,計數(shù)模式GATE:門控位,定義T1/T0的啟動方式,GATE=0,非門控方式(內(nèi)部啟動):TR0/1=1,啟動定時器工作;TR0/1=0,停止定時器工作。GATE=1,門控方式(外部啟動)TR0/1=1且引腳INT0/1

=1才啟動。功能選擇及門控位C/定時/計數(shù)功能選擇位。533.狀態(tài)控制寄存器TCONSFR寄存器,地址88H即參與定時控制又參與中斷控制與定時控制相關的有4位TF1/TF0:當T1/T0的計數(shù)器計數(shù)溢出時,該位置“1”;TR1/TR0:T1/T0運行控制位。軟件將其置“1”時,啟動T1/T0工作。8FH8EH8DH8CH8BH8AH89H88H3.狀態(tài)控制寄存器TCONSFR寄存器,地址88H8FH54M1M0=00;作定時器:TMOD=00000000=00H作計數(shù)器:TMOD=00000100=04H13位計數(shù)器;TH:8位TL:低5位,高3位不用。3.2.2定時器/計數(shù)器工作方式

1.工作方式0M1M0=00;3.2.2定時器/計數(shù)器工作方式1.55方式0的工作原理方式0的工作原理56方式0的應用計數(shù)初值最大計數(shù)值為213=8192定時時間:△T=(213-T0的初值)×Tcy

計數(shù)個數(shù):S=213-T0的初值

方式0的應用計數(shù)初值57定時器初始化編程(1)向TMOD寄存器中寫入工作方式控制字(2)向定時/計數(shù)器TH0、TL0(或TH1、TL1)裝入初值(3)啟動定時/計數(shù)器(置位TR0/TR1)(4)如采用中斷方式,置位ET0(ET1)、EA、IP等中斷寄存器定時器初始化編程(1)向TMOD寄存器中寫入工作方式控制字58實例3-6:已知單片機晶振頻率6MHz,利用T0的方式0在P1.0引腳輸出周期為500us的方波解:1)方波波形如圖所示2)TMOD初始化00H3)計數(shù)初值:計數(shù)初值=213-欲計數(shù)脈沖數(shù)=213-△T/Tcy

=213-250/2=1F83H=0001111110000011B∴TH1=0xFC,TL1=0x034)TCON初始化,TR0=1實例3-6:已知單片機晶振頻率6MHz,利用T0的方式0在P59查詢方式程序清單

#include<reg51.h>sbitp10=P1^0;main(){TMOD=0;TH0=0XFC;TL0=0X03;TR0=1;

while(1){while(TF0==0);p10=~p10;TH0=0XFC;TL0=0X03;TF0=0;}}查詢方式程序清單#incl60中斷方式程序清單

#include<reg51.h>sbitp10=P1^0;voidisr_t0();main(){TMOD=0;TH0=0XFC;TL0=0X03;TR0=1;EA=1;ET0=1;while(1);}voidisr_t0()interrupt1{p10=~p10;TH0=0XFC;TL0=0X03;}中斷方式程序清單#includ61實例3-7單片機晶振頻率12MHz,利用T0的方式0實現(xiàn)1s延時,每隔1s鐘使P1.0引腳翻轉一次。1)TMOD初始化00H2)計數(shù)初值:定時時間:tmax=8192×1us=8.192ms;取5ms1秒延時實現(xiàn):5ms延時200次T0的初值:=213-5000μs/1s=3192=0C78H=0000110001111000B∴TH0=63H,TL0=18H實例3-7單片機晶振頻率12MHz,利用T0的方式0實現(xiàn)162源程序清單:#include<reg51.h>voidisr_time0(void);sbitP10=P1^0;unsignedintcounter=200;voidmain(){TMOD=0X00;TH0=0X63;TL0=0X18;TR0=1;EA=1;ET0=1;while(1);}voidisr_time0()interrupt1{counter--;if(!counter){counter=200;P10=~P10;}TH0=0X63;TL0=0X18;}源程序清單:#include<reg51.h>voidis632.工作方式1M1M0=01作定時器:TMOD=00000000=01H作計數(shù)器:TMOD=00000100=05H16位計數(shù)器,邏輯結構框圖如下:振蕩器÷12TF0中斷T0C/T=0C/T=1GATEINT0端TR0TH0(8位)TL0(8位)控制l&≥lEAET0&&2.工作方式1M1M0=01振蕩器÷12TF0中斷T0C/64實例3-8利用T0的方式1完成例3-6的功能(即在P1.0引腳輸出周期為500us的方波)。1)TMOD初始化01H2)計數(shù)初值:計數(shù)初值=216-欲計數(shù)脈沖數(shù)=216-△T/Tcy=216-250/2=65411=FF83H因此TH1=0xFF,TL1=0x833)TCON初始化,TR0=14)開中斷:EA=1;ET0=1實例3-8利用T0的方式1完成例3-6的功能(即在P1.65源程序清單//主函數(shù)#include<reg51.h>voidisr_time0(void);sbitP10=P1^0;voidmain(){TMOD=0X01;TH0=-125>>8;TL0=-125;TR0=1;EA=1;ET0=1;while(1);}小技巧:實際應用中,在利用C51編程時,計數(shù)初值可以直接用如下方法表示:TH0=-125>>8;//取計數(shù)初值的高8位(0FFH)TL0=-125;//自動取計數(shù)初值的低8位(83H)不需要計算出具體的計數(shù)初值。但讀者要清楚計算計數(shù)初值的原理。//中斷服務函數(shù)voidisr_time0(void)interrupt1{P10=~P10;TH0=-125>>8;TL0=-125;}源程序清單//主函數(shù)小技巧://中斷服務函數(shù)663.工作方式2M1M0=10作定時器:TMOD=02H作計數(shù)器:TMOD=06H自動重置初值的8位計數(shù)器,邏輯結構如圖:振蕩器÷12TF0中斷T0GATEINT0TR0TL0(8位)TH0(8位)控制重新裝入l≥l&C/T=0C/T=1&&EAET03.工作方式2M1M0=10振蕩器÷12TF0中斷T0GA67案例5啤酒生產(chǎn)線自動裝箱控制某啤酒自動生產(chǎn)線,每生產(chǎn)12瓶執(zhí)行裝箱操作,將生產(chǎn)出的啤酒自動裝箱,用單片機實現(xiàn)該控制要求。案例5啤酒生產(chǎn)線自動裝箱控制某啤酒自動生產(chǎn)線,每生產(chǎn)1268解:如果啤酒生產(chǎn)線上裝有傳感裝置,每檢測一瓶啤酒就向單片機發(fā)送一個脈沖信號,使用計數(shù)功能就可實現(xiàn)該控制要求。1)TMOD初始化06H2)計數(shù)初值:TH0=TL0=28-12=0F4H解:如果啤酒生產(chǎn)線上裝有傳感裝置,每檢測一瓶啤酒就向單片機發(fā)69程序清單#include<reg51.h>voidisr_time0(void);voidmain(){TMOD=0x06;TL0=0Xf4;TH0=0Xf4;TR0=1;ET0=1;EA=1;while(1);}voidisr_time()interrupt1{inti,time=600;P37=0;//驅動電機轉動while(time--)//假設裝箱時間固定for(i=500;i>0;i--);P37=1;//裝箱結束電機停止轉動}程序清單#include<reg51.h>voidisr704.工作方式3振蕩器÷12TF1T1中斷TH0(8位)TR1控制T0端C/T=0C/T=1GATEINT0端TR0振蕩器÷12TF0T0中斷TL0(8位)控制l≥l&&&EAET0僅作定時器用!4.工作方式3振蕩器÷12TF1T1中斷TH0(8位)TR714.工作方式3M1M0=11T0、T1的設置和使用不同T0兩個8位的計數(shù)器TL0:使用T0原有控制資源,功能與方式0、1相同。TH0:借用T1的TR1、TF1,只能對片內(nèi)機器周期脈沖計數(shù),作8位定時器。T0初值計算完全同方式2。4.工作方式3M1M0=1172T0工作方式3時T1的工作T1仍然可工作于方式0~2,C/控制位仍可使T1工作在定時器或計數(shù)器方式,由于其TR1、TF1被T0的TH0占用,因而計數(shù)溢出時只能將輸出結果送至串行口,即用作串行口波特率發(fā)生器。T1工作于方式2,因定時初值能自動恢復,用作波特率發(fā)生器。因定時器1的TR1被占用,其啟動和關閉比較特殊:當設置好工作方式時,T1自動開始運行。送入一個設置定時器1為方式3的方式字即可停止T1。T0工作方式3時T1的工作T1仍然可工作于方式0~2,C/73實例3-9已知系統(tǒng)晶振12MHz,試用定時器0的方式3實現(xiàn)1s的延時(設每秒讓P0.0所接的發(fā)光二極管閃爍一次)。TMOD初始化07HTH0作為定時器,定時時間250us;初值28-250=06HTL0作為計數(shù)器,計數(shù)200次;初值28-200=38H因250μs*200=50ms,則需引進一個變量,TL0計數(shù)滿后該變量加1,直至20則為1s實例3-9已知系統(tǒng)晶振12MHz,試用定時器0的方式3實74主函數(shù)#include<reg51.h>sbitP00=P0^0;sbitP34=P3^4;unsignedcharcount;voiddelay();main(){TMOD=7;TH0=0x06;TL0=0x38;TR0=1;TR1=1;while(1){P00=~P00;delay();}}主函數(shù)#include<reg51.h>while(1)75延時函數(shù)voiddelay(){count=0;while(count<20){while(TF0==0){while(TF1==0);P34=0;TH0=6;TF1=0;P34=1;}TL0=0x38;TF0=0;count++;}}延時函數(shù)voiddelay()76案例6以定時方式控制簡單流水燈已知系統(tǒng)晶振6MHz,采用定時器T0的工作方式1實現(xiàn)延時,控制P0口的8只發(fā)光二極管以100ms的間隔循環(huán)點亮。案例6以定時方式控制簡單流水燈已知系統(tǒng)晶振6MHz,77定時器/計數(shù)器控制流水燈定時器T0初值:定時時間:tmax=65536×2μs=131.072,取100msT0的初值:=216-100000μs/2μs=15536=3CB0H

TMOD=00000001B=01H

定時器/計數(shù)器控制流水燈定時器T0初值:78主函數(shù):

#include<reg51.h>#include<intrins.h>voidisr_time0(void);unsignedcharcword=0x01;voidmain(){TMOD=1;TH0=-50000>>8;TL0=-50000;TR0=1;EA=1;ET0=1;P0=cword;while(1);}主函數(shù):#include<reg51.h>79中斷服務函數(shù)voidisr_time0()interrupt1{TH0=-50000>>8;TL0=-50000;cword=_crol_(cword,1);P0=cword;}小技巧:雖然C51沒有提供循環(huán)左移的指令,但可以通過調(diào)用_crol_()函數(shù)來實現(xiàn),但不要忘記包含intrins.h頭文件,詳細內(nèi)容參見附錄2,要注意調(diào)用左移、右移時,數(shù)據(jù)類型不一樣,則調(diào)用的函數(shù)名不一樣。中斷服務函數(shù)voidisr_time0()interru80任務實施已知系統(tǒng)晶振12MHz,聯(lián)合使用定時器T0、T1實現(xiàn)延時(1)控制P0口的8只發(fā)光二極管以1s的間隔循環(huán)點亮。(2)按自定時間間隔從左至右循環(huán)點亮發(fā)光二極管,點亮最右邊的發(fā)光二極管后,再從右至左循環(huán)點亮。任務實施已知系統(tǒng)晶振12MHz,聯(lián)合使用定時器T0、T1實現(xiàn)81知識梳理與總結本任務通過利用定時器來控制流水燈的延時,介紹了MCS-51系列單片機的中斷系統(tǒng)和定時器/計數(shù)器的工作原理,讓讀者學會利用中斷系統(tǒng)和定時器/計數(shù)器進行單片機應用系統(tǒng)的設計。本任務需要重點掌握的內(nèi)容包括:(1)MCS-51系列單片機五個中斷源的標志,兩個外部中斷源的觸發(fā)方式;(2)單片機控制中斷開關、優(yōu)先級的兩個寄存器IE、IP;(3)中斷響應過程及中斷服務函數(shù)的編寫方法;(4)MCS-51系列單片機定時器/計數(shù)器結構及控制定時器/計數(shù)器工作的兩個特殊功能寄存器TMOD、TCON;(5)利用定時器/計數(shù)器的4種工作方式編寫應用程序,特別是方式字和計數(shù)初值的確定方法。知識梳理與總結本任務通過利用定時器來控制流水燈的延時,介紹了82精品課件!精品課件!83精品課件!精品課件!84任務作業(yè):P99T3-1~T3-4任務作業(yè):P99T3-1~T3-485教學導航教學導航86任務單任務單87任務三流水燈定時控制3.1中斷系統(tǒng)3.2定時器/計數(shù)器任務三流水燈定時控制883.1中斷系統(tǒng)3.1.1中斷的概念與作用3.1.2MCS–51單片機中斷系統(tǒng)3.1.3中斷服務函數(shù)3.1中斷系統(tǒng)3.1.1中斷的概念與作用89

3.1.1中斷的概念與作用外部設備是微機的重要組成部分,而微機和外部設備之間不是直接相連的,而是通過不同的接口電路來達到彼此間的信息傳送的。CPU與外部交換信息的方式:(1)程序控制傳送方式(2)中斷傳送方式(3)直接存儲器存取(DMA)方式3.1.1中斷的概念與作用外部設備是微機901.中斷的定義你正在專心看書,突然電話鈴響,于是你記下正在看的書的頁數(shù),去接電話,接完電話后再回來接著看書。日常中斷的例子1.中斷的定義你正在專心看書,突然電話鈴響,于91什么是中斷?中斷是指計算機在執(zhí)行某段程序的過程中,由于計算機系統(tǒng)內(nèi)、外的某種原因,暫時中止原程序的執(zhí)行,轉去執(zhí)行相應的處理程序,并中斷服務程序執(zhí)行完后,再回來繼續(xù)執(zhí)行被中斷的原程序的過程。什么是中斷?中斷是指計算機在執(zhí)行某段程序的過程中,922.中斷的作用1)CPU與外設并行工作。解決CPU速度快、外設速度慢的矛盾。2)實時處理。控制系統(tǒng)往往有許多數(shù)據(jù)需要采集或輸出。實時控制中有的數(shù)據(jù)難以估計何時需要交換。3)故障處理。計算機系統(tǒng)的故障往往隨機發(fā)生,如電源斷電、運算溢出、存儲器出錯等。采用中斷技術,系統(tǒng)故障一旦出現(xiàn),就能及時處理。4)實現(xiàn)人機交互:人和單片機交互一般采用鍵盤和按鍵,可以采用中斷的方式實現(xiàn),中斷方式時CPU執(zhí)行效率高,而且可以保證人機交互的實時性,故中斷方式在人機交互中得到廣泛應用。2.中斷的作用1)CPU與外設并行工作。解決CPU速度快933.1.2MCS-51中斷系統(tǒng)中斷系統(tǒng)是指能實現(xiàn)中斷功能的那部分硬件電路和軟件程序。對于MCS-51單片機,大部分中斷電路都是集成在芯片內(nèi)部的,只有和中斷輸入線上的中斷請求信號產(chǎn)生電路才分散在各中斷源電路或接口芯片電路里。3.1.2MCS-51中斷系統(tǒng)中斷系統(tǒng)是指能實現(xiàn)中斷功能94IE0TCONSCONINT0IT0=0

IT0=1INT1IT1=0

IT1=1TF0IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優(yōu)先級矢量地址高級中斷請求自然優(yōu)先級矢量地址低級中斷請求PX0PT0PX1PT1PSIEIP

中斷標志位中斷源允許總允許EA中斷優(yōu)先級3.1.2MCS-51單片機中斷系統(tǒng)IE0TCONSCONINT0IT0=0IT0=1IN951.MCS-51的中斷源和中斷標志中斷源是指引起中斷的事件。在單片機中,中斷源是指引起中斷原因的設備或事件,或發(fā)出中斷請求信號的源泉。通常有I/O設備、實時控制系統(tǒng)中的隨機參數(shù)和信息故障源等。1.MCS-51的中斷源和中斷標志中斷源是指引起中斷的事件961)外部中斷源:MCS-51系列單片機有2個外中斷源,稱為外中斷0和1,經(jīng)由單片機上的P3.2、P3.3這兩個外部引腳引入,為、。

2)內(nèi)部中斷源定時器溢出中斷源。定時器溢出中斷源由內(nèi)部定時器/計數(shù)器產(chǎn)生,屬于內(nèi)部中斷。串行口中斷源。串行口中斷是由內(nèi)部串行口中斷源產(chǎn)生。

(1)中斷源1)外部中斷源:MCS-51系列單片機有2個外中斷源,稱為外971)TCON中的中斷標志位(2)中斷請求標志(MSB)8FH8EH8DH8CH8BH8AH89H88H(LSB)外部中斷INT0中斷標志位(TCON.1):IE0=1,外部中斷1向CPU申請中斷外部中斷INT0觸發(fā)方式控制位(TCON.0):

IT0=0,電平觸發(fā)方式IT0=1,下降沿觸發(fā)方式注意:該寄存器可以位尋址。1)TCON中的中斷標志位(2)中斷請求標志(MSB)8F98提示:①在電平觸發(fā)方式下,CPU響應中斷時,不能自動清除IE0標志。也就是說,IE0狀態(tài)完全由狀態(tài)決定,所以在中斷返回前必須撤除的低電平,否則會引起重復中斷;而在負跳變觸發(fā)方式下,當CPU響應中斷時,硬件會自動使IE0清0。②在負跳變觸發(fā)方式下,為保證CPU能檢測到負跳變,的高、低電平時間至少應保持1個機器周期。采樣INT0采樣INT0采樣INT0提示:①在電平觸發(fā)方式下,CPU響應中斷時,不能自動清除I991)TCON的中斷標志位

TCON8FH8EH8DH8CH8BH8AH89H88HT0溢出中斷標志(TCON.5):T0啟動計數(shù)后,計滿溢出由硬件置位TF0=1,向CPU請求中斷,此標志一直保持到CPU響應中斷后,才由硬件自動清0。也可用軟件查詢該標志,并由軟件清0。1)TCON的中斷標志位TCON8FH8EH1002)SCON的中斷標志位(MSB)9FH9EH9DH9CH9BH9AH99H98H(LSB)注意:該寄存器可以位尋址!RI(SCON.0)——串行接收中斷標志。TI(SCON.1)——串行發(fā)送中斷標志。2)SCON的中斷標志位(MSB)9FH9EH101(1)中斷允許控制——中斷允許寄存器IE2.中斷控制(MSB)AFHAEHADHACHABHAAHA9HA8H(LSB)中斷允許寄存器IE對中斷的開放和關閉實行兩級控制。所謂兩級控制,就是有一個總開、關中斷控制位EA,當EA=0時,則屏蔽所有的中斷申請,即任何中斷申請都不接受;當EA=1時,CPU開放中斷,但五個中斷源還要由IE的低5位的各對應控制位的狀態(tài)進行中斷允許控制。(1)中斷允許控制——中斷允許寄存器IE2.中斷控制(102實例3-1如果我們要設置外中斷1、定時器1中斷允許,其它不允許,請設置IE的相應值。位D7D6D5D4D3D2D1D0符號EA××ESET1EX1ET0EX0值10001100(MSB)AFHAEHADHACHABHAAHA9HA8H(LSB)(a)SFR賦值IE=0x8c(b)用位賦值EA=1;CPU開中斷ET1=1;定時/計數(shù)器1允許中斷EX1=1;外中斷T1允許中斷實例3-1如果我們要設置外中斷1、定時器1中斷允許,其它不103(2)中斷優(yōu)先級控制MCS-51單片機有兩個中斷優(yōu)先級:高級中斷和低級中斷。每一個中斷源都可以通過編程確定為高優(yōu)先級中斷或低優(yōu)先級中斷。若CPU當前正在為低優(yōu)先級中斷服務,在開中斷的條件下,它能被另一個高優(yōu)先級中斷請求所中斷,轉去為高級中斷服務,再返回到被中斷了的低級中斷的服務程序,這即為中斷嵌套。

(2)中斷優(yōu)先級控制MCS-51單片機有兩個中斷優(yōu)先級:高級104中斷嵌套過程CPU執(zhí)行高級中斷服務高級中斷請求返回低級中斷程序返回主程序響應高級中斷低級中斷請求CPU執(zhí)行低級中斷響應低級中斷CPU在執(zhí)行的主程序中斷嵌套過程CPU執(zhí)行高級中斷服務高級中斷請求返回低級中斷程105中斷優(yōu)先級寄存器IP(MSB)BFHBEHBDHBCHBBHBAHB9HB8H(LSB)專用寄存器IP為中斷優(yōu)先級寄存器,用戶可用軟件設定相應位為1,對應的中斷源被設置為高優(yōu)先級,相應位為0,對應的中斷源被設置為低優(yōu)先級系統(tǒng)復位時,均為低優(yōu)先級該寄存器可以位尋址中斷優(yōu)先級寄存器IP(MSB)BFHBEH106自然優(yōu)先權順序中

源同級內(nèi)優(yōu)先權排列外部中斷0中斷(IE0)定時器/計數(shù)器0中斷(TF0)外部中斷1中斷(IE1)定時器/計數(shù)器1中斷(TF1)串行接口中斷(TI/RI)

低自然優(yōu)先權順序中斷源同級內(nèi)優(yōu)先權排列外部中斷0中斷107MCS-51系列單片機中斷響應原則:1)高級中斷請求可以中斷正在執(zhí)行的低級中斷。2)同級或低級中斷請求不能中斷正在執(zhí)行的中斷。3)多個中斷源同時向CPU申請中斷,首先響應優(yōu)先級別最高的中斷請求;多個同級中斷源同時向CPU申請中斷,CPU通過內(nèi)部硬件查詢,按自然優(yōu)先級確定優(yōu)先響應哪一個中斷請求。MCS-51系列單片機中斷響應原則:1)高級中斷請求可以中斷108解:IP的首3位沒用,可任意取值,設為000,后面根據(jù)要求寫就可以了。位D7D6D5D4D3D2D1D0符號XXXPSPT1PX1PT0PX0值00000110實例3-2設有如下要求,將T0、外中斷1設為高優(yōu)先級,其它為低優(yōu)先級,求IP的值。IP的值就是06H。解:IP的首3位沒用,可任意取值,設為000,后面根據(jù)要求寫109實例3-3在上例中,如果5個中斷請求同時發(fā)生,求中斷響應的次序。解:響應次序為定時器0→外中斷1→外中斷0→實時器1→串行中斷。位D7D6D5D4D3D2D1D0符號XXXPSPT1PX1PT0PX0值00000110實例3-3在上例中,如果5個中斷請求同時發(fā)生,求中斷響110(1)中斷響應的時序3.中斷響應(1)中斷響應的時序3.中斷響應111(2)CPU響應中斷的條件

①沒有同級或高優(yōu)先級的中斷正在處理;②正在執(zhí)行指令必須執(zhí)行完最后一個機器周期(換言之,正在執(zhí)行的指令完成前,任何中斷請求都得不到響應);③若正在RETI或讀寫IE或IP寄存器,則必須執(zhí)行完當前指令的下一條其它指令之后才會響應。

(2)CPU響應中斷的條件①沒有同級或高優(yōu)先級的112單片機一旦響應中斷請求,就由硬件完成以下功能:①自動清除相應的中斷請求標志位(串行口中斷請求標志RI和TI除外);②保護斷點和現(xiàn)場,把被響應的中斷源所對應的中斷服務程序的入口地址(中斷矢量)送入PC,從而轉入相應的中斷服務程序。③結束中斷服務程序,恢復斷點和現(xiàn)場,并返回響應中斷之前的程序繼續(xù)執(zhí)行。(3)CPU響應中斷的過程單片機一旦響應中斷請求,就由硬件完成以下功能:①自1133.1.3中斷服務函數(shù)C51編譯器支持在C語言源程序中直接編寫8051單片機的中斷服務函數(shù),從而減輕使用匯編語言的繁瑣程度,提高了開發(fā)效率。3.1.3中斷服務函數(shù)C51編譯器支持在C語言源程序中直1141.中斷服務函數(shù)的一般形式void函數(shù)名(void)interruptm[unsingn]代表中斷號,是一個常量,取值范圍是0-31。C51編譯器允許32個中斷,從8m+3處產(chǎn)生中斷向量代表中斷函數(shù)將要選擇使用的寄存器組,也是一個常量,取值范圍是0~3。1.中斷服務函數(shù)的一般形式void函數(shù)名(void)i115程序存儲器ROM0000H:復位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口(中斷號m=4)0003H:外部中斷0入口(中斷號m=0)000BH:定時器/計數(shù)器0中斷入口(中斷號m=1)0013H:外部中斷1入口(中斷號m=2)001BH:定時器1/計數(shù)器中斷入口(中斷號m=3)002BHMCS-51單片機中斷入口8字節(jié)程序存儲器ROM0000H:復位后,程序的入口地址(PC=0116關于USING的說明using不僅可以用于中斷服務函數(shù)的定義中,也可以用于普通的內(nèi)部函數(shù),但不能用于外部函數(shù)。就中斷服務函數(shù)而言如果不使用using,則在進入中斷服務函數(shù)的時候,中斷函數(shù)中所用到的全部工作寄存器都要入棧,函數(shù)返回之前所有的寄存器內(nèi)容出棧;如果使用using,則在進入中斷服務函數(shù)的時候,只將當前工作寄存器組入棧,用using指定的工作寄存器組的內(nèi)容不變也不入棧,函數(shù)返回之前將被保護的工作寄存器組出棧。關于USING的說明using不僅可以用于中斷服務函數(shù)的定義117提示(1)使用using可縮減中斷服務函數(shù)的入棧操作時間,因此可以使中斷得到更及時的處理;但同時,使用using要十分小心,要保證寄存器組切換在所控制的區(qū)域內(nèi),否則會導致錯誤。(2)中斷函數(shù)的編寫包括兩部分:中斷源的初始化函數(shù)和中斷服務函數(shù)。概括地說,中斷源初始化函數(shù)就是對中斷源所需要的一些變量進行設置,其形式與其他普通函數(shù)一樣——一般在主函數(shù)里實現(xiàn);而中斷服務函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應的中斷的時候要執(zhí)行哪些操作。(3)中斷函數(shù)的調(diào)用過程與一般函數(shù)調(diào)用相似,但一般函數(shù)是程序中事先安排好的;而何時調(diào)用中斷函數(shù)事先無法確定,調(diào)用中斷函數(shù)的過程是由硬件自動完成的。提示(1)使用using可縮減中斷服務函數(shù)的入棧操作時118中斷函數(shù)的類型及參數(shù)都為void類型中斷函數(shù)既不能進行參數(shù)傳遞,也沒有返回值,因此,中斷函數(shù)的形式參數(shù)列表和函數(shù)類型標識符名均為void。定時器0的定義方式:voidintr_time0(void)interrupt1{}中斷函數(shù)的類型及參數(shù)都為void類型中斷函數(shù)既不能進行參數(shù)傳1192.中斷函數(shù)的編寫(1)中斷的初始化所謂初始化,是對將要用到的MCS-51系列單片機內(nèi)部部件或擴展芯片進行初始工作狀態(tài)設定。針對中斷來說,就是對IE,IP進行初始化編程,實現(xiàn)如下要求:1)CPU開中斷與關中斷。2)某個中斷源中斷請求的允許和禁止(屏蔽)。3)各中斷源優(yōu)先級別的設定。4)外部中斷請求的觸發(fā)方式。2.中斷函數(shù)的編寫(1)中斷的初始化120(2)中斷服務函數(shù)中斷服務函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應的中斷的時候要執(zhí)行哪些操作。(2)中斷服務函數(shù)中斷服務函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應的中斷的121實例【實例3-4】P1.3外接一個揚聲器,當與P3.3(外部中斷1輸入引腳)變?yōu)榈碗娖綍r,揚聲器發(fā)聲。實例【實例3-4】P1.3外接一個揚聲器,當與P3.3(外部122實例3-4#include<reg51.h>sbitp13=P1^3;voidmain(){IT0=0;EA=1;EX1=1;p13=1;while(1);}voidisr_int1()interrupt2{inti;

p13=~p13;for(i=1000;i>0;i--);}實例3-4#include<reg51.h>123實例3-5:電平觸發(fā)與跳變觸發(fā)的比較#include<reg51.h>#include<stdio.h>voidserial_init();voidisr_int0();main(){serial_init();IT0=0;EA=1;EX0=1;while(1);}voidisr_int0()interrupt0{printf("Externalinterrupt0responded\n");}voidserial_init(){SCON=0X52;MOD=(TMOD&0X0F)|0X20;TH1=221;TR1=1;}實例3-5:電平觸發(fā)與跳變觸發(fā)的比較#include<reg124電平觸發(fā)的輸出情況電平觸發(fā)的輸出情況125跳變觸發(fā)輸出情況main(){serial_init();

IT0=1;EA=1;EX0=1;while(1);}跳變觸發(fā)輸出情況126案例4:蒸汽鍋爐參數(shù)越限報警控制液位上、下限SL1、SL2開關取自“色帶指示報警儀”,分別接P1.3,P1.2。蒸汽壓力下限SP開關接P1.1。爐堂溫度上限ST開關接P1.0。P1.7~P1.4輸出接發(fā)光二極管,與4個參數(shù)對應,越限時則相應的LED點亮。案例4:蒸汽鍋爐參數(shù)越限報警控制液位上、下限SL1、SL2開127#include<reg51.h>voidisr_int0(void);main(){IT0=0;EX0=1;EA=1;while(1){}}主函數(shù)(初始化)voidisr_int0(void)interrupt0{chartemp1;P1=0x0ff;temp1=P1;temp1=temp1<<4;P1=temp1;for(i=10;i>0;i--):}#include<reg51.h>主函數(shù)(初始化)void1283.2定時器/計數(shù)器3.2.1定時器/計數(shù)器的結構3.2.2

定時器/計數(shù)器的工作方式3.2定時器/計數(shù)器3.2.1定時器/計數(shù)器的結構1293.2.1定時器/計數(shù)器的結構

可編程定時,通過對系統(tǒng)時鐘脈沖計數(shù)而獲得延時,MCS-51定時/計數(shù)器的優(yōu)點:可實現(xiàn)定時、計數(shù)功能,有利用實時控制不占用CPU時間定時精度高,修改方便3.2.1定時器/計數(shù)器的結構可編程定時,通過對系統(tǒng)時1301.定時/計數(shù)器的組成定時/計數(shù)器的結構框圖

微處理器TH1TL1TH0TL0TCONTMOD工作方式工作方式T1T0P3.5(T1)P3.4(T0)1.定時/計數(shù)器的組成定時/計數(shù)器的結構框圖微TH1TL131(1)結構組成部分兩個16位的二進制定時/計數(shù)器T0、T1T0/T1分別由兩個8位的計數(shù)器組成,均屬SFR寄存器T0由TH0、TL0構成,字節(jié)地址為8CH、8AHT1由TH1、TL1構成,字節(jié)地址為8DH、8BH;相關的控制寄存器方式寄存器TMOD控制寄存器TCON(1)結構組成部分兩個16位的二進制定時/計數(shù)器T0、132定時功能

對片內(nèi)機器周期進行計數(shù),即每個機器周期產(chǎn)生一個計數(shù)脈沖,計數(shù)加1。實時控制、實時采樣、定時控制等。振蕩器÷12加1計數(shù)器TFx申請中斷TX端C/T=0C/T=1控制信號TRx(2)工作原理定時功能振蕩器÷12加1TFx申請中斷TX端C/133(2)工作原理計數(shù)功能

對片外從T0(P3.4)、T1(P3.5)引腳輸入的外部脈沖信號進行計數(shù),下降沿計數(shù)加1。計數(shù)頻率為晶振頻率的1/24。生產(chǎn)線上產(chǎn)品計數(shù)、檢測電機轉速等功能。振蕩器÷12加1計數(shù)器TFx申請中斷TX端C/T=0C/T=1控制信號TRx(2)工作原理計數(shù)功能振蕩器÷12加1TFx申請中斷T134定時/計數(shù)器初值預置初值X的計數(shù)方法(設最大值為M,計數(shù)值為N,初值為X,Tcy=12÷晶振頻率)定時狀態(tài):X=M-定時時間/Tcy計數(shù)狀態(tài):X=M-N要求檢測到100個脈沖,發(fā)中斷請求,通知CPU,選計數(shù)功能,計數(shù)初值為156設定時/計數(shù)器為8位加1計數(shù)器,要求定時每隔100s時間,發(fā)一次中斷請求(設機器周期1s),選定時功能,計數(shù)初值為156定時/計數(shù)器初值預置初值X的計數(shù)方法要求檢測到100個脈沖,1352.方式控制寄存器TMODSFR寄存器,地址89H控制T0、T1的工作方式僅可字節(jié)尋址T1方式控制T0方式控制2.方式控制寄存器TMODSFR寄存器,地址89HT1方136定時器工作方式選擇M1和M0:工作方式選擇位M1M0方式說明00013位計數(shù)器(TH的高8位和TL的低5位)01116位計數(shù)器102自動重裝入初值的8位計數(shù)器113定時器0:分成兩個獨立的8位計數(shù)器定時器1:

停止計數(shù)定時器工作方式選擇M1和M0:工作方式選擇位M1M0方式137功能選擇及門控位C/定時/計數(shù)功能選擇位。為“0”,定時模式為“1”,計數(shù)模式GATE:門控位,定義T1/T0的啟動方式,GATE=0,非門控方式(內(nèi)部啟動):TR0/1=1,啟動定時器工作;TR0/1=0,停止定時器工作。GATE=1,門控方式(外部啟動)TR0/1=1且引腳INT0/1

=1才啟動。功能選擇及門控位C/定時/計數(shù)功能選擇位。1383.狀態(tài)控制寄存器TCONSFR寄存器,地址88H即參與定時控制又參與中斷控制與定時控制相關的有4位TF1/TF0:當T1/T0的計數(shù)器計數(shù)溢出時,該位置“1”;TR1/TR0:T1/T0運行控制位。軟件將其置“1”時,啟動T1/T0工作。8FH8EH8DH8CH8BH8AH89H88H3.狀態(tài)控制寄存器TCONSFR寄存器,地址88H8FH139M1M0=00;作定時器:TMOD=00000000=00H作計數(shù)器:TMOD=00000100=04H13位計數(shù)器;TH:8位TL:低5位,高3位不用。3.2.2定時器/計數(shù)器工作方式

1.工作方式0M1M0=00;3.2.2定時器/計數(shù)器工作方式1.140方式0的工作原理方式0的工作原理141方式0的應用計數(shù)初值最大計數(shù)值為213=8192定時時間:△T=(213-T0的初值)×Tcy

計數(shù)個數(shù):S=213-T0的初值

方式0的應用計數(shù)初值142定時器初始化編程(1)向TMOD寄存器中寫入工作方式控制字(2)向定時/計數(shù)器TH0、TL0(或TH1、TL1)裝入初值(3)啟動定時/計數(shù)器(置位TR0/TR1)(4)如采用中斷方式,置位ET0(ET1)、EA、IP等中斷寄存器定時器初始化編程(1)向TMOD寄存器中寫入工作方式控制字143實例3-6:已知單片機晶振頻率6MHz,利用T0的方式0在P1.0引腳輸出周期為500us的方波解:1)方波波形如圖所示2)TMOD初始化00H3)計數(shù)初值:計數(shù)初值=213-欲計數(shù)脈沖數(shù)=213-△T/Tcy

=213-250/2=1F83H=0001111110000011B∴TH1=0xFC,TL1=0x034)TCON初始化,TR0=1實例3-6:已知單片機晶振頻率6MHz,利用T0的方式0在P144查詢方式程序清單

#include<reg51.h>sbitp10=P1^0;main(){TMOD=0;TH0=0XFC;TL0=0X03;TR0=1;

while(1){while(TF0==0);p10=~p10;TH0=0XFC;TL0=0X03;TF0=0;}}查詢方式程序清單#incl145中斷方式程序清單

#include<reg51.h>sbitp10=P1^0;voidisr_t0();main(){TMOD=0;TH0=0XFC;TL0=0X03;TR0=1;EA=1;ET0=1;while(1);}voidisr_t0()interrupt1{p10=~p10;TH0=0XFC;TL0=0X03;}中斷方式程序清單#includ146實例3-7單片機晶振頻率12MHz,利用T0的方式0實現(xiàn)1s延時,每隔1s鐘使P1.0引腳翻轉一次。1)TMOD初始化00H2)計數(shù)初值:定時時間:tmax=8192×1us=8.192ms;取5ms1秒延時實現(xiàn):5ms延時200次T0的初值:=213-5000μs/1s=3192=0C78H=0000110001111000B∴TH0=63H,TL0=18H實例3-7單片機晶振頻率12MHz,利用T0的方式0實現(xiàn)1147源程序清單:#include<reg51.h>voidisr_time0(void);sbitP10=P1^0;unsignedintcounter=200;voidmain(){TMOD=0X00;TH0=0X63;TL0=0X18;TR0=1;EA=1;ET0=1;while(1);}voidisr_time0()interrupt1{counter--;if(!counter){counter=200;P10=~P10;}TH0=0X63;TL0=0X18;}源程序清單:#include<reg51.h>voidis1482.工作方式1M1M0=01作定時器:TMOD=00000000=01H作計數(shù)器:TMOD=00000100=05H16位計數(shù)器,邏輯結構框圖如下:振蕩器÷12TF0中斷T0C/T=0C/T=1GATEINT0端TR0TH0(8位)TL0(8位)控制l&≥lEAET0&&2.工作方式1M1M0=01振蕩器÷12TF0中斷T0C/149實例3-8利用T0的方式1完成例3-6的功能(即在P1.0引腳輸出周期為500us的方波)。1)TMOD初始化01H2)計數(shù)初值:計數(shù)初值=216-欲計數(shù)脈沖數(shù)=216-△T/Tcy=216-250/2=65411=FF83H因此TH1=0xFF,TL1=0x833)TCON初始化,TR0=14)開中斷:EA=1;ET0=1實例3-8利用

溫馨提示

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

評論

0/150

提交評論