MCS-51單片機的定時、計數(shù)器及應用_第1頁
MCS-51單片機的定時、計數(shù)器及應用_第2頁
MCS-51單片機的定時、計數(shù)器及應用_第3頁
MCS-51單片機的定時、計數(shù)器及應用_第4頁
MCS-51單片機的定時、計數(shù)器及應用_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第7章章 MCS-51單片機的單片機的定時定時/計數(shù)器及應用計數(shù)器及應用定時定時/計數(shù)器是單片機應用系統(tǒng)的計數(shù)器是單片機應用系統(tǒng)的最重要組成部分之一最重要組成部分之一7.1 7.1 定時定時/ /計數(shù)器及應用概述(計數(shù)器及應用概述(P139P139)定時定時/ /計數(shù)器是單片機的一項重要技術,計數(shù)器是單片機的一項重要技術,MCS-51MCS-51有有T0T0和和T1T1兩個定時兩個定時/ /計數(shù)器,增強型計數(shù)器,增強型5252還有還有T2T2定時定時/ /計數(shù)器。計數(shù)器。 周期是事件出現(xiàn)的事周期是事件出現(xiàn)的事件間隔,用件間隔,用T T表示。表示。 頻率是頻率是1s1s內(nèi)周期性事內(nèi)周期性事件重

2、復的次數(shù),用件重復的次數(shù),用f f表示。表示。 f=1/Tf=1/T1s(1s(秒秒)=1000ms()=1000ms(毫秒毫秒) )1ms(1ms(毫秒毫秒)=1000s()=1000s(微秒微秒) )1s(1s(微秒微秒)=1000ns()=1000ns(納秒納秒) )1ns(1ns(納秒納秒)=1000ps()=1000ps(皮秒皮秒) )7.2.1 7.2.1 定時定時/ /計數(shù)器計數(shù)器T0T0和和T1T1的主要特性的主要特性(P139P139) T0T0和和T1T1是兩個是兩個1616位的可編程定時位的可編程定時/ /計數(shù)器。計數(shù)器。 T0T0和和T1T1的定時功能:對內(nèi)部系統(tǒng)時鐘計

3、數(shù)定時。的定時功能:對內(nèi)部系統(tǒng)時鐘計數(shù)定時。 T0T0和和T1T1的計數(shù)功能:對外部脈沖信號計數(shù)。的計數(shù)功能:對外部脈沖信號計數(shù)。 T0T0有有4 4種工作方式,種工作方式,T1T1有有3 3種工作方式,可通過編種工作方式,可通過編程來設定工作方式。(見程來設定工作方式。(見P141P141表表7.17.1)定時)定時/ /計數(shù)計數(shù)器器T0T0和和T1T1工作方式選擇表。工作方式選擇表。定時定時/ /計數(shù)器的工作原理計數(shù)器的工作原理 T0T0和和T1T1定時定時/ /計數(shù)器的核心分別是計數(shù)器的核心分別是2 2個個1616位加位加1 1計數(shù)計數(shù)器,當計數(shù)到最大值,并再來器,當計數(shù)到最大值,并再來

4、1 1個計數(shù)脈沖時產(chǎn)生個計數(shù)脈沖時產(chǎn)生溢出,使溢出標志位置溢出,使溢出標志位置1 1,產(chǎn)生溢出中斷,通過中,產(chǎn)生溢出中斷,通過中斷處理程序完成設計目的。斷處理程序完成設計目的。 也可通過查詢溢出標志獲知溢出,通過相應的子也可通過查詢溢出標志獲知溢出,通過相應的子程序完成設計目的。程序完成設計目的。 1 1 1 1 1 1 1 1 1 1 1 1 10溢出位溢出位計數(shù)器到了最大值計數(shù)器到了最大值再來再來1 1個脈沖個脈沖 0 0 0 0 0 0 0 0 0 0 0 0 11溢出位置溢出位置1可通過可通過P3.4和和P3.5對對外部脈沖計數(shù)外部脈沖計數(shù)外外部部脈脈沖沖外部脈沖從外部脈沖從P3.4和

5、和P3.5接入,接入,分別由分別由T0和和T1計數(shù)。計數(shù)。定時定時/ /計數(shù)器的結構圖(計數(shù)器的結構圖(P140P140)TH1TL1TH0TL0TCONTMOD微微處處理理器器T1(P3.5)T0(P3.4)機器周期機器周期內(nèi)部總線內(nèi)部總線工作方式工作方式工作方式工作方式啟動啟動啟動啟動溢出溢出溢出溢出定時定時/ /計數(shù)器的結構說明計數(shù)器的結構說明 TH0TH0和和TL0TL0是定時是定時/ /計數(shù)器計數(shù)器T0T0計數(shù)器的高計數(shù)器的高8 8位和低位和低8 8位,位,TH1TH1和和TL1TL1是定時是定時/ /計數(shù)器計數(shù)器T1T1計數(shù)器的高計數(shù)器的高8 8位和低位和低8 8位。位。 工作模式

6、寄存器工作模式寄存器TMODTMOD用來設置定時用來設置定時/ /計數(shù)器計數(shù)器T0T0和和T1T1的的工作方式。工作方式。 控制寄存器控制寄存器TCONTCON用來控制用來控制T0T0和和T1T1的啟動和停止。的啟動和停止。 當定時當定時/ /計數(shù)器用于定時,加計數(shù)器用于定時,加1 1計數(shù)器對內(nèi)部機器周期計數(shù)器對內(nèi)部機器周期計數(shù)(計數(shù)(1s1s)計數(shù)。)計數(shù)。 當定時當定時/ /計數(shù)器用于計數(shù),加計數(shù)器用于計數(shù),加1 1計數(shù)器對單片機引腳計數(shù)器對單片機引腳T0(P3.4)T0(P3.4)或或T1(P3.5)T1(P3.5)上的輸入脈沖計數(shù)。上的輸入脈沖計數(shù)。 無論定時,還是計數(shù),當加無論定時,

7、還是計數(shù),當加1 1計數(shù)器由全計數(shù)器由全1 1再加再加1 1變成變成全全0 0時產(chǎn)生溢出,形成溢出中斷。時產(chǎn)生溢出,形成溢出中斷。定時定時/ /計數(shù)器的初值(計數(shù)器的初值(P140P140) 對于加對于加1 1計數(shù)器,每來計數(shù)器,每來1 1個計數(shù)脈沖就加個計數(shù)脈沖就加1 1,當計數(shù),當計數(shù)器計滿時,由全器計滿時,由全1 1再加再加1 1變成全變成全0 0時產(chǎn)生溢出,形成時產(chǎn)生溢出,形成溢出中斷。如果要計數(shù)溢出中斷。如果要計數(shù) N N 達到溢出達到溢出, ,則要先向計則要先向計數(shù)器設初值數(shù)器設初值X X。初值初值X=(X=(最大計滿值最大計滿值M)+1-M)+1-計數(shù)值計數(shù)值NN 當定時當定時/

8、 /計數(shù)器工作于計數(shù)器工作于R R位計數(shù)方式時,其最大計位計數(shù)方式時,其最大計數(shù)(計滿)值為數(shù)(計滿)值為2 2R R-1-1。 對于對于8 8位計數(shù)器,其最大計滿值為位計數(shù)器,其最大計滿值為2 28 8-1=255-1=255;對于;對于1616位計數(shù)器,其最大計滿值為位計數(shù)器,其最大計滿值為2 21616-1=65535-1=65535;對于;對于1313位計數(shù)器,其最大計滿值為位計數(shù)器,其最大計滿值為2 21313-1=8191-1=8191;片外輸入計數(shù)脈沖頻率的最大值片外輸入計數(shù)脈沖頻率的最大值 對于外部脈沖的計數(shù),在每個機器周期的對于外部脈沖的計數(shù),在每個機器周期的S5P2S5P2

9、對引對引腳腳P3.4P3.4或或P3.5P3.5上的信號采樣,如果在兩個相鄰周期上的信號采樣,如果在兩個相鄰周期出現(xiàn)下降沿,則在下一個機器周期的出現(xiàn)下降沿,則在下一個機器周期的S3P2S3P2加加1 1計數(shù)器計數(shù)器計數(shù)計數(shù)1 1次。因此要次。因此要2 2個機器周期才能計數(shù)個機器周期才能計數(shù)1 1次。也就是次。也就是最少需要最少需要2 2s計數(shù)計數(shù)1次,因此外部輸入脈沖頻率次,因此外部輸入脈沖頻率500KHz。S1S2S3S4S5S6S1S2S3S4S5S61個機器周期個機器周期1個機器周期個機器周期7.2.3 7.2.3 定時定時/ /計數(shù)器計數(shù)器T0T0和和T1T1的相關的相關SFRSFR(

10、P141P141)定時定時/ /計數(shù)器計數(shù)器T0T0和和T1T1的工作模式寄存器的工作模式寄存器TMODTMODGATE C/T M1 M0 GATE C/T M1 M0 TMODb7 b6 b5 b4 b3 b2 b1 b0T0C/T-1:C/T-1:計數(shù)模式,計數(shù)模式,0:0:定時模式。定時模式。M1 M0-M1 M0-設置定時設置定時/ /計數(shù)器的工作方式,計數(shù)器的工作方式,T0T0有有4 4種工種工作方式,作方式,T1T1有有3 3種工作方式。見種工作方式。見P141P141表表7.17.1。GATE-GATE-門控位,控制定時門控位,控制定時/ /計數(shù)器是否受外部中斷計數(shù)器是否受外部

11、中斷請求信號影響。請求信號影響。T1定時定時/ /計數(shù)器計數(shù)器T0T0和和T1T1工作方式選擇工作方式選擇M1M1M0M0方式方式對對T0T0分為兩個分為兩個8 8位獨立計數(shù)器;位獨立計數(shù)器;對對T1T1設置方式設置方式3 3時停止工作時停止工作. .自動重載自動重載8 8位定時器位定時器/ /計數(shù)器計數(shù)器1616位定時器位定時器/ /計數(shù)器計數(shù)器1313位定時器位定時器/ /計數(shù)器計數(shù)器0 01 10 00 01 11 10 00 01 11 12 23 3定時器定時器/ /計數(shù)器的控制寄存器計數(shù)器的控制寄存器TCONTCONTF1 TR1 TF0 TR0 TE1 IT1 IE0 IT0 T

12、CONb7 b6 b5 b4 b3 b2 b1 b0 硬件復位:硬件復位:0 0T1T1溢出中斷:溢出中斷:1 1T1T1中斷中斷標志位標志位T1T1啟停位啟停位T0T0中斷標志位中斷標志位T0T0啟停位啟停位停停T1T1計數(shù):計數(shù):0 0啟啟T1T1計數(shù):計數(shù):1 1 硬件復位:硬件復位:0T0溢出中斷:溢出中斷:1停停T0T0計數(shù):計數(shù):0 0啟啟T0T0計數(shù):計數(shù):1 1觸發(fā)觸發(fā)標志位標志位0 0:INT0INT0電平觸發(fā)電平觸發(fā)1 1:INT0INT0負邊沿觸發(fā)負邊沿觸發(fā)中斷標志位中斷標志位0 0:硬件復位:硬件復位1 1:INT0INT0上有中斷上有中斷觸發(fā)標志位觸發(fā)標志位0:INT

13、1電平觸發(fā)電平觸發(fā)1:INT1負邊沿觸發(fā)負邊沿觸發(fā)中斷標志位中斷標志位0 0:硬件復位:硬件復位1 1:INT1INT1上有中斷上有中斷TCONTCON對于定時對于定時/ /計數(shù)器的控制(計數(shù)器的控制(P142P142) TF1-TF1-定時定時/ /計數(shù)器計數(shù)器T1T1的溢出標志位,當?shù)囊绯鰳酥疚唬擳1T1計滿計滿溢出,溢出,TF1TF1置置1 1,中斷處理后由硬件自動清零。,中斷處理后由硬件自動清零。 TR1-TR1-定時定時/ /計數(shù)器計數(shù)器T1T1的啟動位,的啟動位,TR1=1TR1=1時啟動,時啟動,TR1=0TR1=0時停止。由軟件置位和清零。時停止。由軟件置位和清零。 TF0-

14、TF0-定時定時/ /計數(shù)器計數(shù)器T0T0的溢出標志位,功能與的溢出標志位,功能與TF1TF1相同。相同。 TR0-TR0-定時定時/ /計數(shù)器計數(shù)器T0T0的啟動位,功能與的啟動位,功能與TR1TR1相同。相同。7.2.4 7.2.4 定時定時/ /計數(shù)器計數(shù)器T0T0和和T1T1的工作方式(的工作方式(P142P142)-方式方式0 0和方式和方式1 1 方式方式0 0(M1 M0=00M1 M0=00)和方式)和方式1 1(M1 M0=01M1 M0=01)的區(qū)分只是計數(shù)的)的區(qū)分只是計數(shù)的位數(shù)不同。方式位數(shù)不同。方式0 0是是1313位,方式位,方式1 1是是1616位。位。方式方式0

15、 0使用使用TL0TL0(或(或TL1TL1)的低)的低5 5位和位和TH0TH0(或(或TH1TH1)的)的8 8位,位,TL0TL0(或(或TL1TL1)計滿時向高位)計滿時向高位TH0TH0(TH1TH1)進位。)進位。方式方式1 1使用使用TL0TL0(或(或TL1TL1)的)的8 8位和位和TH0TH0(或(或TH1TH1)的)的8 8位,位,TL0TL0(或(或TL1TL1)計滿時向高位)計滿時向高位TH0TH0(TH1TH1)進位。)進位。計數(shù)脈沖計數(shù)脈沖溢出溢出計數(shù)脈沖計數(shù)脈沖溢出溢出方式方式0 0和方式和方式1 1的邏輯電路結構圖的邏輯電路結構圖振蕩器振蕩器/12TL0 TH

16、0TF0中斷中斷T0TR0GATEINT0控制控制T0(P3.4)-T0(P3.4)-外部計數(shù)脈沖外部計數(shù)脈沖TR0-TR0-啟動計數(shù)啟動計數(shù)GATE-GATE-允許外部中斷信號允許外部中斷信號INT0INT0進入進入方式方式0 0和方式和方式1 1的初值的初值 定時器和計數(shù)器的實質就是計數(shù),當要求輸入定時器和計數(shù)器的實質就是計數(shù),當要求輸入N N個個計數(shù)脈沖產(chǎn)生中斷處理,要給計數(shù)器事先賦初值。計數(shù)脈沖產(chǎn)生中斷處理,要給計數(shù)器事先賦初值。 方式方式0 0的最大初值的最大初值X X為:為:X=8192-NX=8192-N 方式方式1 1的最大初值為:的最大初值為:X=65536-NX=65536

17、-N 方式方式0 0和方式和方式1 1,給,給TL0 TH0TL0 TH0賦初值,當計數(shù)器計滿賦初值,當計數(shù)器計滿溢出,產(chǎn)生溢出中斷,計數(shù)脈沖仍不斷的進入,溢出,產(chǎn)生溢出中斷,計數(shù)脈沖仍不斷的進入,此時會從全此時會從全0 0開始計數(shù),硬件不重載。因此如果需開始計數(shù),硬件不重載。因此如果需要重新實現(xiàn)要重新實現(xiàn)N N個計數(shù)時,就要用軟件再重新賦初值。個計數(shù)時,就要用軟件再重新賦初值。定時定時/ /計數(shù)器計數(shù)器T0T0和和T1T1的工作方式的工作方式2 2(P143P143)-8-8位自動重載初值位自動重載初值振蕩器振蕩器/12TL0(8位位) TF0中斷中斷T0TR0GATEINT0控制控制TH0

18、(8位位) 重載重載TL0TL0(或(或TL1TL1)用于計數(shù),)用于計數(shù),TH0TH0(或(或TH1TH1)用于保存初值,計滿)用于保存初值,計滿溢出時硬件自動將溢出時硬件自動將TH0TH0的值重新裝入的值重新裝入TL0TL0。自動裝載的初值。自動裝載的初值: :X=256-NX=256-N定時定時/ /計數(shù)器計數(shù)器T0T0的工作方式的工作方式3 3(P143P143) 方式方式3 3只能用于定時只能用于定時/ /計數(shù)器計數(shù)器T0T0,將,將T0T0分為分為TL0TL0和和TH0TH0兩部分。兩部分。 其中其中TL0TL0可以作為可以作為8 8位定時位定時/ /計數(shù)器使用,而計數(shù)器使用,而T

19、H0TH0固固定只能做定時器用。定只能做定時器用。 使用方式使用方式3 3,計數(shù)器最大值和初值的設置方式與方,計數(shù)器最大值和初值的設置方式與方式式2 2完全相同。完全相同。7.2.5 7.2.5 定時定時/ /計數(shù)器計數(shù)器T0T0和和T1T1的編程(的編程(P144P144) MCS-51MCS-51單片機定時單片機定時/ /計數(shù)器編程的過程:計數(shù)器編程的過程:1) 1) 選擇工作方式,寫入方式控制寄存器選擇工作方式,寫入方式控制寄存器TMODTMOD。2) 2) 確定計數(shù)值,并求得定時確定計數(shù)值,并求得定時/ /計數(shù)器的初值,計數(shù)器的初值,寫入初值寄存器。寫入初值寄存器。3) 3) 開放定時

20、開放定時/ /計數(shù)器的中斷允許(開中斷),計數(shù)器的中斷允許(開中斷),編寫中斷服務程序。編寫中斷服務程序。4) 4) 設置控制寄存器設置控制寄存器TCONTCON的值,啟動定時的值,啟動定時/ /計數(shù)計數(shù)器。器。5) 5) 等待定時等待定時/ /計數(shù)器計數(shù)時間到(溢出),執(zhí)計數(shù)器計數(shù)時間到(溢出),執(zhí)行中斷服務程序。也可采用查詢溢出標志方式,行中斷服務程序。也可采用查詢溢出標志方式,但要軟件清零溢出標志。但要軟件清零溢出標志。定時定時/ /計數(shù)器的應用計數(shù)器的應用 例例7.17.1(P144P144) 題目:單片機的系統(tǒng)時鐘是題目:單片機的系統(tǒng)時鐘是12MHz12MHz,用定時,用定時/ /計

21、數(shù)器計數(shù)器T0T0編程實現(xiàn)從引腳編程實現(xiàn)從引腳P1.0P1.0輸出周期為輸出周期為500s500s的方波。的方波。 設計:定時器對內(nèi)部機器周期(設計:定時器對內(nèi)部機器周期(1s1s)計數(shù),當定)計數(shù),當定時時/ /計數(shù)器工作在方式計數(shù)器工作在方式2 2(8 8位自動重載),最大定位自動重載),最大定時時間是時時間是256s256s,滿足,滿足250s250s的定時要求。的定時要求。 將將T0T0設置為定時器方式且為方式設置為定時器方式且為方式2 2 ,對工作模式寄,對工作模式寄存器存器TMODTMOD的設置是的設置是C/T=0C/T=0和和M1 M2=10M1 M2=10,也即,也即00000

22、010B00000010B(02H02H)。)。8 8位計數(shù)器的初值:位計數(shù)器的初值:X=256-250=6X=256-250=6采用中斷處理方式的匯編程序(采用中斷處理方式的匯編程序(P145)ORG 0000HLJMP MAINORG 000BH;中斷處理程序中斷處理程序CPL P1.0; 翻轉輸出翻轉輸出RETI ; 中斷返回中斷返回 ORG 0030H; 主程序主程序MAIN:MOV TMOD,#02H;定時器定時器T0工作方式工作方式2 MOV TH0,#06H;初值保存初值保存 MOV TL0,#06H;賦初值賦初值 SETB EA;開放總中斷開放總中斷 SETB ET0;開放開放

23、T0溢出中斷溢出中斷 SETB TR0;啟動啟動T0 SJMP $;原地踏步原地踏步 END 采用中斷處理方式的采用中斷處理方式的C51程序(程序(P145)#include #include sbit SQ=P10 ;int main(void) TMOD=0 x02 ;/T0定時器方定時器方式式2TH0=0 x06 ;/保存初值保存初值TL0=0 x06 ;/賦初值賦初值EA=1 ;/開總中斷開總中斷ET0=1 ;/開開T0溢出中斷溢出中斷TR0=1 ;/啟動啟動T0while (1) ;/原地踏步原地踏步 void time0_int(void) interrupt 1/中斷服務程序中斷

24、服務程序SQ=!SQ ;/輸出翻轉輸出翻轉采用查詢方式的匯編程序(采用查詢方式的匯編程序(P145) ORG 0000H LJMP MAIN ORG 0100H ;主程序主程序MAIN: MOV TMOD,#02H ;定定時器時器T0工作方式工作方式2 MOV TH0,#06 ;保存初值保存初值 MOV TL0,#06 ;賦初值賦初值 SETB TR0 ;啟動啟動T0LOOP:JBC TF0,NEXT ;查查詢詢T0計數(shù)溢出計數(shù)溢出 SJMP LOOP ;循環(huán)循環(huán)NEXT:CPL P1.0 ;翻轉輸出翻轉輸出 SJMP LOOP ;循環(huán)循環(huán) END采用查詢方式的采用查詢方式的C51程序(程序(

25、P145)#include sbit SQ=P10;int main(void)TMOD=0 x02 ;/T0定時器工定時器工作方式作方式2TH0=0 x06 ;/保存初值保存初值TL0=0 x06 ;/賦初值賦初值TR0=1 ;/啟動啟動T0while(1)if (TF0) /查詢查詢T0計數(shù)溢出計數(shù)溢出 TF0=0 ;/清零標志清零標志 SQ=!SQ ;/輸出翻轉輸出翻轉 加大定時時間的設計(加大定時時間的設計(P145P145) 對于系統(tǒng)時鐘為對于系統(tǒng)時鐘為12MHz12MHz的的MCS-51MCS-51,1 1個機器周期就個機器周期就是是1s1s。 如果定時計數(shù)值大于如果定時計數(shù)值大于

26、256256(256s256s),方式),方式2 2不能不能直接處理;如果定時計數(shù)值小于直接處理;如果定時計數(shù)值小于81928192(8192s8192s),),可用方式可用方式0 0處理;如果定時計數(shù)值小于處理;如果定時計數(shù)值小于6553665536( 65536s65536s),可用方式),可用方式1 1處理。處理。 如果定時計數(shù)值大于如果定時計數(shù)值大于6553665536,可用,可用2 2個定時器共同個定時器共同處理,或處理,或1 1個定時器配合軟件來處理。個定時器配合軟件來處理。加大定時時間的加大定時時間的例例7.2 (P145P145) 例例7.27.2:系統(tǒng)時鐘為:系統(tǒng)時鐘為12M

27、Hz12MHz,編程實現(xiàn)從,編程實現(xiàn)從P1.1P1.1輸出輸出周期為周期為1s1s的方波。的方波。 此例要求產(chǎn)生此例要求產(chǎn)生500ms500ms的周期性定時,在引腳的周期性定時,在引腳P1.1P1.1上上翻轉輸出。翻轉輸出。 由于定時時間較長(計數(shù)值大),用由于定時時間較長(計數(shù)值大),用1 1個定時器不個定時器不能直接實現(xiàn),可用定時器能直接實現(xiàn),可用定時器T0T0產(chǎn)生產(chǎn)生50ms50ms的定時,再的定時,再用用1 1個寄存器個寄存器R1R1對對50ms50ms計數(shù)計數(shù)1010次。次。 或者再用定時器或者再用定時器T1T1對對50ms50ms計數(shù)計數(shù)1010次來實現(xiàn)。次來實現(xiàn)。 這里將這里將T

28、0T0設置為定時器并選用方式設置為定時器并選用方式1 1(1616位不自動位不自動重載),對工作模式寄存器重載),對工作模式寄存器TMODTMOD的設置是的設置是C/T=0C/T=0和和M1 M2=01M1 M2=01,也即,也即00000001B00000001B(01H01H)。)。1616位計數(shù)器位計數(shù)器的初值:的初值:X=65535-50000=15536X=65535-50000=15536 TH0=15536/256=60,TL0=15536%256=176TH0=15536/256=60,TL0=15536%256=176。加大定時時間的加大定時時間的例例7.2 (P145P14

29、5) 例例7.27.2:系統(tǒng)時鐘:系統(tǒng)時鐘12MHz12MHz,編程實現(xiàn)從,編程實現(xiàn)從P1.1P1.1輸出周期為輸出周期為1s1s的方波。要求產(chǎn)生的方波。要求產(chǎn)生500ms500ms的周期性定時,在引腳的周期性定時,在引腳P1.1P1.1上翻轉輸出。上翻轉輸出。 由于定時時間較長(計數(shù)值大),用由于定時時間較長(計數(shù)值大),用1 1個定時器不能個定時器不能直接實現(xiàn),可用定時器直接實現(xiàn),可用定時器T0T0產(chǎn)生產(chǎn)生50ms50ms的定時,再用的定時,再用1 1個個寄存器寄存器R2R2做軟件計數(shù)器對做軟件計數(shù)器對50ms50ms計數(shù)計數(shù)1010次。次。 或者再用定時器或者再用定時器T1T1對對50m

30、s50ms計數(shù)計數(shù)1010次來實現(xiàn)。次來實現(xiàn)。 這里將這里將T0T0設置為定時器并選用方式設置為定時器并選用方式1 1(1616位不自動重位不自動重載),對工作模式寄存器載),對工作模式寄存器TMODTMOD的設置是的設置是C/T=0C/T=0和和M1 M1 M2=01M2=01,也即,也即00000001B00000001B(01H01H)。)。1616位計數(shù)器的初值:位計數(shù)器的初值:X=65535-50000=15536X=65535-50000=15536 TH0=15536/256=60,TL0=15536%256=176TH0=15536/256=60,TL0=15536%256=1

31、76。用寄存器用寄存器R2R2做軟件計數(shù),中斷處理。匯編程序。做軟件計數(shù),中斷處理。匯編程序。 ORG 0000H LJMP MAIN ORG 000BH;T0中斷入口中斷入口 LJMP INTT0 ;500ms ORG 0100HMAIN:MOV TMOD,#01H; T0定定時器工作方式時器工作方式1 MOV TH0,#60 ;賦初值賦初值 MOV TL0,#176 ;賦初值賦初值 MOV R2,#10 ;軟計數(shù)器軟計數(shù)器 SETB EA ;開總中斷開總中斷 SETB ET0 ;允許允許T0中斷中斷 SETB TR0 ;啟動啟動T0 SJMP $ ;原地踏步原地踏步INTT0: MOV T

32、H0,#60;軟件重載軟件重載 MOV TL0,#176;軟件重載軟件重載 DJNZ R2,NEXT;軟計數(shù)器軟計數(shù)器減減1,不夠不夠10次返回。次返回。 CPL p1.1;夠夠10次輸出翻轉次輸出翻轉 MOV R2,#10;軟計數(shù)器重載軟計數(shù)器重載NEXT:RETI ;中斷返回中斷返回 END用寄存器用寄存器R2R2做軟件計數(shù),中斷處理。做軟件計數(shù),中斷處理。C51C51程序。程序。#include#includesbit SQ=P11 ;unsigned char i;int main(void) TMOD=0 x01;/定時器定時器T0方方式式1 TH0=60;TL0=176;/賦初值賦

33、初值 EA=1 ;/開總中斷開總中斷 ET0=1 ;/開開T0中斷中斷 i=0 ;/軟件計數(shù)賦初值軟件計數(shù)賦初值 TR0=1 ;/啟動啟動T0while(1) ;/原地踏步原地踏步void time0_int(void) interrupt 1/T0中斷處理中斷處理TH0=60;TL0=176 ;/重載重載i+ ;/軟件計數(shù)軟件計數(shù)if(i9) SQ=!SQ;/輸出翻轉輸出翻轉 i=0;/軟件計數(shù)重載軟件計數(shù)重載 用定時器用定時器T0+T0+計數(shù)器計數(shù)器T1,T1,中斷處理中斷處理 T0T0工作于定時器方式,工作于定時器方式,T1T1工作于計數(shù)器方式。工作于計數(shù)器方式。T1T1的計數(shù)脈沖通過的計數(shù)脈沖通過P3.5P3.5(T1T1的計數(shù)外脈沖輸入)。的計數(shù)外脈沖輸入)。T1T1的計數(shù)脈沖由的計數(shù)脈沖由T0T0定時器提供。定時器提供。 定時器定時器T0T0定時定時250s250s,工作于方式,工作于方式2 2(8 8位重載),位重載),初值為初值為6 6,定時時間到時對,定時時間到時對P3.5P3.5引腳(引腳(T1T1的計數(shù)脈的計數(shù)脈沖輸入)取反沖輸入)取反1 1次,使次,使P3.5P3.5每每500s500s產(chǎn)生產(chǎn)生1 1個計數(shù)個計數(shù)脈沖。產(chǎn)生脈沖。產(chǎn)生500ms500ms只需要只需要T1T1計數(shù)計數(shù)10001000次。次。 計數(shù)器計數(shù)器T1T1工作于方式工作于方式

溫馨提示

  • 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

提交評論