




已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
發(fā)光二極管的閃爍顯示,案例功能,定時(shí)器T0做定時(shí)器使用工作在方式0下,控制發(fā)光二極管,使發(fā)光二極管以亮0.5s后熄0.5s再亮再熄如此反復(fù)的形式進(jìn)行閃爍。本案例中fosc=11.0592MHZ,閃爍周期為1s。,相關(guān)知識,1、發(fā)光二極管的工作特性這個(gè)我們在前面以做過介紹,這里就不重述了,要求二極管的初始狀態(tài)是熄滅的。2、定時(shí)器T0、T1的基本結(jié)構(gòu),工作原理3、定時(shí)/計(jì)數(shù)器0和定時(shí)/計(jì)數(shù)器1的應(yīng)用設(shè)計(jì),2、定時(shí)器T0、T1的基本結(jié)構(gòu),工作原理,T0、T1的組成結(jié)構(gòu)T0/T1的工作方式T0、T1的控制寄存器計(jì)算初值的裝入,T0、T1的組成結(jié)構(gòu),T0、T1的結(jié)構(gòu)如圖6-1所示,圖中i=0、1,表示T0和T1的參數(shù)標(biāo)記.例如TRi就表示T0的控制位TR0和T1的控制位TR1;Ti為單片機(jī)的外部引腳T0/T1;INTi也為單片機(jī)的外部引腳INT0/INT1;TFi為中斷標(biāo)志位TF0/TF1,C/T、GATE為特殊功能寄存器TMOD中的兩位,TRi、TFi為特殊功能寄存器TCON中的二位。從圖中可以看出,T0、T1主要由計(jì)數(shù)輸入、計(jì)數(shù)器、計(jì)數(shù)溢出管理以及控制邏輯等幾個(gè)部分組成。,圖6-1T0、T1的基本結(jié)構(gòu),定時(shí)/計(jì)數(shù)器的輸入有兩路,由特殊功能寄存器TMOD的C/T位來管理。C/T=0時(shí),由振蕩頻率的12分頻后的脈沖進(jìn)行計(jì)數(shù),定時(shí)/計(jì)數(shù)器工作于定時(shí)模式,實(shí)現(xiàn)的是定時(shí)功能,所以定時(shí)器的實(shí)質(zhì)是對機(jī)器周期進(jìn)行計(jì)數(shù)的計(jì)數(shù)器;C/T=1時(shí),對Ti引腳輸入的外部脈沖進(jìn)行計(jì)數(shù),定時(shí)/計(jì)數(shù)器工作于計(jì)數(shù)模式,實(shí)現(xiàn)計(jì)數(shù)器功能。Ti作計(jì)數(shù)器使用時(shí),引腳Ti用作外部脈沖輸入引腳,不能作普通的I/O端口使用。其它情況下,可作普通的I/O端口使用。計(jì)數(shù)溢出管理具有使特殊功能寄存器TCON的TFi位自動置1和自動清0的功能。當(dāng)計(jì)數(shù)器計(jì)數(shù)滿發(fā)生溢出(即計(jì)到模值)時(shí),自動使TFi位置1,CPU響應(yīng)了對應(yīng)的定時(shí)中斷并且進(jìn)入到中斷服務(wù)程序中后,TFi位被自動清0。TFi位也可以用程序指令清0和置1。,控制邏輯由受控開關(guān)、特殊功能寄存器TCON的TRi位、TMOD的GATE位、引腳INTi以及門電路組成。控制C=1時(shí),受控開關(guān)閉合,計(jì)數(shù)脈沖被送往計(jì)數(shù)器計(jì)數(shù)器對計(jì)數(shù)脈沖計(jì)數(shù)(計(jì)數(shù)器運(yùn)行),控制C=0時(shí),控制開關(guān)斷開,計(jì)數(shù)器停止計(jì)數(shù)。從圖中可以看出:控制C=(GATEINTi)TRi所以,GATE=0時(shí),控制C=TRiGATE=1且TRi=1時(shí),控制C=INTi實(shí)際應(yīng)用中,常將GATE設(shè)為0,用TRi控制計(jì)數(shù)器的開啟和停止。當(dāng)需要測量外部脈沖寬度時(shí),可將GATE設(shè)為1,TRi設(shè)為1,外部脈沖從INTi引腳引入,用外部脈沖控制計(jì)數(shù)器的開啟和停止。,T0/T1的工作方式,定時(shí)/計(jì)數(shù)器有4種工作方式:方式0、方式1、方式2、方式3。除方式3外,T0和T1的工作狀態(tài)完全相同,在不同的工作下其計(jì)數(shù)器的構(gòu)成不同。在本案例中我們選用工作方式0,所以只對進(jìn)行詳細(xì)的介紹,其它的方式在以后的案例中涉及到了我們再做介紹。方式0:13位的工作方式,定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)與圖6-1所示的基本結(jié)構(gòu)相同,其中的計(jì)數(shù)器為13位的計(jì)數(shù)器,它由Tli的低5位和Thi的8位組成,Tli的高3位無效。,定時(shí)/計(jì)數(shù)器工作時(shí),計(jì)數(shù)脈沖輸入至TLi,Thi作加1計(jì)數(shù),當(dāng)TLi的低5位發(fā)生由11111B變至00000B時(shí),Thi加1。由TLi和Thi組成的13位計(jì)數(shù)器滿后回0時(shí)硬件電路自動將TFi置1。,T0、T1的控制寄存器,T0、T1的運(yùn)行受控于特殊功能寄存器TCON和TMOD(1)定時(shí)器控制寄存器(TCON)字節(jié)地址:88H,圖6-3TCON中的結(jié)構(gòu)圖,其中,TF1、TR1用于定時(shí)/計(jì)數(shù)器1,TF0、TR0用于定時(shí)/計(jì)數(shù)器0,IE1、IT1用于外部中斷1,IE0、IT0用于外部中斷0。,各位的含義如下:TFi位:定時(shí)/計(jì)數(shù)器回0標(biāo)志位,也稱作定時(shí)/計(jì)數(shù)器中斷請求標(biāo)志位。對應(yīng)的計(jì)數(shù)器計(jì)數(shù)滿回0時(shí),硬件電路自動將TFi位置1,并向CPU提出中斷申請,CPU響應(yīng)對應(yīng)的定時(shí)中斷,并進(jìn)入中斷服務(wù)程序中后,硬件電路自動將TFi清0。TRi位:定時(shí)/計(jì)數(shù)器運(yùn)行控制位。它與GATE位、INTi引腳一起組合來控制定時(shí)/計(jì)數(shù)器的開啟和停止。其詳細(xì)的控制關(guān)系請參考“T0、T1的組成結(jié)構(gòu)”中的有關(guān)部分。IEi位:外部中斷請求標(biāo)志。IEi=0外部中斷INTi無中斷請求。IEi=1外部中斷INTi有中斷請求。,CPU響應(yīng)了INTi中斷后,硬件電路自動將IEi位清0ITi位:外部中斷觸發(fā)方式控制位。ITi=0外部中斷INTi用低電平方式觸發(fā)ITi=1外部中斷INTi用下跳沿方式觸發(fā)單片機(jī)復(fù)位時(shí),TCON的值為00H,這就意味著上電時(shí)T0、T1均被停止。其中TR0和TR1分別用于控制T0和T1的啟動和停止,TF0和TF1用于標(biāo)識T0和T1是否產(chǎn)生溢出中斷請求。,(2)、定時(shí)器方式寄存器TMODTMOD用于控制T0、T1的運(yùn)行模式和工作方式,字節(jié)地址位89H,M1、M0位:工作方式選擇控制位。它們的取值組合用來確定定時(shí)/計(jì)數(shù)器的工作方式。M1、M0的取值組合與定時(shí)/計(jì)數(shù)器的工作方式之間的關(guān)系如表所示。,GATE位:門控位。與特殊功能寄存器TCON的TRi位以及外部引腳INTi的狀態(tài)組合起來控制定時(shí)/計(jì)數(shù)器Ti開啟和停止,其詳細(xì)的控制方法在“T0與T1的組成結(jié)構(gòu)”中作了介紹,這里不再累述,計(jì)算初值的裝入,計(jì)數(shù)初值的求法計(jì)數(shù)初值的裝入,計(jì)數(shù)初值的求法,T0、T1開啟時(shí),它們的計(jì)數(shù)器都是在計(jì)數(shù)初值的基礎(chǔ)上作加1計(jì)數(shù),當(dāng)計(jì)數(shù)滿回0時(shí),TFi置1。也就是說,當(dāng)計(jì)數(shù)器計(jì)到模值時(shí),TFi被置1,計(jì)數(shù)器發(fā)生溢出。此時(shí),計(jì)數(shù)次數(shù)N與計(jì)數(shù)器的模值M以及計(jì)數(shù)初值X之間有如下關(guān)系M=NX不同計(jì)數(shù)方式下,計(jì)數(shù)器的模值是不同的,各種計(jì)數(shù)方式下的模值如下:,對于模值為M的計(jì)數(shù)器,如果要計(jì)數(shù)N次后發(fā)生計(jì)數(shù)溢出(TFi位置1),則其計(jì)數(shù)初值X應(yīng)為:X=MN定時(shí)/計(jì)數(shù)器作計(jì)數(shù)器使用時(shí),一般是已知計(jì)數(shù)次數(shù)要求計(jì)數(shù)初值,我們可以用上式計(jì)算得出計(jì)數(shù)初值。定時(shí)/計(jì)數(shù)器作定時(shí)器使用時(shí),一般是已知定時(shí)時(shí)間t,要確定計(jì)數(shù)初值X。由于定時(shí)器的實(shí)質(zhì)是對機(jī)器周期進(jìn)行計(jì)數(shù),每隔一個(gè)機(jī)器周期其計(jì)數(shù)值就加1,因此,若要定時(shí)t時(shí)間,則計(jì)數(shù)器的計(jì)數(shù)次數(shù)N為:N=t/MC=(fosct)/12式中的MC為機(jī)器周期,fosc為晶振的振蕩頻率。計(jì)數(shù)初值為:X=MN=M(fosct)/12對于模值為M的計(jì)數(shù)器,其計(jì)數(shù)次數(shù)N的取值范圍為:1NM,【例6-1】設(shè)單片機(jī)的晶振頻率fosc=12MHz,現(xiàn)擬定用T0作1ms定時(shí)器,試求其在方式0下的計(jì)數(shù)初值X?!窘狻慷〞r(shí)器的定時(shí)長為1ms,則定時(shí)器的計(jì)數(shù)次數(shù)N為:N=(fosct)/12=(12106110-3)/12=1000方式0的模值為2000H。所以,計(jì)數(shù)初值X=MN=2000H1000=1C18H,計(jì)數(shù)初值的裝入,不同的工作方式下,定時(shí)/計(jì)數(shù)器的構(gòu)成不同,因此其初值的裝入方法也不完全相同。在方式0下,計(jì)數(shù)器為13位的計(jì)數(shù)器,它由TLi的低5位及THi構(gòu)成,計(jì)數(shù)器的低5位二進(jìn)制數(shù)為TLi中低5二進(jìn)制數(shù),高8位二進(jìn)制數(shù)為THi中的二進(jìn)制數(shù)。因此,在裝入計(jì)數(shù)初值時(shí)必須將初值的低5位數(shù)裝入TLi的低5位中,將初值的高8位數(shù)裝入THi中,其具體方法是:將計(jì)數(shù)初值轉(zhuǎn)換成13位的二進(jìn)制數(shù),截取其高8位二進(jìn)制數(shù)并傳送至THi中。截取其低5位二進(jìn)制數(shù),并在這5位二進(jìn)制數(shù)左端(高位)補(bǔ)上3位任意二進(jìn)制數(shù)后行成一個(gè)字節(jié)的二進(jìn)制數(shù),再將此二進(jìn)制數(shù)裝入TLi中。實(shí)際應(yīng)用中,一般是高3位補(bǔ)0。,例如,假定通過計(jì)算求得計(jì)數(shù)初值為1234H,T0采用方式0工作,則把初值1234H轉(zhuǎn)換成13位二進(jìn)制數(shù)為:1001000110100B。截取其高8位二進(jìn)制數(shù)為10010001B=91H。截取其低5位二進(jìn)制數(shù)為10100B,高3位補(bǔ)上0后為00010100B=14H。因此,TH0中應(yīng)裝入91H,TL0中應(yīng)裝入14H在方式0下,將計(jì)數(shù)初裝入T0的計(jì)數(shù)器中的程序段為:MOVTL0,#14H;計(jì)數(shù)初值的低5位數(shù)裝入TL0中MOVTH0,#91H;計(jì)數(shù)初值的高8位數(shù)裝入TH0中,3、定時(shí)/計(jì)數(shù)器0和定時(shí)/計(jì)數(shù)器1的應(yīng)用設(shè)計(jì),定時(shí)/計(jì)數(shù)器的應(yīng)用設(shè)計(jì)主要是軟件設(shè)計(jì),包括初始化程序的設(shè)計(jì)和執(zhí)行程序的設(shè)計(jì)兩個(gè)部分。,1)初始化程序的設(shè)計(jì),2)執(zhí)行程序的設(shè)計(jì),初始化程序的設(shè)計(jì),初始化程序一般安排在系統(tǒng)復(fù)位后所要執(zhí)行的模塊程序中,有時(shí)為了提高系統(tǒng)的穩(wěn)定性,也可以將初始化程序的一部分代碼安排在系統(tǒng)反復(fù)執(zhí)行的主程序中。初始化程序所要完成的工作是,設(shè)置定時(shí)/計(jì)數(shù)器的運(yùn)行模式、工作方式、計(jì)數(shù)初值,如果執(zhí)行程序被安排在定時(shí)中斷服務(wù)程序中,則在初始化程序中還要包括設(shè)置定時(shí)中斷的優(yōu)先級、開定時(shí)中斷等。也就是設(shè)特殊功能寄存器TMOD、TCON、THi、TLi以及IE、IP的值。在實(shí)際應(yīng)用中,一般對TCON、IE、IP三個(gè)特殊功能寄存器采用位操作,只設(shè)置與T0或T1有關(guān)的位的值,以避免改變其它功能部件的工作狀態(tài)。,【例6-2】某實(shí)際應(yīng)用系統(tǒng)需用定時(shí)/計(jì)數(shù)器T0對外部輸入脈沖進(jìn)行計(jì)數(shù),每計(jì)數(shù)滿1000個(gè)脈沖后,系統(tǒng)就進(jìn)入定時(shí)中斷服務(wù)程序處相應(yīng)的處理,現(xiàn)擬定T0采用高優(yōu)先級中斷,試編寫出對T0作初始化的子程序INIT_T0。【分析】依題要求,執(zhí)行程序放在定時(shí)中斷服務(wù)程序中,T0初始化程序中除了要設(shè)置TMOD、TCON、TH0和TL0的值外,還要開中斷和設(shè)置定時(shí)中斷的優(yōu)先級。T0的計(jì)數(shù)值N為:N=1000=3E8H28N213故可采用方式0、方式1進(jìn)行計(jì)數(shù),現(xiàn)采用方式1計(jì)數(shù),則計(jì)數(shù)初值X為:X=2161000=10000H3E8H=FC18H因此初始化程序中TL0應(yīng)裝入初始值18H,TH0中應(yīng)裝入初始值FCH。T0作計(jì)數(shù)器使用,TMOD應(yīng)設(shè)為:XXX0101B,現(xiàn)取05H。定時(shí)中斷的優(yōu)先級,所以PT0=1,【程序清單】INIT_T0:MOVTMOD,#05H;設(shè)置T0的工作模式:計(jì)數(shù)模式、方;式1MOVTL0,#18H;設(shè)置T0的計(jì)數(shù)初值:1000MOVTH0,#0FCHSETBPT0;T0采用高優(yōu)先級中斷SETBEA;開全局中斷SETBET0;開定時(shí)/計(jì)數(shù)T0中斷SETBTR0;啟動定時(shí)/計(jì)數(shù)器T0RET,執(zhí)行程序的設(shè)計(jì),執(zhí)行程序所要完成的任務(wù)是,定時(shí)/計(jì)數(shù)器中的計(jì)數(shù)器計(jì)數(shù)滿發(fā)生溢出(即定時(shí)器定時(shí)到或者計(jì)數(shù)器計(jì)數(shù)到)時(shí),CPU所要完成的工作。這部分程序無固定的模式,要根據(jù)具體情況來作具體處理。計(jì)數(shù)器計(jì)數(shù)滿發(fā)生溢出時(shí),硬件電路會自動地將TFi位置1,并向CPU請求中斷。所以執(zhí)行程序可以放在定時(shí)中斷服務(wù)程序中,也可以放在主程序中,通過查詢TFi位值來決定執(zhí)行程序是否被執(zhí)行。不過這種結(jié)構(gòu)將要占用CPU的大量時(shí)間,單片機(jī)的實(shí)時(shí)性將會下降,在實(shí)際應(yīng)用中盡量少用。將執(zhí)行程序放在定時(shí)中斷服務(wù)程序中,執(zhí)行程序的編寫實(shí)際上就是定時(shí)中斷服務(wù)程序的設(shè)計(jì)的問題。在設(shè)計(jì)中要注意以下幾方面問題:,除方式2外,其它工作方式下,定時(shí)/計(jì)數(shù)器都不具備重裝初值的功能。如果定時(shí)/計(jì)數(shù)器在計(jì)數(shù)滿發(fā)生溢出時(shí),還需計(jì)數(shù),則在定時(shí)中斷服務(wù)程序中需重裝計(jì)數(shù)初值。在方式2下,定時(shí)/計(jì)數(shù)器常作波特率發(fā)生器,此時(shí)不必編寫定時(shí)中斷服務(wù)程序,初始化程序中也不必開定時(shí)中斷。有關(guān)中斷服務(wù)程序入口地址。000BH是T0的中斷服務(wù)程序的入口地址,001BH是T1的中斷服務(wù)程序的入口地址,當(dāng)T0工作在方式3時(shí),以TH0作計(jì)數(shù)器的定時(shí)中斷服務(wù)程序的入口地址也是001BH。中斷服務(wù)程序一般不放在上述入口地址開始的存儲空間中而是放在0050H以后的存儲空間中,在上述入口地址處一般放一條無條件轉(zhuǎn)移指令,將程序轉(zhuǎn)移到對應(yīng)的中斷服務(wù)程序中去。,硬件電路,用P1口的8個(gè)引腳分別驅(qū)動8個(gè)發(fā)光二極管,二極管的陰極端接P1的各引腳,陽極端通過1K限流電阻接高電平,采用RC復(fù)位電路,內(nèi)部晶振電路,軟件編程,1、編程思路,采用T0定時(shí)/計(jì)數(shù)寄存器設(shè)置T0的運(yùn)行模式為定時(shí)模式,工作方式為0方式設(shè)置定時(shí)時(shí)間為5ms在T0定時(shí)中斷服務(wù)程序調(diào)用100次獲得5s延時(shí)后,將發(fā)光二極管的輸入狀態(tài)取反,2、設(shè)計(jì)過程,1)主程序部分選取工作方式0,進(jìn)行延時(shí)5ms的初值計(jì)算定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)初值=8192-5000*11.0592/12=3854=0111000000000B將低5位00000B送入TL0,將高8位01110000送入TH0設(shè)置變量TimCnt,用來統(tǒng)計(jì)T0中斷服務(wù)程序被調(diào)用的次數(shù),初值為0設(shè)置T0的運(yùn)行模式為定時(shí)模式、工作方式為0,給TMOD提供的值為00H開啟全局中斷令EA=1,開T0中斷令ET0=1,啟動T0計(jì)數(shù)令TR0=1,2)T0中斷服務(wù)程序T0在0工作方式下,當(dāng)產(chǎn)生計(jì)數(shù)溢出后,不具備硬件自動重載功能,所以給T0重置計(jì)數(shù)初值,即TL0=00H,TH0=70H修改TimCnt變量的值,每調(diào)用一次其值加1判斷TimCnt的值是否超過100,若是則表示已經(jīng)獲得延時(shí)5s的效果將發(fā)光二極管的輸入狀態(tài)取反,否則返回主程序,T0從初值開始重新計(jì)數(shù),3、繪制流程框圖,主程序流程,定時(shí)中斷程序,4、編寫源程序代碼,TIMCNTEQU30HORG0000HAJMPMAINORG000BH;T0定時(shí)中斷程序的入口地址AJMPTIMER0ORG0030HMAIN:MOVTH0,#70H;給T0提供計(jì)數(shù)初值MOV
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商場皮具促銷活動方案
- 團(tuán)隊(duì)烤肉比賽活動方案
- 國慶活動烘培店活動方案
- 員工講課活動方案
- 國慶家政公司活動方案
- 國風(fēng)展覽活動方案
- 哈雷展示活動方案
- 四看四比作風(fēng)活動方案
- 團(tuán)建奔跑活動方案
- 品牌活動圣誕活動方案
- 數(shù)字美的智慧工業(yè)白皮書-2023.09
- 橋梁施工進(jìn)度圖
- 某啤酒廠安全現(xiàn)狀評價(jià)設(shè)計(jì)報(bào)告書模板
- 在線語言學(xué)習(xí)行業(yè)競爭格局分析
- 廣西桂林市2022-2023學(xué)年高二下學(xué)期期末質(zhì)量檢測數(shù)學(xué)試題(含答案解析)
- 內(nèi)墻抹灰安全技術(shù)交底
- 中學(xué)美術(shù)校本教材《素描》
- 國開2023年春《理工英語1》機(jī)考網(wǎng)考期末復(fù)習(xí)資料參考答案
- 《幼兒生活活動保育》課程標(biāo)準(zhǔn)
- 年出欄5萬頭生豬養(yǎng)殖場建設(shè)項(xiàng)目及年出欄4800頭生豬養(yǎng)殖基地建設(shè)項(xiàng)目建議書
- OIF-CEI-04.0OIF-CEI-04.0高速電口標(biāo)準(zhǔn)
評論
0/150
提交評論