版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
定時(shí)器/計(jì)數(shù)器及實(shí)驗(yàn)MCS-51單片機(jī)可提供兩個(gè)16位的定時(shí)/計(jì)數(shù)器:定時(shí)/計(jì)數(shù)器1和定時(shí)/計(jì)數(shù)器0。它們均可用作定時(shí)器或事件計(jì)數(shù)器,為單片機(jī)系統(tǒng)提供計(jì)數(shù)和定時(shí)功能。12.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)及工作原理圖12-1為定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)框圖。由圖12-1可見,定時(shí)/計(jì)數(shù)器的核心是一個(gè)加1計(jì)數(shù)器,加1計(jì)數(shù)器的脈沖有兩個(gè)來源,一個(gè)是外部脈沖源,另一個(gè)是系統(tǒng)的時(shí)鐘振蕩器。計(jì)數(shù)器對(duì)兩個(gè)脈沖源之一進(jìn)行輸入計(jì)數(shù),每輸入一個(gè)脈沖,計(jì)數(shù)值加1。當(dāng)計(jì)數(shù)到計(jì)數(shù)器為全1時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)值回零,同時(shí)從最高位溢出一個(gè)脈沖使特殊功能寄存器TCON(定時(shí)器控制寄存器)的某一位TF0或TF1置1,作為計(jì)數(shù)器的溢出中斷標(biāo)志。如果定時(shí)/計(jì)數(shù)器工作于定時(shí)狀態(tài),則表示定時(shí)的時(shí)間到,若工作于計(jì)數(shù)狀態(tài),則表示計(jì)數(shù)回零。所以,加1計(jì)數(shù)器的基本功能是對(duì)輸入脈沖進(jìn)行計(jì)數(shù),至于其工作于定時(shí)還是計(jì)數(shù)狀態(tài),則取決于外接什么樣的脈沖源。當(dāng)脈沖源為時(shí)鐘振蕩器(等間隔脈沖序列)時(shí),由于計(jì)數(shù)脈沖為一時(shí)間基準(zhǔn),所以脈沖數(shù)乘以脈沖間隔時(shí)間就是定時(shí)時(shí)間,因此為定時(shí)功能。當(dāng)脈沖源為間隔不等的外部脈沖發(fā)生器時(shí),就是外部事件的計(jì)數(shù)器,因此為計(jì)數(shù)功能。 圖12-1定時(shí)/計(jì)數(shù)器結(jié)構(gòu)框圖用作“定時(shí)器”時(shí),在每個(gè)機(jī)器周期寄存器加1,也可以把它看作是在累計(jì)機(jī)器周期。由于一個(gè)機(jī)器周期包括12個(gè)振蕩周期,所以,它的計(jì)數(shù)速率是振蕩頻率的1/12。如果單片機(jī)采用12MHz晶體,則計(jì)數(shù)頻率為1MHz,即每微秒計(jì)數(shù)器加l。這樣不但可以根據(jù)計(jì)數(shù)值計(jì)算出定時(shí)時(shí)間,也可以反過來按定時(shí)時(shí)間的要求計(jì)算出應(yīng)計(jì)數(shù)的預(yù)置值。用作“計(jì)數(shù)器”時(shí),MCS-51在其對(duì)應(yīng)的外輸入端T0(P3.4)或T1(P3.5)有一個(gè)輸入脈沖的負(fù)跳變時(shí)加1。最快的計(jì)數(shù)速率是振蕩頻率的1/24。定時(shí)/計(jì)數(shù)器T0由兩個(gè)8位特殊功能寄存器TH0和TL0構(gòu)成,定時(shí)/計(jì)數(shù)器T1由兩個(gè)8位特殊功能寄存器TH1和TL1構(gòu)成。方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式,控制寄存器TCON用于啟動(dòng)和停止定時(shí)/計(jì)數(shù)器的計(jì)數(shù),并控制定時(shí)/計(jì)數(shù)器的狀態(tài)。對(duì)于每一個(gè)定時(shí)/計(jì)數(shù)器其內(nèi)部結(jié)構(gòu)實(shí)質(zhì)上是一個(gè)可程控加法計(jì)數(shù)器,由編程來設(shè)置它工作在定時(shí)狀態(tài)或計(jì)數(shù)狀態(tài)。8位特殊功能寄存器TH0和TL0(或TH1和TL1)可被程控為不同的組合狀態(tài)(13位、16位、兩個(gè)分開的8位等),從而形成定時(shí)/計(jì)數(shù)器四種不同的工作方式,這也只需用指令改變TMOD的相應(yīng)位即可。12.2定時(shí)/計(jì)數(shù)器方式寄存器和控制寄存器方式寄存器TMOD和控制寄存器TCON用于控制定時(shí)/計(jì)數(shù)器的工作方式,一旦把控制字寫入TMOD和TCON后,在下一條指令的第一個(gè)機(jī)器周期初(S1P1期間)就發(fā)生作用。兩個(gè)寄存器格式如下:1.定時(shí)/計(jì)數(shù)器方式寄存器TMODD7D6D5D4D3D2D1D0TMODGATEC/TM1M0GATEC/TM1M0(89H)定時(shí)器T1方式字段定時(shí)器T0方式字段其中高4位控制定時(shí)器T1,低4位控制定時(shí)器T0。M1、M0:工作方式選擇位。定時(shí)器/計(jì)數(shù)器具有4種工作方式,由M1M0位來定義,如表12-1。M1M0工作方式功能說明00方式013位定時(shí)/計(jì)數(shù)器01方式116位定時(shí)/計(jì)數(shù)器10方式2可自動(dòng)再裝入的8位定時(shí)/計(jì)數(shù)器11方式3把定時(shí)/計(jì)數(shù)器0分成兩個(gè)8位的計(jì)數(shù)器,關(guān)閉定時(shí)/計(jì)數(shù)器T1。表12-1定時(shí)/計(jì)數(shù)器工作方式選擇C/T:選擇“計(jì)數(shù)器”或“定時(shí)器”功能,C/T=1為計(jì)數(shù)器功能(計(jì)數(shù)在T0或T1端的負(fù)跳變)。C/T=0為定時(shí)器功能(計(jì)機(jī)器周期)。GATE:選通控制。GATE=0,由軟件控制TR0或TR1位啟動(dòng)定時(shí)器;GATE=1,由外部中斷引腳INT0(P3.2)和INT1(P3.3)輸入電平分別控制T0和T1的運(yùn)行。2.定時(shí)/計(jì)數(shù)器控制寄存器TCONbit8FH8EH8DH8CH8BH8AH89H88HTCONTF1TR1TF0TR0IE1IT1IE0IT1(88H)與外部中斷有關(guān)TF1:定時(shí)器T1溢出中斷標(biāo)志,當(dāng)定時(shí)器T1溢出時(shí)由內(nèi)部硬件置位,申請(qǐng)中斷,當(dāng)單片機(jī)轉(zhuǎn)向中斷服務(wù)程序時(shí),由內(nèi)部硬件將TF1標(biāo)志位清0。TR1:定時(shí)器T1運(yùn)行控制位,由軟件置位/清除來控制定時(shí)器T1開啟/關(guān)閉。當(dāng)GATE(TMOD.7)為0而TR1為l時(shí),允許T1計(jì)數(shù);當(dāng)TR1為0時(shí)禁止T1計(jì)數(shù)。當(dāng)GATE(TMOD.7)為l時(shí),僅當(dāng)TR1=1且INT1輸入為高電平才允許T1計(jì)數(shù),TR1=0或INT1輸入低電平都禁止T1計(jì)數(shù)。TF0:定時(shí)器T0溢出標(biāo)志,其含義與TF1類同。TR0:定時(shí)器T0的運(yùn)行控制位,其含義與TR1類同。復(fù)位時(shí),TMOD和TCON的所有位均清0。TCON的低4位與外部中斷有關(guān),在下一章再作介紹。12.3定時(shí)/計(jì)數(shù)器的工作方式2個(gè)16位定時(shí)器/計(jì)數(shù)器具有定時(shí)和計(jì)數(shù)兩種功能,每種功能包括了4種工作方式。用戶通過指令把方式字寫入TMOD中來選擇定時(shí)器/計(jì)數(shù)器的功能和工作方式,通過把計(jì)數(shù)的初始值寫入TH和TL中來控制計(jì)數(shù)長(zhǎng)度,通過對(duì)TCON中相應(yīng)位進(jìn)行置位或清0來實(shí)現(xiàn)啟動(dòng)定時(shí)器工作或停止計(jì)數(shù)。還可以讀出TH、TL、TCON中的內(nèi)容來查詢定時(shí)器的狀態(tài)。12.3.1方式0當(dāng)M1M0兩位為00時(shí),定時(shí)器/計(jì)數(shù)器被選為工作方式0。其等效框圖如圖12-2所示。方式0是一個(gè)13位的定時(shí)器/計(jì)數(shù)器。定時(shí)器T1的結(jié)構(gòu)和操作與定時(shí)器T0完全相同。在這種方式下,16位寄存器(TH0和TL0)只用13位。其中TL0的高3位未用,其余位占整個(gè)13位的低5位,TH0占高8位。當(dāng)TL0的低5位溢出時(shí)向TH0進(jìn)位,而TH0溢出時(shí)向中斷標(biāo)志TF0進(jìn)位(硬件置位TF0),并申請(qǐng)中斷。定時(shí)器T0計(jì)數(shù)溢出與否可通過查詢TF0是否置位,或是否產(chǎn)生定時(shí)器T0中斷而知道。圖12-2定時(shí)器T0(或T1)方式0結(jié)構(gòu)當(dāng)C/T=0時(shí),多路開關(guān)連接振蕩器的12分頻器輸出,T0對(duì)機(jī)器周期計(jì)數(shù),這就是定時(shí)工作方式。當(dāng)C/T=l時(shí),多路開關(guān)與引腳P3.4(T0)相連,外部計(jì)數(shù)脈沖由引腳T0輸入。當(dāng)外信號(hào)電平發(fā)生1到0跳變時(shí),計(jì)數(shù)器加1,這時(shí)T0成為外部事件計(jì)數(shù)器。當(dāng)GATE=0時(shí),封鎖“或”門,使引腳INT0輸入信號(hào)無效。這時(shí),“或”門輸出為?!?”,打開“與”門,由TR0控制定時(shí)器T0的開啟和關(guān)斷。若TR0=1,接通控制開關(guān),啟動(dòng)定時(shí)器T0,允許T0在原計(jì)數(shù)值上作加法計(jì)數(shù),直至溢出。溢出時(shí),計(jì)數(shù)寄存器值為0,TF0=1,并申請(qǐng)中斷,T0從0開始計(jì)數(shù)。因此,若希望計(jì)數(shù)器按原計(jì)數(shù)初值開始計(jì)數(shù),在計(jì)數(shù)溢出后,應(yīng)給計(jì)數(shù)器重新賦初值。若TR0=0,則關(guān)斷控制開關(guān),停止計(jì)數(shù)。當(dāng)GATE=1,且TR0=l時(shí),“或”門、“與”門全部打開,外信號(hào)電平通過INT0直接開啟或關(guān)斷定時(shí)器計(jì)數(shù)。輸入“1”電平時(shí),允許計(jì)數(shù),否則停止計(jì)數(shù)。這種操作方法可用來測(cè)量外信號(hào)的脈沖寬度等。當(dāng)為計(jì)數(shù)工作方式時(shí),計(jì)數(shù)值的范圍是:1~8192(213)當(dāng)為定時(shí)工作當(dāng)時(shí),定時(shí)時(shí)間的計(jì)算公式為:(213-計(jì)數(shù)初值)x晶振周期x12或(213-計(jì)數(shù)初值)x機(jī)器周期12.3.2方式1當(dāng)M1M0兩位為01時(shí),定時(shí)器/計(jì)數(shù)器被選為工作方式1。其等效框圖如圖12-3所示。圖12-3定時(shí)器T0(或T1)方式1結(jié)構(gòu)方式1為16位計(jì)數(shù)結(jié)構(gòu)的工作方式,計(jì)數(shù)器由8位TH0和8位TL0構(gòu)成(定時(shí)器T1的結(jié)構(gòu)和操作與定時(shí)器T0完全相同)。其邏輯電路和工作情況與方式0完全相同,所不同的只是組成計(jì)數(shù)器的位數(shù)。當(dāng)為計(jì)數(shù)工作方式時(shí),計(jì)數(shù)值的范圍是:1~65536(216)當(dāng)為定時(shí)工作方式時(shí),定時(shí)時(shí)間計(jì)算公式為:(216-計(jì)數(shù)初值)x晶振周期x12或(216-計(jì)數(shù)初值)x機(jī)器周期12.3.3方式2當(dāng)M1M0兩位為10時(shí),定時(shí)器/計(jì)數(shù)器被選為工作方式2。其等效框圖如圖12-4所示。圖12-4定時(shí)器T0(或T1)方式2結(jié)構(gòu)方式0和方式1的最大特點(diǎn)是計(jì)數(shù)溢出后,計(jì)數(shù)器全為0,因此循環(huán)定時(shí)或計(jì)數(shù)應(yīng)用時(shí)就存在重新設(shè)置計(jì)數(shù)初值的問題,這不但影響定時(shí)精度,而且也給程序設(shè)計(jì)帶來不便。方式2就是針對(duì)此問題而設(shè)置的,它具有自動(dòng)重新加載功能,因此也可以說方式2是自動(dòng)重新加載工作方式。在這種工作方式下,把16位計(jì)數(shù)器分為兩部分,即以TL0作計(jì)數(shù)器,以TH0作預(yù)置寄存器,初始化時(shí)把計(jì)數(shù)初值分別裝入TL0和TH0中。當(dāng)計(jì)數(shù)溢出后,由預(yù)置寄存器以硬件方法自動(dòng)加載。初始化時(shí),8位計(jì)數(shù)初值同時(shí)裝入TL0和TH0中。當(dāng)TL0計(jì)數(shù)溢出時(shí),置位TF0,同時(shí)把保存在TH0中的計(jì)數(shù)初值自動(dòng)加載裝入TL0中,然后TL0重新計(jì)數(shù),如此重復(fù)不止,這不但省去了用戶程序中的重裝指令,而且有利于提高定時(shí)精度。但這種方式下計(jì)數(shù)值有限,最大只能到256。這種自動(dòng)重新加載工作方式非常適用于連續(xù)定時(shí)或計(jì)數(shù)應(yīng)用。當(dāng)為計(jì)數(shù)工作方式時(shí),計(jì)數(shù)值的范圍是:1~256(28)當(dāng)為定時(shí)工作方式時(shí),定時(shí)時(shí)間計(jì)算公式為:(28-計(jì)數(shù)初值)x晶振周期x12或(28-計(jì)數(shù)初值)x機(jī)器周期12.3.4方式3當(dāng)M1M0兩位為11時(shí),定時(shí)器/計(jì)數(shù)器被選為工作方式3。前三種工作方式下,對(duì)兩個(gè)定時(shí)器/計(jì)數(shù)器的使用是完全相同的,但是在方式3下,兩個(gè)定時(shí)器/計(jì)數(shù)器的工作卻是不同的。定時(shí)器/計(jì)數(shù)器T0:在方式3下,定時(shí)器/計(jì)數(shù)器T0被拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0,其中TL0既可以計(jì)數(shù)使用,又可以定時(shí)使用,定時(shí)器/計(jì)數(shù)器T0的各控制位和引腳信號(hào)全歸它使用。其功能和操作與方式0和方式1完全相同,而且邏輯電路結(jié)構(gòu)也極其類似,如圖12-5。圖12-5定時(shí)器T0(或T1)方式3結(jié)構(gòu)但TH0則只能作為簡(jiǎn)單的定時(shí)器使用,而且由于定時(shí)器/計(jì)數(shù)器T0的控制位已被TL0所占用,因此只好借用定時(shí)器/計(jì)數(shù)器T1的控制位TR1和TF1,即計(jì)數(shù)溢出置位TF1,而定時(shí)的啟動(dòng)和停止則受TR1的狀態(tài)控制。由于TH0只能作定時(shí)器使用而不能作計(jì)數(shù)器使用,因此在方式3下,定時(shí)器/計(jì)數(shù)器T0可以構(gòu)成二個(gè)定時(shí)器;或一個(gè)定時(shí)器一個(gè)計(jì)數(shù)器。定時(shí)器/計(jì)數(shù)器T1:如果定時(shí)器/計(jì)數(shù)器T0已被設(shè)置為工作方式3,則定時(shí)器/計(jì)數(shù)器T1只能設(shè)置為方式0,方式1或方式2,因?yàn)樗倪\(yùn)行控制位TR1及計(jì)數(shù)溢出標(biāo)志位TF1已被定時(shí)器/計(jì)數(shù)器T0所占據(jù),在這種情況下,定時(shí)器/計(jì)數(shù)器T1通常是作為串行口的波特率發(fā)生器使用,因?yàn)橐褯]有計(jì)數(shù)溢出標(biāo)志位TF1可供使用,因此就把計(jì)數(shù)溢出直接送給串行口,以決定串行通信的速率。當(dāng)作為波特率發(fā)生器使用時(shí),只需設(shè)置好工作方式,便自動(dòng)運(yùn)行。如要停止工作,只需送入一個(gè)把它設(shè)置為方式3的方式控制字就可以了。因?yàn)槎〞r(shí)器/計(jì)數(shù)器T1不能在方式3下使用,如果硬把它設(shè)置為方式3,就停止工作。12.4定時(shí)器/計(jì)數(shù)器的初始化由于定時(shí)器/計(jì)數(shù)器的功能是由軟件編程確定的,所以一般在使用定時(shí)器/計(jì)數(shù)器前都要對(duì)其進(jìn)行初始化,使其按設(shè)定的功能工作。初始化步驟一般如下:1.確定工作方式,對(duì)TMOD賦值。2.預(yù)置定時(shí)或計(jì)數(shù)的初值,可直接將初值寫入TH0、TL0或TH1、TL1。3.根據(jù)需要開放定時(shí)器/計(jì)數(shù)器的中斷,直接對(duì)IE位賦值。4.啟動(dòng)定時(shí)器/計(jì)數(shù)器,若已規(guī)定用軟件啟動(dòng),則可把TR0或TR1置“1”;若已規(guī)定由外中斷引腳電平啟動(dòng),則需給外引腳加啟動(dòng)電平。當(dāng)實(shí)現(xiàn)了啟動(dòng)要求之后,定時(shí)器即按規(guī)定的工作方式和初值開始計(jì)數(shù)或定時(shí)。12.5使用定時(shí)器T1以方式0使單片機(jī)產(chǎn)生周期為1000μS等寬方波脈沖實(shí)驗(yàn)(1000Hz音頻),在P1.7輸出驅(qū)動(dòng)蜂鳴器發(fā)音12.5.1實(shí)現(xiàn)方法LED輸出試驗(yàn)板使用11.0592MHz晶振,可近似認(rèn)為其為12MHz,這樣一個(gè)機(jī)器周期為1μS。欲產(chǎn)生1000μS周期方波脈沖,只需在P1.7以500μS時(shí)間交替輸出高低電平即可。1.T1為方式0,則M1M0=00H。使用定時(shí)功能,C/T=0。GATE=0。T0不用,其有關(guān)位設(shè)為0。這樣,TMOD=00H。2.方式0為13位長(zhǎng)度計(jì)數(shù)結(jié)構(gòu),設(shè)計(jì)數(shù)初值為X,則:(213-X)x1x10-6=500x10-6得X=7692DX=1111000001100B轉(zhuǎn)成16進(jìn)制后,高8位=F0H,低8位=0CH。即TH1=F0H,TL0=0CH。3.由控制寄存器TCON中的TR1位來控制定時(shí)的啟動(dòng)和停止,TR1=1啟動(dòng),TR1=0停止。12.5.2源程序文件在我的文檔中建立一個(gè)文件目錄(S12-1),然后建立一個(gè)S12-1.uv2的工程項(xiàng)目,最后建立源程序文件(S12-1.asm)。輸入下面的程序:序號(hào):1 ORG0000H2 LJMPMAIN 3 ORG030H4MAIN: MOVTMOD,#00H5 MOVTH1,#0F0H6 MOVTL1,#0CH7 MOVIE,#00H8 SETBTR19 LOOP: JBCTF1,LOOP110 AJMPLOOP11 LOOP1: MOVTH1,#0F0H12 MOVTL1,#0CH13 CLRTF114 CPLP1.715 AJMPLOOPEND編譯通過后,將S12-1文件夾中的hex文件燒錄到89C51芯片中,將芯片插入到LED輸出試驗(yàn)板上,接上5V穩(wěn)壓電源,蜂鳴器中立即響起悅耳的1KHz音頻聲。12.5.3程序分析解釋 序號(hào)1:程序開始。序號(hào)2:跳轉(zhuǎn)到MAIN主程序處。序號(hào)3:主程序MAIN從地址0030H開始。序號(hào)4:置T1為方式0。序號(hào)5、6:載入定時(shí)初值。序號(hào)7:禁止中斷。序號(hào)8:?jiǎn)?dòng)定時(shí)器T1。序號(hào)9、10:查詢T1的溢出標(biāo)志TF1。TF1=0定時(shí)未到,轉(zhuǎn)LOOP繼續(xù)查詢;TF1=1定時(shí)到,轉(zhuǎn)LOOP1。序號(hào)11、12:重裝定時(shí)初值。序號(hào)13:清除溢出標(biāo)志。序號(hào)14:P1.7輸出端取反。序號(hào)15:跳轉(zhuǎn)到LOOP處重復(fù)循環(huán)。序號(hào)16:程序結(jié)束。12.6使用定時(shí)器T1以方式2計(jì)數(shù)實(shí)驗(yàn),每計(jì)10次,進(jìn)行累加器加1操作,并送P1口顯示12.6.1實(shí)現(xiàn)方法LED輸出試驗(yàn)板使用11.0592MHz晶振,可近似認(rèn)為其為12MHz,這樣一個(gè)機(jī)器周期為1μS。1.T1為方式2,則M1M0=10H。使用計(jì)數(shù)功能,C/T=1。GATE=0。T0不用,其有關(guān)位設(shè)為0。這樣,TMOD=60H。2.方式2為8位長(zhǎng)度自動(dòng)重裝載計(jì)數(shù)結(jié)構(gòu),設(shè)計(jì)數(shù)初值為:(28-10)=246D=11110110B=F6H,即TH1=0F6H,TL1=0F6H。3.由控制寄存器TCON中的TR1位來控制定時(shí)的啟動(dòng)和停止,TR1=1啟動(dòng),TR1=0停止。12.6.2源程序文件在我的文檔中建立一個(gè)文件目錄(S12-2),然后建立一個(gè)S12-2.uv2的工程項(xiàng)目,最后建立源程序文件(S12-2.asm)。輸入下面的程序:序號(hào):1 ORG0000H2 LJMPMAIN 3 ORG030H4MAIN: MOVTMOD,#60H5 MOVTH1,#0F6H6 MOVTL1,#0F6H7 MOVIE,#00H8 SETBTR19 MOVP1,#00H10 ACALLDEL11 LOOP: JBCTF1,LOOP112 AJMPLOOP13 LOOP1: INCA14 MOVP1,A15 ACALLDEL16 AJMPLOOP17 DEL: MOVR7,#014H18 DEL1: MOVR6,#0FFH19 DEL2:MOVR5,#01FH20 DEL3: DJNZR5,DEL321 DJNZR6,DEL222 DJNZR7,DEL123 RET24 END編譯通過后,將S12-2文件夾中的hex文件燒錄到89C51芯片中,將芯片插入到LED輸出試驗(yàn)板上,接上5V穩(wěn)壓電源,這時(shí)P1口外接的8個(gè)LED均點(diǎn)亮(輸出狀態(tài)為00H)。將LED輸出試驗(yàn)板配帶的試驗(yàn)線一端插到標(biāo)示有“0”電平的排針上,另一端去觸碰標(biāo)示為P3.5(T1)的排針,可發(fā)現(xiàn),每觸碰10次后,P1口按二進(jìn)制加1(→01H→02H…)。有些讀者可能會(huì)發(fā)現(xiàn),觸碰不到10次,P1口也按二進(jìn)制加1。其實(shí)這是由于觸碰時(shí)的抖動(dòng)效應(yīng),可能一下輸入了好幾個(gè)脈沖。這絲毫也不影響我們對(duì)程序的理解。12.6.3程序分析解釋 序號(hào)1:程序開始。序號(hào)2:跳轉(zhuǎn)到MAIN主程序處。序號(hào)3:主程序MAIN從地址0030H開始。序號(hào)4:置T1為方式2。序號(hào)5、6:載入定時(shí)初值。序號(hào)7:禁止中斷。序號(hào)8:?jiǎn)?dòng)定時(shí)器T1。序號(hào)9:點(diǎn)亮P1口的LED。序號(hào)10:調(diào)用延時(shí)子程序,使于觀察LED點(diǎn)亮狀態(tài)。序號(hào)11、12:查詢T1的溢出標(biāo)志TF1。TF1=0定時(shí)未到,轉(zhuǎn)LOOP繼續(xù)查詢;TF1=1定時(shí)到,轉(zhuǎn)LOOP1。序號(hào)13:累加器加1。序號(hào)14:累加器內(nèi)容送P1口顯示。序號(hào)15:調(diào)用延時(shí)子程序,使于觀察LED點(diǎn)亮狀態(tài)。序號(hào)16:跳轉(zhuǎn)到LOOP處重復(fù)循環(huán)。序號(hào)17~23:延時(shí)子程序。序號(hào)24:程序結(jié)束。12.7使用定時(shí)器T1以方式1定時(shí)實(shí)驗(yàn),使P1.0端每隔1分鐘取反一次12.7.1實(shí)現(xiàn)方法LED輸出試驗(yàn)板使用11.0592MHz晶振,可近似認(rèn)為其為12MHz,這樣一個(gè)機(jī)器周期為1μS。在方式1最大定時(shí)時(shí)間=65536x12/(12x106)=65536μS=65.536mS,顯然離1分鐘還差十萬八千里。這里我們將T1設(shè)定為定時(shí)50mS,另設(shè)兩個(gè)軟件計(jì)數(shù)器,采用30H、31H兩個(gè)單元進(jìn)行秒、分計(jì)數(shù)。30H內(nèi)置常數(shù)20,31H內(nèi)置常數(shù)60,這樣50mSx20x60=60000mS=60S=1分鐘。1.T1為方式1,則M1M0=01H。使用定時(shí)功能,C/T=0。GATE=0。T0不用,其有關(guān)位設(shè)為0。這樣,TMOD=10H。2.方式1為16位長(zhǎng)度計(jì)數(shù)結(jié)構(gòu),計(jì)數(shù)初值為:(216-X)x1x10-6=50x10-3,X=65536-50000=15536D=3CB0H,即TH1=3CH,TL1=0B0H。3.由控制寄存器TCON中的TR1位來控制定時(shí)的啟動(dòng)和停止,TR1=1啟動(dòng),TR1=0停止。12.7.2源程序文件在我的文檔中建立一個(gè)文件目錄(S12-3),然后建立一個(gè)S12-3.uv2的工程項(xiàng)目,最后建立源程序文件(S12-3.asm)。輸入下面的程序:序號(hào):1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流課程設(shè)計(jì)實(shí)驗(yàn)
- 種蘑菇課程設(shè)計(jì)
- 中華人民共和國(guó)民法典知識(shí)競(jìng)賽題庫及答案
- 2024幼兒園安全教育工作總結(jié)結(jié)尾(31篇)
- 2024年自來水公司年終工作總結(jié)(35篇)
- 液體混合裝置plc課程設(shè)計(jì)
- 玉雕課程設(shè)計(jì)
- 食品行業(yè)客服工作總結(jié)
- 客房清潔員的工作總結(jié)
- 中醫(yī)科醫(yī)師工作總結(jié)
- 蔣詩萌小品《誰殺死了周日》臺(tái)詞完整版
- ICU病人早期康復(fù)-ppt課件
- 藥品開發(fā)與上量-宿家榮
- 海商法術(shù)語中英對(duì)照
- 北京海淀區(qū)初一上數(shù)學(xué)期末試題(帶標(biāo)準(zhǔn)答案)_
- 化工原理課程設(shè)計(jì)空氣中丙酮的回收工藝操作
- 【家庭自制】 南北香腸配方及28種制作方法
- 廠房施工總結(jié)報(bào)告
- 先進(jìn)物流理念主導(dǎo)和先進(jìn)物流技術(shù)支撐下的日本現(xiàn)代物流
- 建筑小區(qū)生雨水排水系統(tǒng)管道的水力計(jì)算
- 公務(wù)員職務(wù)和級(jí)別工資檔次套改及級(jí)別對(duì)應(yīng)表
評(píng)論
0/150
提交評(píng)論