版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第6章章 MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器目目 錄錄6.1 MCS-51定時(shí)器定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)及原理計(jì)數(shù)器的結(jié)構(gòu)及原理6.2 定時(shí)器定時(shí)器T0、T16.3 定時(shí)器定時(shí)器T26.4 定時(shí)器應(yīng)用舉例定時(shí)器應(yīng)用舉例本章討論本章討論MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)和工作原計(jì)數(shù)器的結(jié)構(gòu)和工作原理,內(nèi)容主要有理,內(nèi)容主要有MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器T0、T1、T2的內(nèi)部的內(nèi)部構(gòu)造,工作方式和工作模式的選擇和應(yīng)用。構(gòu)造,工作方式和工作模式的選擇和應(yīng)用。本章是單片機(jī)的主要內(nèi)容,也是第七章學(xué)習(xí)的前提。本章是單片機(jī)的主要內(nèi)容,也是第七章學(xué)習(xí)的前提。三種方法實(shí)現(xiàn)定
2、時(shí)或計(jì)數(shù) 硬件法:完全由硬件電路完成,不占用CPU的時(shí)間。但當(dāng)要求改變定時(shí)時(shí)間時(shí)只能改變電路中的元件參數(shù)。 軟件法:執(zhí)行一段循環(huán)程序來進(jìn)行時(shí)間延時(shí),優(yōu)點(diǎn)是無額外的硬件開銷,但犧牲了CPU的時(shí)間,且不容易得到比較精確的時(shí)間。 可編程定時(shí)器/計(jì)數(shù)器:可以通過軟件編程來實(shí)現(xiàn)定時(shí)時(shí)間的改變,通過中斷或查詢來完成定時(shí)或計(jì)數(shù)功能,當(dāng)定時(shí)時(shí)間到或計(jì)數(shù)滿時(shí)置位溢出標(biāo)志。 本章主要討論第三種方式。6.1 MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)計(jì)數(shù)器的結(jié)構(gòu)及工作原理構(gòu)及工作原理主要內(nèi)容主要內(nèi)容6.1.1 MCS-51單片機(jī)定時(shí)器的內(nèi)部結(jié)構(gòu)單片機(jī)定時(shí)器的內(nèi)部結(jié)構(gòu)6.1.2 MCS-51單片機(jī)定時(shí)器的工作原
3、理單片機(jī)定時(shí)器的工作原理6.1.3 定時(shí)器定時(shí)器/計(jì)數(shù)器內(nèi)部的特殊寄存器計(jì)數(shù)器內(nèi)部的特殊寄存器6.1.1 MCS-51單片機(jī)定時(shí)器的內(nèi)部結(jié)構(gòu)單片機(jī)定時(shí)器的內(nèi)部結(jié)構(gòu) 89C52單片機(jī)內(nèi)部的定時(shí)器單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器邏輯結(jié)計(jì)數(shù)器邏輯結(jié)構(gòu)如下圖所示:構(gòu)如下圖所示: 圖圖6-1 89C51定時(shí)器結(jié)構(gòu)定時(shí)器結(jié)構(gòu)從圖上可以看出,從圖上可以看出,MCS-51的定時(shí)器的定時(shí)器/計(jì)數(shù)器主計(jì)數(shù)器主要有以下部分構(gòu)成要有以下部分構(gòu)成: 兩個(gè)兩個(gè)16位的可編程定時(shí)器位的可編程定時(shí)器/計(jì)數(shù)器:計(jì)數(shù)器:T0、T1,既,既可以工作在定時(shí)工作方式,也可以工作在計(jì)數(shù)工作可以工作在定時(shí)工作方式,也可以工作在計(jì)數(shù)工作方式。方式
4、。 每個(gè)定時(shí)器均有兩部分構(gòu)成:每個(gè)定時(shí)器均有兩部分構(gòu)成:THx和和TLx 特殊功能寄存器特殊功能寄存器TMOD和和TCON 對(duì)對(duì)T0和和T1進(jìn)行進(jìn)行控制??刂?。 引腳引腳P3.4 、 P3.5輸入計(jì)數(shù)脈沖。輸入計(jì)數(shù)脈沖。 特殊功能寄存器之間通過內(nèi)部總線和控制邏輯特殊功能寄存器之間通過內(nèi)部總線和控制邏輯電路連接起來。電路連接起來。 定時(shí)器功能定時(shí)器功能 每個(gè)定時(shí)器都可由軟件設(shè)置為定時(shí)工作方式或計(jì)數(shù)工作方式或其他靈活多樣的可控功能方式。這些功能由特殊功能寄存器TMOD和TCON所控制。 定時(shí)器工作不占用CPU時(shí)間,除非定時(shí)器/計(jì)數(shù)器溢出,才能中斷CPU的當(dāng)前操作。 每個(gè)定時(shí)器/計(jì)數(shù)器還有四種工作模
5、式。其中模式0-2對(duì)T0和T1是一樣的,模式3對(duì)兩者不同。定時(shí)工作方式定時(shí)工作方式定時(shí)器計(jì)數(shù)89C51片內(nèi)振蕩器輸出經(jīng)12分頻后的脈沖,即每個(gè)機(jī)器周期使定時(shí)器(T0或T1)的數(shù)值加1直至計(jì)滿溢出。當(dāng)89C51采用12MHz晶振時(shí),一個(gè)機(jī)器周期為1s,計(jì)數(shù)頻率為1MHz。計(jì)數(shù)工作方式計(jì)數(shù)工作方式 通過引腳T0(P3.4)和T1(P3.5)對(duì)外部脈沖信號(hào)計(jì)數(shù)。當(dāng)輸入脈沖信號(hào)產(chǎn)生由1至0的下降沿時(shí)定時(shí)器的值加1。 CPU檢測(cè)一個(gè)1至0的跳變需要兩個(gè)機(jī)器周期,故最高計(jì)數(shù)頻率為振蕩頻率的1/24。 為了確保某個(gè)電平在變化之前被采樣一次,要求電平保持時(shí)間至少是一個(gè)完整的機(jī)器周期。1、T0、T1 的方式寄存
6、器的方式寄存器TMOD 復(fù)位后,復(fù)位后,TMOD=00H,不可位尋址不可位尋址。其格式如圖。其格式如圖6-3所所示:示:TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0圖圖6-3 定時(shí)器方式寄存器定時(shí)器方式寄存器TMOD GATE 門控位。門控位。 GATE1時(shí),由外部中斷引腳時(shí),由外部中斷引腳INT0、INT1和和TR0、TR1共同來啟動(dòng)定時(shí)器。共同來啟動(dòng)定時(shí)器。當(dāng)當(dāng)INT0引腳為引腳為高電平高電平時(shí),時(shí),TR0置位,啟動(dòng)定時(shí)器置位,啟動(dòng)定時(shí)器T0。當(dāng)當(dāng)INT1引腳為高電平時(shí),引腳為高電平時(shí),TR1置位置位,啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器T1。GATE0時(shí)
7、,僅由時(shí),僅由TR0和和TR1置位置位來來啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器T0和和T1。C/T定時(shí)或計(jì)數(shù)方式選擇位定時(shí)或計(jì)數(shù)方式選擇位 。C/T0時(shí),選擇時(shí),選擇定時(shí)定時(shí)功能功能 。TimerC/T1時(shí),選擇時(shí),選擇計(jì)數(shù)計(jì)數(shù)方式。方式。Counter通過引腳通過引腳T0(P3.4)和)和T1(P3.5) 對(duì)外部信對(duì)外部信號(hào)進(jìn)行計(jì)數(shù)。號(hào)進(jìn)行計(jì)數(shù)。 在每個(gè)機(jī)器周期的在每個(gè)機(jī)器周期的S5P2期間,期間,CPU采樣采樣引腳的輸入電平引腳的輸入電平。若前一機(jī)器周期采樣值為。若前一機(jī)器周期采樣值為1,下一機(jī)器周期采樣值為,下一機(jī)器周期采樣值為0,則計(jì)數(shù)器增,則計(jì)數(shù)器增1,此后的機(jī)器周期此后的機(jī)器周期S3P1期間,新的
8、計(jì)數(shù)值裝入期間,新的計(jì)數(shù)值裝入計(jì)數(shù)器。計(jì)數(shù)器。 M1、M0 工作模式選擇位。工作模式選擇位。 由于有由于有M1和和M0兩位,可以有四種工作方式。兩位,可以有四種工作方式。T0有有4種種工作模式工作模式,T1有有3種工作模式種工作模式。選擇情況如表。選擇情況如表6-1所示。所示。 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1不能工作在模式不能工作在模式3。設(shè)置。設(shè)置T1的的M1M0=11,T1將停止工作。將停止工作。表表6-1 定時(shí)器定時(shí)器/計(jì)數(shù)器的工作模式計(jì)數(shù)器的工作模式M1M0 工作模式工作模式功能介紹功能介紹00模式模式013位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器 01模式模式116位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)
9、器10模式模式28位自動(dòng)重置定時(shí)器位自動(dòng)重置定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器11模式模式3定時(shí)器定時(shí)器0:TL0可做可做8位定時(shí)器位定時(shí)器/計(jì)數(shù)器,計(jì)數(shù)器,TH0為為8位定時(shí)器位定時(shí)器定時(shí)器定時(shí)器1:不工作。:不工作。圖圖6-6 TMOD各位定義及具體的意義各位定義及具體的意義2、T0、T1 的控制寄存器的控制寄存器TCON 此寄存器可以位尋址和字節(jié)尋址。此寄存器可以位尋址和字節(jié)尋址。TCON(88H)D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1IT1IE0IT0圖圖6-3 定時(shí)器的控制寄存器定時(shí)器的控制寄存器 TR1(TCON.6)T1運(yùn)行控制位。 Timer Run 可通過軟
10、件置1(TR1=1)或清0(TR1=0)來啟動(dòng)或 關(guān)閉 T1。 在程序中用指令“SETB TR1”使TR1位置1,定時(shí)器T1便開始計(jì)數(shù)。CLR TR1 TR0(TCON.4)T0運(yùn)行控制位。其功能和操作情況同TR1。GATE=0時(shí),用軟件使TR1置1啟動(dòng)定時(shí)器1,若用軟件使TR1清0,則停止定時(shí)器1。GATE=1時(shí),用軟件TR1置1,如果檢測(cè)到引腳INT1(P3.3)輸入高電平時(shí)啟動(dòng)定時(shí)器1。6.2 定時(shí)器定時(shí)器T0、T1主要內(nèi)容主要內(nèi)容6.2.1 定時(shí)器定時(shí)器T0、T1模式模式0下的結(jié)構(gòu)下的結(jié)構(gòu)6.2.2 定時(shí)器定時(shí)器T0、T1模式模式1下的結(jié)構(gòu)下的結(jié)構(gòu)6.2.3 定時(shí)器定時(shí)器T0、T1模式
11、模式2下的結(jié)構(gòu)下的結(jié)構(gòu)6.2.4 定時(shí)器定時(shí)器T0、T1模式模式3下的結(jié)構(gòu)下的結(jié)構(gòu)重點(diǎn):模式0、1、2的工作原理及結(jié)構(gòu)難點(diǎn):定時(shí)初值的概念及計(jì)算模式0結(jié)構(gòu)模式1結(jié)構(gòu)模式2結(jié)構(gòu)6.2.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0、T1的模式的模式0當(dāng)當(dāng)TMOD中的中的M10、M00時(shí),選定模式時(shí),選定模式0。模式模式0時(shí)的結(jié)構(gòu)如圖時(shí)的結(jié)構(gòu)如圖6-5所示。所示。 計(jì)數(shù)寄存器由計(jì)數(shù)寄存器由13位組成位組成。TH0高八位和高八位和TL0的低的低5位構(gòu)成。位構(gòu)成。TL0的高的高3位未用。位未用。 圖圖6-5 模式模式0的邏輯結(jié)構(gòu)圖的邏輯結(jié)構(gòu)圖1. C/T=1時(shí)工作于計(jì)數(shù)方式,外部計(jì)數(shù)脈沖由P3.4引腳輸入。2.
12、C/T=0時(shí)工作于定時(shí)方式,計(jì)數(shù)脈沖為內(nèi)部脈沖,其周期是一個(gè)機(jī)器周期。3. GATE=0時(shí)系統(tǒng)的啟動(dòng)只受TR0控制。TR0=1啟動(dòng)。4. 最大值和最大計(jì)數(shù)值。213=81925. 計(jì)數(shù)溢出后TL0=TH0=00H6. 定時(shí)初值與中斷模式模式0 0工作特點(diǎn)工作特點(diǎn)定時(shí)初值計(jì)算定時(shí)初值計(jì)算 做定時(shí)器時(shí),其定時(shí)時(shí)間的計(jì)算公式如下:做定時(shí)器時(shí),其定時(shí)時(shí)間的計(jì)算公式如下:定時(shí)時(shí)間為: t=(213T0初值)12/fosc最大定時(shí)時(shí)間最大定時(shí)時(shí)間(初值為初值為0)為:為:213 12/fosc 定時(shí)初值為:T0初值 = 213-tfosc/126.2.2 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0、T1的模式的模式1
13、 當(dāng)當(dāng)TMOD中的中的M10、M01時(shí),選擇模式時(shí),選擇模式1。模式模式1時(shí)的結(jié)構(gòu)如圖下圖所示。時(shí)的結(jié)構(gòu)如圖下圖所示。 計(jì)數(shù)寄存器由計(jì)數(shù)寄存器由16位組成:位組成:TH0的的8位和位和TL0的的8位構(gòu)成。位構(gòu)成。二、模式二、模式 1 工作特點(diǎn)工作特點(diǎn)1. 基本功能等同于模式0,只有計(jì)數(shù)寬度不同。C/T=1,工作于計(jì)數(shù)方式,C/T=0時(shí)工作于定時(shí)方式。2. GATE=0時(shí)系統(tǒng)的啟動(dòng)只受TR0控制。TR0=1啟動(dòng)。3. 計(jì)數(shù)最大值 216=655364. 計(jì)數(shù)溢出后TL0=TH0=00H5. 定時(shí)初值 定時(shí)時(shí)間為:t=(216-T0初值)12/fosc T0初值= 216-tfosc/126.2.
14、3 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0、T1的模式的模式2當(dāng)當(dāng)TMOD中的中的M11、M00時(shí),選定模式時(shí),選定模式2。模式模式2時(shí)的結(jié)構(gòu)如圖時(shí)的結(jié)構(gòu)如圖6-7所示。所示。TL0作作8位的定時(shí)器位的定時(shí)器/計(jì)數(shù)器用,計(jì)數(shù)器用,TH0作作8位的位的初值寄存器用,用于保存初值。初值寄存器用,用于保存初值。圖圖6-7 模式模式2的邏輯結(jié)構(gòu)圖的邏輯結(jié)構(gòu)圖該模式的計(jì)數(shù)寬度為8位定時(shí)器/計(jì)數(shù)器。TL0計(jì)數(shù)最大值為:28=256在程序初始化時(shí),TL0和TH0由軟件賦予相同的初值。當(dāng)TL0計(jì)數(shù)溢出時(shí)TH0的初值送到寄存器TL0中。初值能夠自動(dòng)重裝。定時(shí)初值 定時(shí)時(shí)間為:t=(28-T0初值)12/fosc T0初
15、值= 28-tfosc/12模式模式 2 工作特點(diǎn)工作特點(diǎn)6.2.4 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0的模式的模式3TMOD中的中的M1l、M01時(shí),選定模式時(shí),選定模式3。模式模式3的的T1:停止工作。停止工作。模式模式3的的T0:其中的其中的TL0為為8位定時(shí)器位定時(shí)器/計(jì)數(shù)器,計(jì)數(shù)器,TH0為為8位定時(shí)器,邏輯結(jié)構(gòu)如下圖所示。位定時(shí)器,邏輯結(jié)構(gòu)如下圖所示。 模式3下T0邏輯結(jié)構(gòu) T0中的中的TL0:占用占用T0的所有控制位,例如的所有控制位,例如T0的的GATE、運(yùn)行控制位運(yùn)行控制位TR0、脈沖輸入引腳、脈沖輸入引腳(P3.4)、計(jì)數(shù)溢出標(biāo)志計(jì)數(shù)溢出標(biāo)志位位TF0和和中斷矢量中斷矢量(地址
16、為地址為000BH)等。等。 T0中的中的TH0:占用:占用T1的控制位的控制位,包括運(yùn)行控制位包括運(yùn)行控制位TR1計(jì)計(jì)數(shù)溢出標(biāo)志位數(shù)溢出標(biāo)志位TF1和和中斷矢量中斷矢量(地址為地址為001BH)等。等。T0方式方式3時(shí)的時(shí)的T1: T1可以選擇方式可以選擇方式0、1或或2。 T1的結(jié)構(gòu)如下圖所示,此時(shí)計(jì)數(shù)溢出標(biāo)志的結(jié)構(gòu)如下圖所示,此時(shí)計(jì)數(shù)溢出標(biāo)志位位TF1及及T1中斷矢量中斷矢量(地址為地址為001BH)已被已被TH0所所占用,所以占用,所以T1僅能作為波特率發(fā)生器或其它不僅能作為波特率發(fā)生器或其它不用中斷的地方用中斷的地方。T1串行口波特率發(fā)生器時(shí),其計(jì)數(shù)溢出直串行口波特率發(fā)生器時(shí),其計(jì)數(shù)
17、溢出直接送至串行口。接送至串行口。只需設(shè)置好工作方式,串行口只需設(shè)置好工作方式,串行口波特率發(fā)生器自動(dòng)開始運(yùn)行。波特率發(fā)生器自動(dòng)開始運(yùn)行。如果要停止如果要停止T1,只需編程將,只需編程將TMOD中中T1的的M1、M0位設(shè)置為位設(shè)置為1、1即可。即可。T0方式方式3時(shí)的時(shí)的T1(c)T1方式2T0模式模式3時(shí)時(shí)T1的的結(jié)構(gòu)結(jié)構(gòu)T0模式模式3時(shí)時(shí)TH0的結(jié)構(gòu)的結(jié)構(gòu)6.2.4 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0的模式的模式3例例6-1 設(shè)單片機(jī)的振蕩頻率為設(shè)單片機(jī)的振蕩頻率為12MHz,用,用定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0的模式的模式1編程,在編程,在P1.0引腳產(chǎn)引腳產(chǎn)生一個(gè)周期為生一個(gè)周期為1000s
18、的方波,定時(shí)器的方波,定時(shí)器T0采用采用中斷的處理方式。中斷的處理方式。分析:定時(shí)器的設(shè)置一般有如下方面內(nèi)容。分析:定時(shí)器的設(shè)置一般有如下方面內(nèi)容。工作方式選擇。工作方式選擇。當(dāng)需要產(chǎn)生波形信號(hào)時(shí),當(dāng)需要產(chǎn)生波形信號(hào)時(shí),往往使用定時(shí)器往往使用定時(shí)器/計(jì)數(shù)器的定時(shí)功能,定時(shí)時(shí)計(jì)數(shù)器的定時(shí)功能,定時(shí)時(shí)間到了對(duì)輸出端進(jìn)行相應(yīng)的處理即可。間到了對(duì)輸出端進(jìn)行相應(yīng)的處理即可。 工作模式選擇,根據(jù)定時(shí)時(shí)間長(zhǎng)短選擇工工作模式選擇,根據(jù)定時(shí)時(shí)間長(zhǎng)短選擇工作模式。作模式。定時(shí)時(shí)間長(zhǎng)短依次為定時(shí)時(shí)間長(zhǎng)短依次為模式模式1模式模式0模式模式2。如果。如果產(chǎn)生周期性信號(hào),產(chǎn)生周期性信號(hào),首選首選模式模式2,不用重裝初值。
19、不用重裝初值。6.2.4 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0的模式的模式3 定時(shí)時(shí)間計(jì)算:定時(shí)時(shí)間計(jì)算:周期為周期為1000s的方波要的方波要求定時(shí)器的定時(shí)時(shí)間為求定時(shí)器的定時(shí)時(shí)間為500s,每次溢出時(shí),每次溢出時(shí),將將P1.0引腳電平的狀態(tài)取反,就可以在引腳電平的狀態(tài)取反,就可以在P1.0上產(chǎn)生所需要的方波。上產(chǎn)生所需要的方波。 定時(shí)初值計(jì)算:定時(shí)初值計(jì)算:振蕩頻率為振蕩頻率為12MHz,則,則機(jī)器周期為機(jī)器周期為1s,設(shè)計(jì)數(shù)初值為,設(shè)計(jì)數(shù)初值為X,則,則(65536-X)1s=500s得得X=65036=0FE0CH定時(shí)器的初值為:定時(shí)器的初值為:TH0=0FEH,TL0=0CH C語言程序語
20、言程序:#include /包含特殊功能寄存器庫包含特殊功能寄存器庫sbit P1_0=P10; /進(jìn)行位定義進(jìn)行位定義void main( )TMOD=0 x01; /T0做定時(shí)器,工作在模式做定時(shí)器,工作在模式1TL0=0 x0c;TH0=0 xfe;/設(shè)置定時(shí)器的初值設(shè)置定時(shí)器的初值ET0=1; /允許允許T0中斷中斷 EA=1; /允許允許CPU中斷中斷TR0=1; /啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器while(1); /等待中斷等待中斷 void time0_int(void) interrupt 1/中斷服務(wù)程序中斷服務(wù)程序TL0=0 x0c;TH0=0 xfe;/定時(shí)器重賦初值定時(shí)器重賦初值
21、P1_0=P1_0;/P1.0取反,輸出方波取反,輸出方波 匯編語言程序匯編語言程序:ORG0000HSJMPMAINORG000BHLJMPTIME0MAIN:MOV TMOD,#01H;T0定時(shí),模式定時(shí),模式1MOVTL0,#0CH;置定時(shí)初值;置定時(shí)初值MOVTH0,#0FEH SETBET0;定時(shí)器;定時(shí)器T0開中斷開中斷SETBEA;CPU開中斷開中斷SETBTR0;啟動(dòng)定時(shí)器;啟動(dòng)定時(shí)器T0SJMP$;等待定時(shí)器溢出;等待定時(shí)器溢出TIME0: MOV TL0,#0CH ;中斷服務(wù)程序中斷服務(wù)程序MOVTH0,#0FEH;重裝定時(shí)初值;重裝定時(shí)初值CPLP1.0;P1.0取反,輸
22、出方波取反,輸出方波RETI;中斷返回;中斷返回END例例6-2 設(shè)單片機(jī)的振蕩頻率為設(shè)單片機(jī)的振蕩頻率為12MHz,用定,用定時(shí)器時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0編程實(shí)現(xiàn)從編程實(shí)現(xiàn)從P1.0輸出周期為輸出周期為500s的的方波。方波。分析:分析:定時(shí)時(shí)間:定時(shí)時(shí)間:從從P1.0輸出周期為輸出周期為500s的方的方波。定時(shí)波。定時(shí)250s,定時(shí)結(jié)束對(duì),定時(shí)結(jié)束對(duì)P1.0取反。取反。 模式選擇模式選擇:當(dāng)系統(tǒng)時(shí)鐘頻率為:當(dāng)系統(tǒng)時(shí)鐘頻率為12MHz,機(jī)器,機(jī)器周期為周期為1s,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0可以選擇模式可以選擇模式0、模式、模式1和模式和模式2。模式。模式2最大的定時(shí)時(shí)間為最大的定時(shí)時(shí)間為25
23、6s,滿足,滿足250s的定時(shí)要求,選擇模式的定時(shí)要求,選擇模式2(1)定時(shí)初值計(jì)算)定時(shí)初值計(jì)算 (256-X)1s=250s X=6;則則TH0=TL0=6采用中斷處理方式的程序采用中斷處理方式的程序 :C語言程序語言程序 :# include /包含特殊功能寄存器庫包含特殊功能寄存器庫sbit P1_0=P10; voidmain( )TMOD=0 x02;/選擇定時(shí)器的工作模式選擇定時(shí)器的工作模式TL0=0 x06;TH0=0 x06;/為定時(shí)器賦初值為定時(shí)器賦初值 ET0=1;/允許定時(shí)允許定時(shí)0中斷中斷 EA=1;TR0=1;/啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器0while(1);/等待中斷等待
24、中斷void time0_int(void) interrupt 1 P1_0=P1_0;匯編語言程序匯編語言程序:ORG0000HLJMPMAIN ORG000BH;中斷處理程序;中斷處理程序CPLP1.0RETIORG 0030H;主程序;主程序MAIN:MOV TMOD,#02H MOV TL0,#06HMOV TH0,#06HSETB ET0;允許定時(shí)器;允許定時(shí)器0中斷中斷SETB EA;允許;允許CPU中斷中斷SETB TR0;啟動(dòng)定時(shí)器;啟動(dòng)定時(shí)器0SJMP $;等待中斷;等待中斷END采用查詢方式處理的程序:采用查詢方式處理的程序:C語言程序:語言程序:# include /特
25、殊功能寄存器庫特殊功能寄存器庫sbitP1_0=P10;void main()TMOD=0 x02;TL0=0 x06;TH0=0 x06; TR0=1;while (1)while(!TF0) ;/查詢計(jì)數(shù)溢出查詢計(jì)數(shù)溢出 TF0=0;P1_0=P1_0;匯編語言程序匯編語言程序:MAIN:MOV TMOD,#02H;主程序;主程序MOVTL0,#06HMOVTH0,#06HSETBTR0LOOP:JNBTF0,$;查詢計(jì)數(shù)溢出;查詢計(jì)數(shù)溢出CLRTF0CPLP1.0 SJMPLOOPEND6.4 定時(shí)器應(yīng)用舉例定時(shí)器應(yīng)用舉例主要內(nèi)容主要內(nèi)容6.4.1 定時(shí)器的初始化定時(shí)器的初始化6.4.2
26、 定時(shí)器應(yīng)用舉例定時(shí)器應(yīng)用舉例6.4.1 定時(shí)器的初始化定時(shí)器的初始化 在使用定時(shí)器在使用定時(shí)器/計(jì)數(shù)器前,應(yīng)首先對(duì)其進(jìn)行計(jì)數(shù)器前,應(yīng)首先對(duì)其進(jìn)行初始化編程。初始化編程。一、定時(shí)器的初始化步驟一、定時(shí)器的初始化步驟1、設(shè)置、設(shè)置TMOD。選擇工作模式和工作方式。選擇工作模式和工作方式。2、設(shè)置定時(shí)器的計(jì)數(shù)初值、設(shè)置定時(shí)器的計(jì)數(shù)初值。將初值寫入。將初值寫入TH0和和TL0或或TH1、TL1。3、如果需要中斷,設(shè)置中斷允許寄存器、如果需要中斷,設(shè)置中斷允許寄存器IE。4、設(shè)置、設(shè)置TCON,啟動(dòng)定時(shí)器,啟動(dòng)定時(shí)器。 可以使用位操作指令。例如:可以使用位操作指令。例如:SETB TRx。二、定時(shí)器二
27、、定時(shí)器/計(jì)數(shù)器初值計(jì)算計(jì)數(shù)器初值計(jì)算 定時(shí)器定時(shí)器/計(jì)數(shù)器的模式和方式不同,計(jì)數(shù)初值也將不同。計(jì)數(shù)器的模式和方式不同,計(jì)數(shù)初值也將不同。計(jì)數(shù)器的長(zhǎng)度為計(jì)數(shù)器的長(zhǎng)度為n,則計(jì)數(shù)的最大值為,則計(jì)數(shù)的最大值為2n 。1、工作于定時(shí)方式、工作于定時(shí)方式計(jì)數(shù)脈沖由內(nèi)部的時(shí)鐘提供,每個(gè)機(jī)器周期進(jìn)行加計(jì)數(shù)脈沖由內(nèi)部的時(shí)鐘提供,每個(gè)機(jī)器周期進(jìn)行加1。設(shè)晶振頻率為設(shè)晶振頻率為fosc,則計(jì)數(shù)脈沖的頻率為,則計(jì)數(shù)脈沖的頻率為fosc/12,計(jì)數(shù)脈,計(jì)數(shù)脈沖周期沖周期T=1/(fosc/12)。)。如果進(jìn)行定時(shí)時(shí)間為如果進(jìn)行定時(shí)時(shí)間為t,計(jì)數(shù)初值為,計(jì)數(shù)初值為X,則:,則:初值X = 2n - t fosc/12
28、 2、工作于計(jì)數(shù)方式、工作于計(jì)數(shù)方式 當(dāng)工作在計(jì)數(shù)方式時(shí),對(duì)外部脈沖計(jì)數(shù)。利用計(jì)數(shù)器計(jì)當(dāng)工作在計(jì)數(shù)方式時(shí),對(duì)外部脈沖計(jì)數(shù)。利用計(jì)數(shù)器計(jì)數(shù)結(jié)束產(chǎn)生溢出的特性,來計(jì)算初值數(shù)結(jié)束產(chǎn)生溢出的特性,來計(jì)算初值X 。則有:。則有:X= 2n計(jì)數(shù)次數(shù)計(jì)數(shù)次數(shù)6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例例例6-3 利用定時(shí)器利用定時(shí)器T1的模式的模式2對(duì)外部信號(hào)進(jìn)行對(duì)外部信號(hào)進(jìn)行計(jì)數(shù),要求每計(jì)滿計(jì)數(shù),要求每計(jì)滿100次,將次,將P1.0端取反。端取反。分析:分析:T1工作在計(jì)數(shù)方式。脈沖數(shù)工作在計(jì)數(shù)方式。脈沖數(shù)100。模式模式2,模式字,模式字TMOD=0110b。1、初值計(jì)數(shù):、初值計(jì)數(shù):在模式在模式2下:
29、下:X= 28-100=156D=9CH2、C語言程序:語言程序:#include sbit P1_0=P10;/進(jìn)行位定義進(jìn)行位定義void main ( )TMOD=0 x60;/T1工作在模式工作在模式2,計(jì)數(shù),計(jì)數(shù)TL1=0 x9c;/裝入計(jì)數(shù)(重裝)初值裝入計(jì)數(shù)(重裝)初值TH1=0 x9c;ET1=1;/允許定時(shí)器允許定時(shí)器1中斷中斷EA=1;/開中斷開中斷TR1=1 ;/啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器1while(1);void time0_int(void) interrupt 3 /中斷服務(wù)程序中斷服務(wù)程序P1_0=P1_0;/取反,產(chǎn)生方波取反,產(chǎn)生方波3、匯編語言程序:、匯編語言程
30、序:MAIN: MOV SP, #0DFH;設(shè)置堆棧指針設(shè)置堆棧指針MOV TMOD,#60H;T1工作在模式工作在模式2,計(jì)數(shù),計(jì)數(shù)MOVTL1,#9CH;裝入計(jì)數(shù)初值裝入計(jì)數(shù)初值MOVTH1, #9CH;裝入計(jì)數(shù)(重裝)初值裝入計(jì)數(shù)(重裝)初值MOVIE,#88H;允許定時(shí)器中斷允許定時(shí)器中斷SETBTR1;啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器HERE:SJMP HERE;等待中斷等待中斷中斷服務(wù)程序中斷服務(wù)程序:ORG 001BH;中斷服務(wù)程序入口地址中斷服務(wù)程序入口地址CPLP1.0;對(duì)對(duì)P1.0引腳信號(hào)取反引腳信號(hào)取反RETI;中斷返回中斷返回6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例 例例6-4
31、 某一應(yīng)用系統(tǒng)需要對(duì)某一應(yīng)用系統(tǒng)需要對(duì)INT0引腳的正脈引腳的正脈沖測(cè)試其脈沖寬度。沖測(cè)試其脈沖寬度。分析:分析:可以設(shè)置定時(shí)器可以設(shè)置定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0為定時(shí)方式,為定時(shí)方式,工作在模式工作在模式1,且置位,且置位GATE位為位為1,將外部需測(cè),將外部需測(cè)試的脈沖從試的脈沖從INT0引腳輸入,設(shè)機(jī)器周期為引腳輸入,設(shè)機(jī)器周期為1s。C語言程序:語言程序:計(jì)算脈寬和處理程序略。計(jì)算脈寬和處理程序略。#include sbit P3_2=P32;unsigned int_test( )TMOD=0 x09;TL0=0 x00;TH0=0 x00;while(P3_2);TR0=1; whil
32、e(!P3_2);while(P3_2);TR0= 0;return (TH0*256+TL0);匯編語言程序匯編語言程序:INT00:MOV TMOD,#09H MOV TL0,#00H;設(shè)置計(jì)數(shù)初值設(shè)置計(jì)數(shù)初值MOV TH0,#00HLOP1:JBP3.2,LOP1 ;等待等待P3.2變低電平變低電平SETB TR0;啟動(dòng)啟動(dòng)T0計(jì)數(shù)計(jì)數(shù)LOP2:JNB P3.2,LOP2 ;等待等待P3.2變成高電平變成高電平LOP3:JBP3.2,LOP3 ;等待等待P3.2變成低電平變成低電平 CLR TR0;停止停止T0計(jì)數(shù)計(jì)數(shù)MOV A,TL0;計(jì)數(shù)器計(jì)數(shù)器TL0中的內(nèi)容送中的內(nèi)容送AMOV B
33、,TH0;計(jì)數(shù)器計(jì)數(shù)器TH0中的內(nèi)容送中的內(nèi)容送B 6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例例例6-5 某應(yīng)用系統(tǒng)要求通過某應(yīng)用系統(tǒng)要求通過P1.0和和P1.1口分口分別輸出脈沖周期為別輸出脈沖周期為200s和和400s的方波,的方波,fosc=6MHz。 分析:分析:需要兩個(gè)定時(shí)器需要兩個(gè)定時(shí)器。系統(tǒng)定時(shí)器。系統(tǒng)定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0、T1都可以使用。在這里可以選擇使用定時(shí)器都可以使用。在這里可以選擇使用定時(shí)器/計(jì)數(shù)計(jì)數(shù)器器0,設(shè)置為定時(shí)模式,設(shè)置為定時(shí)模式,工作模式工作模式3,分成兩個(gè),分成兩個(gè)8位位的定時(shí)器。的定時(shí)器。1、計(jì)算定時(shí)初值。、計(jì)算定時(shí)初值。 X =28 -tfosc/1
34、2X1 =28 -10010-66106/12=256-50=206= 0CEHX2 =28 -20010-66106/12=256-100=156= 9CH初值分別為初值分別為0CEH和和9CH。2、C語言程序:語言程序:# include sbitP1_0=P10;/進(jìn)行位定義進(jìn)行位定義sbitP1_1=P11;void main( )TMOD=0 x03; /設(shè)置設(shè)置T0定時(shí),工作在模式定時(shí),工作在模式3TL0=0 xce;/設(shè)置設(shè)置TL0計(jì)數(shù)初值,產(chǎn)生計(jì)數(shù)初值,產(chǎn)生200s方波方波TH0=0 x9c;/設(shè)置設(shè)置TH0計(jì)數(shù)初值,產(chǎn)生計(jì)數(shù)初值,產(chǎn)生400s方波方波EA=1;/設(shè)置總中斷允許
35、位設(shè)置總中斷允許位ET0=1;/設(shè)置定時(shí)器設(shè)置定時(shí)器0中斷允許位中斷允許位 ET1=1;/設(shè)置定時(shí)器設(shè)置定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器1中斷允許位中斷允許位TR0=1;/啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器T0TR1=1;/啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器T1while(1); /等待溢出等待溢出void time0L_int(void) interrupt 1/T0中斷服務(wù)程序中斷服務(wù)程序TL0=0 xce;/定時(shí)器重賦初值定時(shí)器重賦初值P1_0=P1_0;/產(chǎn)生方波產(chǎn)生方波void time0H_int(void) interrupt 3 /T1中斷服務(wù)程序中斷服務(wù)程序TH0=0 x9c;/定時(shí)器重賦初值定時(shí)器重賦初值P1_1
36、=P1_1;/產(chǎn)生方波產(chǎn)生方波3、匯編語言程序:、匯編語言程序:ORG0000HLJMPMAINORG000BHLJMPT0SORG001BHLJMPT1SMAIN: MOVTMOD,#03H; 設(shè)置設(shè)置T0定時(shí),模式定時(shí),模式3MOVTL0,#0CEH;設(shè)置設(shè)置TL0計(jì)數(shù)初值,產(chǎn)生計(jì)數(shù)初值,產(chǎn)生200s方波方波MOVTH0,#9CH;設(shè)置設(shè)置TH0計(jì)數(shù)初值,產(chǎn)生計(jì)數(shù)初值,產(chǎn)生400s方波方波SETBEA;設(shè)置總中斷允許位設(shè)置總中斷允許位SETBET0;允許定時(shí)器允許定時(shí)器0中斷中斷SETBET1;允許定時(shí)器允許定時(shí)器1中斷中斷SETBTR0;啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器T0SETBTR1;啟動(dòng)定時(shí)器
37、啟動(dòng)定時(shí)器T1T0S:MOVTL0,#0CEH; T0中斷服務(wù)程序中斷服務(wù)程序,重新設(shè)置定時(shí)初值重新設(shè)置定時(shí)初值CPLP1.0;P1.0口的輸出取反口的輸出取反RETI T1S:MOVTH0,#9CH ; T1中斷服務(wù)程序,中斷服務(wù)程序,重新設(shè)置定時(shí)初值重新設(shè)置定時(shí)初值CPLP1.1 ;對(duì)對(duì)P1.0口輸出信號(hào)取反口輸出信號(hào)取反RETI ;中斷返回中斷返回6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例例例6-6 利用定時(shí)器精確定時(shí)利用定時(shí)器精確定時(shí)1s控制控制LED以秒為單以秒為單位閃爍。已知位閃爍。已知fosc=12MHz。分析:分析:定時(shí)器定時(shí)器/計(jì)數(shù)器在定時(shí)方式下,各個(gè)模式計(jì)數(shù)器在定時(shí)方式下
38、,各個(gè)模式最大定時(shí)時(shí)間分別為:最大定時(shí)時(shí)間分別為:定時(shí)器定時(shí)器0=(8192-0)12/fosc=8.192ms 定時(shí)器定時(shí)器1=(65536-0)12/fosc=65.536ms 定時(shí)器定時(shí)器2=(256-0)12/fosc=0.256ms 選擇模式選擇模式1。定時(shí)時(shí)間為。定時(shí)時(shí)間為10ms,當(dāng),當(dāng)10ms的定時(shí)的定時(shí)時(shí)間到,時(shí)間到,TF1=1,連續(xù)定時(shí),連續(xù)定時(shí)100次,調(diào)用亮燈函數(shù);次,調(diào)用亮燈函數(shù);再連續(xù)定時(shí)再連續(xù)定時(shí)100次,調(diào)用滅燈函數(shù)。循環(huán)工作,即次,調(diào)用滅燈函數(shù)。循環(huán)工作,即達(dá)到達(dá)到1s閃爍閃爍1次的效果。次的效果。1、初值計(jì)算:、初值計(jì)算:(65536-X)12/fosc=1
39、0ms初值初值X=55536=0D8F0H2、程序設(shè)計(jì):、程序設(shè)計(jì):C語言程序:語言程序:#include sbit LED=P10;unsigned char i;void main()LED=0;/定義燈的初始狀態(tài)為滅定義燈的初始狀態(tài)為滅TMOD=0 x10;/設(shè)置定時(shí)器設(shè)置定時(shí)器1工作在模式工作在模式1TL1=0 xf0;TH1=0 xd8;/設(shè)置定時(shí)初值設(shè)置定時(shí)初值TR1=1; /啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器1ET1=1;/允許定時(shí)器允許定時(shí)器1中斷中斷EA=1;while(1); void timer1_int() interrupt 3TL1=0 xf0;/定時(shí)器重裝初值定時(shí)器重裝初值TH
40、1=0 xd8; if(+i=100)LED=LED;i=0; 匯編語言程序匯編語言程序:選擇硬件定時(shí)選擇硬件定時(shí)10ms,設(shè)置一計(jì)數(shù)單元,存放計(jì)數(shù)值,設(shè)置一計(jì)數(shù)單元,存放計(jì)數(shù)值100,循環(huán)定,循環(huán)定時(shí)時(shí)100次。次。ORG0000HLJMPMAINORG001BHLJMPTIMERMAIN:MOVR0,#100 ;存放計(jì)數(shù)值存放計(jì)數(shù)值100MOVTMOD,#10HMOVTL1,#0F0HMOVTH1,#0D8HSETBET1SETBEASETBTR1CLRP1.0SJMP$TIMER:MOVTL1,#0F0HMOVTH1,#0D8HDJNZR0,NEXTMOVR0,#100CPLP1.0NE
41、XT: RETIEND已知89C51單片機(jī)osc=6MHz,試?yán)肨0和P1口輸出矩形波,矩形波高電平寬為40us,低電平寬為360us. 40us 360usP1.0 解: 前面我們遇到的都是方波,所以高、低電平持續(xù)時(shí)間是一樣的,只要用定時(shí)器定時(shí)周期的一半時(shí)間,把P1.0引腳的電平持續(xù)取反就可以了。但是現(xiàn)在矩形波高電平寬為對(duì)應(yīng)40us,低電平寬為360us,二者不相等。 觀察兩個(gè)時(shí)間,40us和360us之間剛好是一個(gè)9倍的關(guān)系,這樣可以用定時(shí)器定時(shí)一個(gè)基數(shù)40us, 360us可以用循環(huán)9次40us來實(shí)現(xiàn)。方式2對(duì)應(yīng)的最大定時(shí)時(shí)間是512u,所以用方式2就可以了。TMOD=00000010
42、40us定時(shí)初值:X= 28-406/12=256-20=236=0ECH#include sbit signal=P10;bit level; /用來存儲(chǔ)產(chǎn)生T0中斷之前輸出何種電平unsigned char counter;void main(void) TMOD=0 x02; /T0選擇工作方式2,8位定時(shí)器 TH0=0 xec; TL0=0 xec; /定時(shí)時(shí)間為40us counter=0;signal=1;level=1; /初始化全局變量 EA=1; /使能CPU中斷 ET0=1; /使能T0溢出中斷 TR0=1; /T0開始運(yùn)行 while(1) ; /無限循環(huán) void is
43、r_t0(void) interrupt 1 /T0中斷服務(wù)函數(shù) if(level=1) /如果中斷產(chǎn)生之前輸出的是高電平 signal=0; /輸出低電平 level=0; /保存當(dāng)前輸出的電平(低電平) else /如果中斷產(chǎn)生之前輸出的是低電平 counter+; /中斷次數(shù)計(jì)數(shù)加1 if(counter=9) /如果已經(jīng)輸出低電平360us counter=0; /中斷次數(shù)計(jì)數(shù)歸零 signal=1; /輸出高電平 level=1; /保存當(dāng)前輸出的電平(高電平) C語言程序:匯編語言程序: ORG 0030H MOV TMOD,#02H MOV TL0,#0ECH MOV TH0,#
44、0ECH SETB TR0 H1:SETB P1.0 H2:JBC TF0,L1 AJMP H2 L1:CLR P1.0 MOV R2,#09H L2:JBC TF0,L3 AJMP L2 L3:DJNZ R2,L2 AJMP H1 END 已知某生產(chǎn)線的傳送帶上不斷地有產(chǎn)品單向傳送, 產(chǎn)品之間有較大間隔。使用光電開關(guān)統(tǒng)計(jì)一定時(shí)間內(nèi)的產(chǎn)品個(gè)數(shù)。試用單片機(jī)定時(shí)器/計(jì)數(shù)器T1的方式1完成該項(xiàng)產(chǎn)品的計(jì)數(shù)任務(wù)。 (1) 初始化: TMOD=11010000B=0D0H(GATE=1, C/T=1, M0M1=01) (2) T1在方式1時(shí), 溢出產(chǎn)生中斷, 且計(jì)數(shù)器回零, 故在中斷服務(wù)程序中, 需用R
45、0計(jì)數(shù)中斷次數(shù), 以保護(hù)累積計(jì)數(shù)結(jié)果。 (3) 啟動(dòng)T1計(jì)數(shù), 開T1中斷。 程序清單如下: ORG 0000H AJMP START ORG 001BH AJMP T1INT ORG 0100H START: MOV SP, 60H MOV TMOD, 0D0H MOV TH1, 00H MOV TL1, 00H MOV R0, 00H ; 清中斷次數(shù)計(jì)數(shù)單元 SETB TR1 ; 啟動(dòng)T1 SETB ET1; 開T1中斷 SETB EA ; 開總中斷 MAIN: ACALL DISP ; 主程序, 調(diào)顯示子程序 ORG 0A00H T1INT: INC R0 ; 中斷服務(wù)子程序 RETI
46、DISP: ; 顯示子程序 RET 6.3.5 綜合應(yīng)用舉例綜合應(yīng)用舉例(例(例6-76-7)例6-7:設(shè)計(jì)實(shí)時(shí)時(shí)鐘程序。時(shí)鐘就是以秒、分、時(shí)為單位進(jìn)行計(jì)時(shí)。用定時(shí)器與中斷的聯(lián)合應(yīng)用。解:(1)實(shí)現(xiàn)時(shí)鐘計(jì)時(shí)的基本方法 計(jì)算計(jì)數(shù)初值。 時(shí)鐘計(jì)時(shí)的最小單位是秒,但使用單片機(jī)定時(shí)器/計(jì)數(shù)器進(jìn)行定時(shí),即使按方式1工作,其最大定時(shí)時(shí)間也只能達(dá)131ms。因此,可把定時(shí)器的定時(shí)時(shí)間定為100ms,計(jì)數(shù)溢出10次即得到時(shí)鐘計(jì)時(shí)的最小單位秒;而10次計(jì)數(shù)可用軟件方法實(shí)現(xiàn)。假定使用定時(shí)器T0,以工作模式1進(jìn)行100ms的定時(shí)。如fosc=6MHz,則計(jì)數(shù)初值X為: (216X)12/(6 106 )=10010
47、-3 s X=15536=3CB0H因此 : (TL0)=0B0H (TH0)=3CH6.3.5 綜合應(yīng)用舉例綜合應(yīng)用舉例(例(例6-76-7) 采用定時(shí)方式進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿10次即得到秒計(jì)時(shí)。 從秒到分和從分到時(shí)的計(jì)時(shí)是通過累計(jì)和數(shù)值比較實(shí)現(xiàn)的。 時(shí)鐘顯示即及顯示緩沖區(qū)部分在這里略,可自行設(shè)計(jì)。(2)程序流程及程序清單 主程序(MAIN)的主要功能 是進(jìn)行定時(shí)器T1的初始化編程并啟動(dòng)T1,然后通過反復(fù)調(diào)用顯示子程序,等待100ms定時(shí)中斷的到來。其流程如下圖所示。設(shè)設(shè)T1為模式為模式1設(shè)中斷次數(shù)設(shè)中斷次數(shù)清計(jì)時(shí)單元清計(jì)時(shí)單元開中斷開中斷啟動(dòng)啟動(dòng)T1調(diào)用顯示子程序調(diào)用顯示子程序等待定時(shí)中斷等待定時(shí)中斷圖圖6-13 時(shí)鐘主程序流程時(shí)鐘主程序流程6.3.5 綜合應(yīng)用舉例綜合應(yīng)用舉例(例(例6-76-7)(2)程序流程及程序清單 中斷服務(wù)程序(PITO)的主要功能 是進(jìn)行計(jì)時(shí)操作。程序開始先判斷計(jì)數(shù)溢出時(shí)候滿了10次,不滿表明還沒達(dá)到最小計(jì)時(shí)單位秒,中斷返回;如滿10次則表示已達(dá)到最小計(jì)時(shí)單
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 顧城的詩讀后感
- 集成墻板施工方案
- 施工方案管理培訓(xùn)心得
- 監(jiān)控安裝調(diào)試課程設(shè)計(jì)
- 2025年度個(gè)人消費(fèi)分期付款合同范本6篇
- 部編人教版八年級(jí)上冊(cè)語文《寫作 學(xué)寫傳記》教學(xué)設(shè)計(jì)
- 英國國旗簡(jiǎn)筆畫課程設(shè)計(jì)
- 墻布施工方案
- 通信工程課程設(shè)計(jì)波形
- 混凝土門洞施工方案
- 馬工程《經(jīng)濟(jì)法學(xué)》教學(xué)
- 《集裝箱結(jié)構(gòu)》課件
- 項(xiàng)目績(jī)效和獎(jiǎng)勵(lì)計(jì)劃
- 光伏自發(fā)自用項(xiàng)目年用電清單和消納計(jì)算表
- 量子計(jì)算在醫(yī)學(xué)圖像處理中的潛力
- 阿里商旅整體差旅解決方案
- 浙江天臺(tái)歷史文化名城保護(hù)規(guī)劃說明書
- 邏輯思維訓(xùn)練500題
- 實(shí)體瘤療效評(píng)價(jià)標(biāo)準(zhǔn)RECIST-1.1版中文
- 企業(yè)新春茶話會(huì)PPT模板
- GB/T 19185-2008交流線路帶電作業(yè)安全距離計(jì)算方法
評(píng)論
0/150
提交評(píng)論