




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章定時(shí)器/計(jì)數(shù)器及其應(yīng)用5.1定時(shí)器的結(jié)構(gòu)及工作原理5.2定時(shí)器的TMOD和TCON寄存器5.3定時(shí)器的工作方式5.3.1方式05.3.2方式15.3.3方式25.3.4方式35.4定時(shí)器的編程和應(yīng)用1第5章定時(shí)器/計(jì)數(shù)器及其應(yīng)用5.1定時(shí)器的結(jié)構(gòu)及工作原基本知識(shí)定時(shí)器/計(jì)數(shù)器簡(jiǎn)介
1.計(jì)數(shù)概念
同學(xué)們選班長(zhǎng)時(shí),要投票,然后統(tǒng)計(jì)選票,常用的方法是畫“正”,每個(gè)“正”號(hào)五劃,代表五票,最后統(tǒng)計(jì)“正”號(hào)的個(gè)數(shù)即可,這就是計(jì)數(shù)。單片機(jī)有兩個(gè)定時(shí)/計(jì)數(shù)器T0和T1,都可對(duì)外部輸入脈沖計(jì)數(shù)?;局R(shí)定時(shí)器/計(jì)數(shù)器簡(jiǎn)介1.計(jì)數(shù)概念同學(xué)們選班長(zhǎng)
2.計(jì)數(shù)器的容量
我們用一個(gè)瓶子盛水,水一滴滴地滴入瓶中,水滴不斷落下,瓶的容量是有限的,過(guò)一段時(shí)間之后,水就會(huì)逐漸變滿,再滴就會(huì)溢出。單片機(jī)中的計(jì)數(shù)器也一樣,T0和T1這兩個(gè)計(jì)數(shù)器分別是由兩個(gè)8位的RAM單元組成的,即每個(gè)計(jì)數(shù)器都是16位的計(jì)數(shù)器,最大的計(jì)數(shù)量是65536。2.計(jì)數(shù)器的容量我們用一個(gè)瓶子盛水,水一滴滴地滴
3.定時(shí)一個(gè)鐘表,秒針走60次,就是1分鐘,所以時(shí)間就轉(zhuǎn)化為秒針走的次數(shù),也就是計(jì)數(shù)的次數(shù),可見,計(jì)數(shù)的次數(shù)和時(shí)間有關(guān)。只要計(jì)數(shù)脈沖的間隔相等,則計(jì)數(shù)值就代表了時(shí)間,即可實(shí)現(xiàn)定時(shí)。秒針每一次走動(dòng)的時(shí)間是1秒,所以秒針走60次,就是60秒,即1分鐘。因此,單片機(jī)中的定時(shí)器和計(jì)數(shù)器是一個(gè)東西,只不過(guò)計(jì)數(shù)器是記錄的外界發(fā)生的事情,而定時(shí)器則是由單片機(jī)提供一個(gè)非常穩(wěn)定的計(jì)數(shù)源。3.定時(shí)一個(gè)鐘表,秒針走60次,就是1分鐘,所以時(shí)間就
4.溢出上面我們舉的例子,水滴滿瓶子后,再滴就會(huì)溢出,流到桌面上。單片機(jī)計(jì)數(shù)器溢出后將使得TF0變?yōu)椤?”,一旦TF0由0變成1,就是產(chǎn)生了變化,就會(huì)引發(fā)事件,就會(huì)申請(qǐng)中斷。4.溢出上面我們舉的例子,水滴滿瓶子后,再滴就會(huì)溢出,
5.任意定時(shí)及計(jì)數(shù)的方法計(jì)數(shù)器的容量是16位,也就是最大的計(jì)數(shù)值到65536,計(jì)數(shù)計(jì)到65536就會(huì)產(chǎn)生溢出。如果計(jì)數(shù)值要小于65536,怎么辦呢?一個(gè)空的瓶子,要1萬(wàn)滴水滴進(jìn)去才會(huì)滿,我們?cè)陂_始滴水之前就先放入一些水,就不需要10000滴了。比如先放入2000滴,再滴8000滴就可以把瓶子滴滿。在單片機(jī)中,我們也采用類似的方法,稱為“預(yù)置數(shù)”的方法,我們要計(jì)1000,那就先放進(jìn)64536,再來(lái)1000個(gè)脈沖,不就到了65536了嗎?定時(shí)也是如此。5.任意定時(shí)及計(jì)數(shù)的方法計(jì)數(shù)器的容量是16位,也就是最
6.單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)6.單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)5.1定時(shí)器的結(jié)構(gòu)及工作原理組成:兩個(gè)16位的定時(shí)器T0和T1,以及他們的工作方式寄存器TMOD和控制寄存器TCON等組成。內(nèi)部通過(guò)總線與CPU相連。定時(shí)器T0和T1各由兩個(gè)8位特殊功能寄存器TH0、TL0、TH1、TL1構(gòu)成。工作方式寄存器TMOD:用于設(shè)置定時(shí)器的工作模式和工作方式;控制寄存器TCON:用于啟動(dòng)和停止定時(shí)器的計(jì)數(shù),并控制定時(shí)器的狀態(tài);單片機(jī)復(fù)位時(shí),兩個(gè)寄存器的所有位都被清0。85.1定時(shí)器的結(jié)構(gòu)及工作原理組成:兩個(gè)16位的定時(shí)器T0和兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器T1、T0。每個(gè)定時(shí)器內(nèi)部結(jié)構(gòu)實(shí)際上就是一個(gè)可編程的加法計(jì)數(shù)器,由編程來(lái)設(shè)置它工作在定時(shí)狀態(tài)還是計(jì)數(shù)狀態(tài)。兩種工作模式: (1)計(jì)數(shù)器工作模式
就是對(duì)外部事件進(jìn)行計(jì)數(shù)。計(jì)數(shù)脈沖來(lái)自相應(yīng)的外部輸入引腳T0(P3.4)或T1(P3.5)。當(dāng)輸入信號(hào)發(fā)生由1至0的負(fù)跳變(下降沿)時(shí),計(jì)數(shù)器(TH0,TL0或TH1,TL1)的值增1。計(jì)數(shù)的最高頻率一般為振蕩頻率的1/24。Why? (2)定時(shí)器工作模式
也是通過(guò)計(jì)數(shù)實(shí)現(xiàn)的。計(jì)數(shù)脈沖來(lái)自內(nèi)部時(shí)鐘脈沖,每個(gè)機(jī)器周期計(jì)數(shù)值增1,每個(gè)機(jī)器周期=12個(gè)振蕩周期,因此計(jì)數(shù)頻率為振蕩頻率的1/12。所以定時(shí)時(shí)間=計(jì)數(shù)值×機(jī)器周期。4種工作方式(方式0-方式3)。兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器T1、T0。10當(dāng)控制信號(hào)定時(shí)器工作在定時(shí)方式;加1計(jì)數(shù)器對(duì)脈沖f進(jìn)行計(jì)數(shù),每來(lái)一個(gè)脈沖,計(jì)數(shù)器加1,直到計(jì)時(shí)器計(jì)滿溢出;因?yàn)?,即一個(gè)計(jì)數(shù)脈沖的周期就是一個(gè)機(jī)器周期;計(jì)數(shù)器計(jì)數(shù)的是機(jī)器周期脈沖個(gè)數(shù)。從而實(shí)現(xiàn)定時(shí)。當(dāng)控制信號(hào)定時(shí)器工作在計(jì)數(shù)方式;加1計(jì)數(shù)器對(duì)來(lái)自輸入引腳T0(P3.4)和T1(P3.5)的外信號(hào)脈沖進(jìn)行計(jì)數(shù),每來(lái)一個(gè)脈沖,計(jì)數(shù)器加1,直到計(jì)時(shí)器計(jì)滿溢出;TxTHxTFxTLxTRxINTx定時(shí)計(jì)數(shù)
控制信號(hào)K“1”啟動(dòng),計(jì)數(shù)器運(yùn)行;“0”停止,計(jì)數(shù)器停止;定時(shí)器/計(jì)數(shù)器原理框圖加1計(jì)數(shù)器10當(dāng)控制信號(hào)定時(shí)器工作在定時(shí)方式;控制信號(hào)K可以控制計(jì)數(shù)器的“啟動(dòng)”和“停止”,11
TCON(88H)11TCON(88H)在每個(gè)機(jī)器周期的S5P2期間采樣檢測(cè)引腳輸入電平。若前一個(gè)機(jī)器周期采樣值為“1”,后一個(gè)機(jī)器周期采樣值為“0”,則計(jì)數(shù)器加1。新的計(jì)數(shù)值在檢測(cè)到輸入引腳電平發(fā)生“1”到“0”的負(fù)跳變(下降沿)后,于下一個(gè)機(jī)器周期的S3P1期間裝入計(jì)數(shù)器中。由于CPU需要兩個(gè)機(jī)器周期來(lái)識(shí)別一個(gè)“1”到“0”的跳變信號(hào),所以最高的計(jì)數(shù)頻率為振蕩周期的1/24。12P1P2S1振蕩周期狀態(tài)周期機(jī)器周期機(jī)器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2在每個(gè)機(jī)器周期的S5P2期間采樣檢測(cè)引腳輸入電平。12P1P5.1定時(shí)器的結(jié)構(gòu)及工作原理13定時(shí)/計(jì)數(shù)器對(duì)輸入信號(hào)的要求外部計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24,例如選用12MHz頻率的晶體,則可輸入500KHz的外部脈沖。輸入信號(hào)的高、低電平至少要分別保持一個(gè)機(jī)器周期。 如圖所示,圖中Tcy為機(jī)器周期。5.1定時(shí)器的結(jié)構(gòu)及工作原理13定時(shí)/計(jì)數(shù)器對(duì)輸入信號(hào)的要可編程定時(shí)器的工作方式、啟動(dòng)、停止、溢出標(biāo)志、計(jì)數(shù)器等都是可編程的——通過(guò)設(shè)置寄存器TMOD,TCON,TH0,TL0,TH1和TL1實(shí)現(xiàn)。當(dāng)設(shè)置了定時(shí)器的工作方式并啟動(dòng)定時(shí)器工作后,定時(shí)器就按被設(shè)定好的工作方式獨(dú)立工作,不再占用CPU,只有在計(jì)數(shù)器計(jì)滿溢出時(shí)才向CPU申請(qǐng)中斷,占用CPU。由此可見,定時(shí)器是單片機(jī)中工作效率高且應(yīng)用靈活的部件。14可編程定時(shí)器的工作方式、啟動(dòng)、停止、溢出標(biāo)志、計(jì)數(shù)器等都是可5.2定時(shí)器的TMOD和TCON寄存器8051單片機(jī)定時(shí)器主要有幾個(gè)特殊功能寄存器組成: TMOD,TCON,TH0,TL0,TH1,TL1。TMOD:設(shè)置定時(shí)器的工作方式;TCON:控制定時(shí)器的啟動(dòng)和停止;TH0和TL0:存放定時(shí)器T0的初值或計(jì)數(shù)結(jié)果;TH0存放高8位,TL0存放低8位;TH1和TL1:存放定時(shí)器T1的初值或計(jì)數(shù)結(jié)果;TH1存放高8位,TL1存放低8位;155.2定時(shí)器的TMOD和TCON寄存器8051單片機(jī)定時(shí)5.2.1工作方式控制寄存器TMOD16
8位分為兩組,高4位控制T1,低4位控制T0。(1)GATE—門控位
0:
以TRX(X=0,1)來(lái)啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。
1:
用外中斷引腳(INT0*或INT1*)上的高電平和TRX來(lái)啟 動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。5.2.1工作方式控制寄存器TMOD16 8位分為兩組,高(4)TMOD無(wú)位地址,不能位尋址。(5)復(fù)位時(shí),TMOD所有位均為“0”。(3)C/T*—計(jì)數(shù)器模式和定時(shí)器模式選擇位
0:
定時(shí)器模式。
1:
計(jì)數(shù)器模式。(2)M1、M0—工作方式選擇位
M1M0 工作方式
00
方式0,13位定時(shí)器/計(jì)數(shù)器。
01
方式1,16位定時(shí)器/計(jì)數(shù)器。
10
方式2,8位常數(shù)自動(dòng)重新裝載
11
方式3,僅適用于T0,
(4)TMOD無(wú)位地址,不能位尋址。(3)C/T*—5.2.2控制寄存器TCON低4位與外部中斷有關(guān),后面介紹。高4位的功能如下:
(1)TF1、TF0
—計(jì)數(shù)溢出標(biāo)志位 定時(shí)器T0或T1計(jì)數(shù)溢出時(shí),由硬件自動(dòng)將此位置“1”; TFx可以由程序查詢,也是定時(shí)中斷的請(qǐng)求源;
(2)TR1、TR0
—計(jì)數(shù)運(yùn)行控制位 TRx=1:
啟動(dòng)定時(shí)器/計(jì)數(shù)器工作
TRx=0:
停止定時(shí)器/計(jì)數(shù)器工作185.2.2控制寄存器TCON低4位與外部中斷有關(guān),后面介5.2.3定時(shí)/計(jì)數(shù)器的初始化MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器是可編程的,但在進(jìn)行定時(shí)或計(jì)數(shù)之前要對(duì)程序進(jìn)行初始化,具體步驟如下:(1)對(duì)TMOD賦值,以確定定時(shí)器的工作模式;(2)置定時(shí)/計(jì)數(shù)器初值,直接將初值寫入寄存器的TH0、TL0或TH1、TL1;(3)根據(jù)需要,對(duì)IE置初值,開放定時(shí)器中斷;(4)對(duì)TCON寄存器中的TR0或TR1置位,啟動(dòng)定時(shí)/計(jì)數(shù)器,置位以后,計(jì)數(shù)器即按規(guī)定的工作模式和初值進(jìn)行計(jì)數(shù)或開始定時(shí)。195.2.3定時(shí)/計(jì)數(shù)器的初始化MCS-51單片機(jī)的定時(shí)器5.2.3定時(shí)/計(jì)數(shù)器的初始化初值計(jì)算:
設(shè)計(jì)數(shù)器的最大值為M,則置入的初值X為:計(jì)數(shù)方式:X=M-計(jì)數(shù)值定時(shí)方式:由(M-X)T=定時(shí)值,得X=M-定時(shí)值/TT為計(jì)數(shù)周期,是單片機(jī)的機(jī)器周期。(模式0:M為213,模式1:M為216,模式2和3:M為28)20例如:機(jī)器周期為1μs時(shí),若工作在模式0,則最大定時(shí)值為:213×1μs=8.192ms若工作在模式1,則最大定時(shí)值為:216×1μs=65.536ms5.2.3定時(shí)/計(jì)數(shù)器的初始化初值計(jì)算:20例如:機(jī)器周5.3定時(shí)器的工作方式MCS-51的定時(shí)器T0有4種工作方式: 即:方式0,方式1,方式2,方式3。MCS-51的定時(shí)器T1有3種工作方式: 即:方式0,方式1,方式2。215.3定時(shí)器的工作方式MCS-51的定時(shí)器T0有4種工作方5.3定時(shí)器的工作方式——方式05.2.1方式0
M1、M0設(shè)置為00,為13位計(jì)數(shù)器,以T1為例,其框圖如下:22計(jì)數(shù)脈沖輸入加1計(jì)數(shù)器5.3定時(shí)器的工作方式——方式05.2.1方式0225.3定時(shí)器的工作方式——方式0TH1D12D11D10D9D8D7D6D5TL1×××D4D3D2D1D023在這種方式下,16位寄存器TH1和TL1只用13位,由TH1的8位和TL1的低5位組成。TL1的高3位不定。當(dāng)TL1的低5位計(jì)數(shù)溢出時(shí),向TH1進(jìn)位。而TH1計(jì)數(shù)溢出時(shí),則向中斷標(biāo)志位TF1進(jìn)位(即硬件將TF1置1),并請(qǐng)求中斷??赏ㄟ^(guò)查詢TF1是否置“1”或考察中斷是否發(fā)生來(lái)判定定時(shí)器T1的操作完成與否。5.3定時(shí)器的工作方式——方式0TH1D12D11D5.3定時(shí)器的工作方式——方式0當(dāng)C/T=0時(shí),為定時(shí)工作模式,開關(guān)接到振蕩器的12分頻器輸出上,計(jì)數(shù)器對(duì)機(jī)器周期脈沖計(jì)數(shù)。其定時(shí)時(shí)間為:
(213-初值)×振蕩周期×12
例如:若晶振頻率為12MHz,則最長(zhǎng)的定時(shí)時(shí)間為(213-0)×(1/12)×12us=8.191ms當(dāng)C/T=1時(shí),為計(jì)數(shù)工作模式,開關(guān)與外部引腳T1(P3.5)接通,計(jì)數(shù)器對(duì)來(lái)自外部引腳的輸入脈沖計(jì)數(shù)。當(dāng)外部信號(hào)發(fā)生負(fù)跳變時(shí)計(jì)數(shù)器加1。
245.3定時(shí)器的工作方式——方式0當(dāng)C/T=0時(shí),為定時(shí)工作5.3定時(shí)器的工作方式——方式0GATE控制定時(shí)器Tx(T1或T0)的條件:(1)當(dāng)GATE=0時(shí),“或門”輸出恒為1,“與門”的輸出信號(hào)K由TRx決定(即此時(shí)K=TRx),定時(shí)器不受INTx輸入電平的影響,由TRx直接控制定時(shí)器的啟動(dòng)和停止。
TRx=1;計(jì)數(shù)啟動(dòng); TRx=0;計(jì)數(shù)停止;(2)當(dāng)GATE=1時(shí),“與門”的輸出信號(hào)K由INTx輸入電平和TRx位的狀態(tài)一起決定(即此時(shí)K=TRx·INTx), 當(dāng)且僅當(dāng)TRx=1且INTx=1(高電平)時(shí),計(jì)數(shù)啟動(dòng);
否則,計(jì)數(shù)停止。
255.3定時(shí)器的工作方式——方式0GATE控制定時(shí)器Tx(T5.3定時(shí)器的工作方式——方式15.3.2方式1
M1、M0=01,為16位的計(jì)數(shù)器,除位數(shù)外,其他與方式0相同。其定時(shí)時(shí)間為:
(216-初值)×振蕩周期×12
例如:若晶振頻率為12MHz,則最長(zhǎng)的定時(shí)時(shí)間為 (216-0)×(1/12)×12us=65.536ms265.3定時(shí)器的工作方式——方式15.3.2方式1265.3定時(shí)器的工作方式——方式25.3.3方式2
M1、M0=10,為自動(dòng)恢復(fù)初值的8位計(jì)數(shù)器,等效框圖如下:TLx作為8位計(jì)數(shù)器,THx作為重置初值的緩沖器。27
THx作為常數(shù)緩沖器,當(dāng)TLx計(jì)數(shù)溢出時(shí),在置“1”溢出標(biāo)志TFx的同時(shí),還自動(dòng)的將THx中的初值送至TLx,使TLx從初值開始重新計(jì)數(shù)。定時(shí)器/計(jì)數(shù)器的方式2工作過(guò)程如圖(x=0,1)。5.3定時(shí)器的工作方式——方式25.3.3方式2275.3定時(shí)器的工作方式——方式2優(yōu)點(diǎn):
方式0和方式1用于循環(huán)重復(fù)定時(shí)或計(jì)數(shù)時(shí),在每次計(jì)數(shù)器擠滿溢出后,計(jì)數(shù)器復(fù)0。若要進(jìn)行新一輪的計(jì)數(shù),就得重新裝入計(jì)數(shù)初值。這樣一來(lái)不僅造成編程麻煩,而且影響定時(shí)精度。而方式2具有初值自動(dòng)裝入的功能,避免了這個(gè)缺點(diǎn),可實(shí)現(xiàn)精確的定時(shí)。缺點(diǎn): 只有8位計(jì)數(shù)器,定時(shí)時(shí)間短、計(jì)數(shù)范圍小。其定時(shí)時(shí)間為:
(28-初值)×振蕩周期×12若晶振頻率為12MHz,則最長(zhǎng)的定時(shí)時(shí)間為(28-0)×(1/12)×12us=0.256ms28方式2工作過(guò)程圖(x=0,1)。5.3定時(shí)器的工作方式——方式2優(yōu)點(diǎn):28方式2工作過(guò)程圖5.3定時(shí)器的工作方式——方式35.3.4方式3
只適用于定時(shí)器/計(jì)數(shù)器T0。T1不能工作在方式3。 如果將T1置為方式3,則相當(dāng)于TR1=0,停止計(jì)數(shù)(此時(shí)T1可用來(lái)作串行口波特率產(chǎn)生器)。1.工作方式3下的T0
T0在方式3時(shí)被拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器:TH0和TL0。
8位計(jì)數(shù)器TL0使用T0的狀態(tài)控制位C/T*、GATE、TR0、INT0,它既可以工作在定時(shí)方式,也可以工作在計(jì)數(shù)方式。8位定時(shí)器TH0被固定為一個(gè)8位定時(shí)器(不能作外部計(jì)數(shù)模式),并使用定時(shí)器T1的狀態(tài)控制位TR1,同時(shí)占用定時(shí)器T1的中斷請(qǐng)求源TF1。此時(shí),定時(shí)器TH0的啟動(dòng)或停止只受TR1控制。
TR1=1時(shí),啟動(dòng)TH0的計(jì)數(shù);TR1=0時(shí),停止TH0的計(jì)數(shù)295.3定時(shí)器的工作方式——方式35.3.4方式3295.3定時(shí)器的工作方式30各引腳與T0的邏輯關(guān)系如圖所示:5.3定時(shí)器的工作方式30各引腳與T0的邏輯關(guān)系如圖所示:5.3定時(shí)器的工作方式2.T0工作在方式3下T1的各種工作方式注意:當(dāng)T0處于方式3時(shí),T1仍可設(shè)置為方式0、方式1和方式2。當(dāng)時(shí)由于TR1、TF1和T1的中斷源都已被定時(shí)器T0(中的TH0)占用,所以定時(shí)器T1僅有控制位C/T來(lái)決定其工作在定時(shí)方式或計(jì)數(shù)方式。當(dāng)計(jì)數(shù)器計(jì)滿溢出時(shí),不能置位“TF1”,而只能將輸出送往串口。所以,此時(shí)定時(shí)器T1一般用作串口的波特率發(fā)生器,或不需要中斷的場(chǎng)合。 (1)T1工作在方式0315.3定時(shí)器的工作方式2.T0工作在方式3下T1的各種工5.4定時(shí)器的編程和應(yīng)用編程說(shuō)明MCS-51單片機(jī)的定時(shí)器是可編程的,但在進(jìn)行定時(shí)或計(jì)數(shù)之前要對(duì)程序進(jìn)行初始化,具體步驟如下:(1)確定工作方式字:對(duì)TMOD寄存器正確賦值;(2)確定定時(shí)初值:計(jì)算初值,直接將初值寫入寄存器的TH0、TL0或TH1、TL1; 初值計(jì)算:設(shè)計(jì)數(shù)器的最大值為M,則置入的初值X為: 計(jì)數(shù)方式:X=M-計(jì)數(shù)值 定時(shí)方式:由(M-X)T=定時(shí)值,得X=M-定時(shí)值/T T為計(jì)數(shù)周期,是單片機(jī)的機(jī)器周期。 (模式0M為213,模式1M為216,模式2和3M為28)(3)根據(jù)需要,對(duì)IE置初值,開放定時(shí)器中斷;(4)啟動(dòng)定時(shí)/計(jì)數(shù)器,對(duì)TCON寄存器中的TR0或TR1置位,置位以后,計(jì)數(shù)器即按規(guī)定的工作模式和初值進(jìn)行計(jì)數(shù)或開始定時(shí)。325.4定時(shí)器的編程和應(yīng)用編程說(shuō)明325.4定時(shí)器的編程和應(yīng)用33
例5-1
要在P1.0上輸出一個(gè)周期為2ms的方波,假設(shè)系統(tǒng)振蕩頻率采用12MHz。
利用T0方式0產(chǎn)生1ms的定時(shí)
方波的周期用T0來(lái)確定,讓T0每隔1ms計(jì)數(shù)溢出1次,即TF0=1;查詢到TF0=1則CPU對(duì)P1.0取反。即要使P1.0每隔1ms取反一次。5.4定時(shí)器的編程和應(yīng)用33 例5-1要在P1.0上輸5.4定時(shí)器的編程和應(yīng)用34第一步:確定工作方式字 方式0(13位)最長(zhǎng)可定時(shí)8.192ms;
方式1(16位)最長(zhǎng)可定時(shí)65.536ms; 方式2(8位)最長(zhǎng)可定時(shí)256s。T0為方式0,M1M0=00定時(shí)工作狀態(tài),C/T=0GATE=0,不受INT0控制,T1不用全部取“0”值。故TMOD=00H5.4定時(shí)器的編程和應(yīng)用34第一步:確定工作方式字5.4定時(shí)器的編程和應(yīng)用35第二步:計(jì)算1ms定時(shí)的初值X
設(shè)初值為X,則有: (213-X)×12×10-6×1/12=1×10-3 可求得:X=8192-1000=7192 X化為16進(jìn)制,即X=1C18H=1,1100,000
1,1000B。 所以,T0的初值為:
TH0=E0HTL0=18HTH011100000TL0×××110005.4定時(shí)器的編程和應(yīng)用35第二步:計(jì)算1ms定時(shí)的初5.4定時(shí)器的編程和應(yīng)用第三步:程序設(shè)計(jì)
采用查詢TF0的狀態(tài)來(lái)控制P1.0的輸出,同時(shí)要重新裝入初值。365.4定時(shí)器的編程和應(yīng)用第三步:程序設(shè)計(jì)36參考程序:
ORG 0100HMAIN: MOV TMOD,#00H ;設(shè)置T0為方式0 MOV TL0, #18H ;送計(jì)數(shù)初值 MOV TH0, #0E0H ;送計(jì)數(shù)初值 SETB TR0 ;啟動(dòng)T0LOOP: JBC TF0, NEXT;查詢定時(shí)時(shí)間到,轉(zhuǎn)NEXT,同時(shí)清TF0
SJMP LOOP ;重復(fù)循環(huán)NEXT:
MOV TL0,#18H
;T0重置初值
MOV TH0,#0E0H;T0重置初值
CPL P1.0
;P1.0的狀態(tài)取反
SJMP LOOP ;重復(fù)循環(huán) END37參考程序:375.4定時(shí)器的編程和應(yīng)用例5-2將[例5-1]中的輸出方波周期改為1秒。
分析:周期為1s的方波要求500ms的定時(shí)。
(1)T0工作方式的確定
因定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式?由各種工作方式的特性,可計(jì)算出: 方式0(13位)最長(zhǎng)可定時(shí)8.192ms;
方式1(16位)最長(zhǎng)可定時(shí)65.536ms; 方式2(8位)最長(zhǎng)可定時(shí)256s。
所以采用定時(shí)器定時(shí)加軟件計(jì)數(shù)的方法來(lái)實(shí)現(xiàn)延長(zhǎng)定時(shí)。 選方式1,定時(shí)50ms,軟件計(jì)數(shù)10次。 50ms×10=500ms。
所以,TMOD=01H38以上各方式都不滿足要求5.4定時(shí)器的編程和應(yīng)用例5-2將[例5-1]中的輸出5.4定時(shí)器的編程和應(yīng)用
(2)計(jì)算計(jì)數(shù)初值 因?yàn)?(216-X)×12×10-6×1/12=50×10-3 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=B0H
(3)10次計(jì)數(shù)的實(shí)現(xiàn) 設(shè)計(jì)一個(gè)軟件計(jì)數(shù)器,初始值設(shè)為10。每隔50ms定時(shí)時(shí)間到,產(chǎn)生溢出標(biāo)志TF0,程序查詢到TF0=1,則軟件計(jì)數(shù)器減1。這樣減到0時(shí)就獲得了500ms的定時(shí)。395.4定時(shí)器的編程和應(yīng)用(2)計(jì)算計(jì)數(shù)初值39(4)程序設(shè)計(jì)(參考程序)
MAIN: MOVTMOD, #01H ;設(shè)T0工作在方式1 MOVTL0, #0B0H;給T0設(shè)初值 MOVTH0, #3CH MOV R7, #10 ;軟件計(jì)數(shù)器初值 SETBTR0 ;啟動(dòng)T0LOOP: JBC TF0,NEXT ;查詢定時(shí)時(shí)間到,轉(zhuǎn)NEXT,同時(shí)清TF0 SJMPLOOPNEXT: DJNZR7,EXIT ;R7不等于0,則不對(duì)P1.0取反 CPL P1.0 MOV R7,#10 ;重置軟件計(jì)數(shù)器初值EXIT:
MOVTL0,#0B0H ;T0中斷子程序,重裝初值 MOVTH0,#3CH SJMP LOOP END40(4)程序設(shè)計(jì)(參考程序)405.4定時(shí)器的編程和應(yīng)用以上的定時(shí)程序中,程序都要重置計(jì)時(shí)器初值,這樣從定時(shí)器溢出發(fā)出溢出標(biāo)志,到重裝完定時(shí)器初值,在開始計(jì)數(shù),之間總會(huì)有一段時(shí)間間隔,使定時(shí)時(shí)間增加了若干微秒,造成定時(shí)不夠精確。 為了減小這種定時(shí)誤差,單片機(jī)中設(shè)置了工作方式2(自動(dòng)重裝初值),則可避免上述因素,省去程序中重裝初值的指令,實(shí)現(xiàn)精確定時(shí)。但是工作方式2的缺點(diǎn)是只有8位計(jì)數(shù)器,定時(shí)時(shí)間受到很大限制。415.4定時(shí)器的編程和應(yīng)用以上的定時(shí)程序中,程序都要重置計(jì)5.4定時(shí)器的編程和應(yīng)用例5-3利用T0方式2產(chǎn)生250us的定時(shí),在P1.0引腳上輸出周期為500us的方波(要求精確定時(shí))。(設(shè)系統(tǒng)振蕩為12MHz)(1)工作方式選擇
實(shí)現(xiàn)精確定時(shí),采用方式2。 對(duì)于12MHz晶振,方式2的最大計(jì)數(shù)時(shí)間為28=256us,所以可實(shí)現(xiàn)250us的精確定時(shí)。 故,設(shè)置TMOD=02H。(2)計(jì)算初值
設(shè)初值為X:則(28-X)×12×10-6×1/12=250×10-6
X=28-250=6=06H(3)程序設(shè)計(jì)
采用查詢TF0的狀態(tài)來(lái)控制P1.0的輸出。425.4定時(shí)器的編程和應(yīng)用例5-3利用T0方式2產(chǎn)生255.4定時(shí)器的編程和應(yīng)用(4)參考程序MAIN: MOV TMOD,#02H ;置T0方式2 MOV TH0, #06H ;送計(jì)數(shù)初值 MOV TL0, #06H SETBTR0 ;啟動(dòng)T0LOOP:JBC TF0, NEXT ;查詢定時(shí)時(shí)間到,轉(zhuǎn)NEXT,同時(shí)清TF0
SJMPLOOPNEXT: CPL P1.0 ;輸出取反
SJMP LOOP ;重復(fù)循環(huán)
END435.4定時(shí)器的編程和應(yīng)用(4)參考程序43門控制位GATE的應(yīng)用—測(cè)量脈沖寬度GATE門可使定時(shí)器Tx(T0或T1)的啟動(dòng)計(jì)數(shù)受INTx*的控制,可測(cè)量引腳INTx*(P3.2或P3.3)上正脈沖的寬度(機(jī)器周期數(shù))。以T1為例:44當(dāng)GATE=1時(shí),K=TRx·INTxK門控制位GATE的應(yīng)用—測(cè)量脈沖寬度GATE門可使定時(shí)器Tx門控制位GATE的應(yīng)用—測(cè)量脈沖寬度例5-4利用T1門控位GATE測(cè)試INT1*(P3.3)引腳上出現(xiàn)的正脈沖的寬度。分析:根據(jù)設(shè)計(jì)要求,將T1設(shè)定為定時(shí)工作模式、方式1、GATE=1;當(dāng)TR1=1時(shí),一旦INT1*(P3.3)引腳上出現(xiàn)高電平就開始計(jì)數(shù),直到出現(xiàn)低電平為止。然后讀取TH1、TL1中的計(jì)數(shù)值,分別送到寄存器A和B中。由于T1工作在定時(shí)方式,計(jì)數(shù)器計(jì)數(shù)的是機(jī)器周期的脈沖數(shù);將脈沖數(shù)轉(zhuǎn)化成時(shí)間,就可得到正脈沖的寬度。45門控制位GATE的應(yīng)用—測(cè)量脈沖寬度例5-4利用T1門控位 ORG0100HMAIN: MOVTMOD,#90H ;T1為方式1定時(shí)控制字 MOVTL1,#00H ;計(jì)數(shù)器初值為0 MOVTH1,#00HLOOP: JBP3.3,LOOP ;等待INT1*低 SETBTR1 ;如INT1*為低,啟動(dòng)T1LOOP1:JNBP3.3,LOOP1 ;等待INT1*升高,開始計(jì)數(shù)LOOP2:JBP3.3,LOOP2 ;等待INT1*降低,停止計(jì)數(shù)
CLRTR1 ;停止T1計(jì)數(shù) MOVA,TL1 ;T1計(jì)數(shù)值的低8位送A MOVB,TH1 ;T1計(jì)數(shù)值的高8位送B
……
由于定時(shí)器最長(zhǎng)為16位計(jì)數(shù)器,因此被測(cè)脈沖高電平的寬度不能超過(guò)65536個(gè)機(jī)器周期。46參考程序: ORG0100H46參考程序:5.4定時(shí)器的編程和應(yīng)用例5-5當(dāng)T0(P3.4)引腳上發(fā)生負(fù)跳變時(shí),從P1.0引腳上輸出一個(gè)周期為1ms的方波,如圖所示。(系統(tǒng)振蕩為6MHz)
兩個(gè)計(jì)數(shù)器同時(shí)使用475.4定時(shí)器的編程和應(yīng)用例5-5當(dāng)T0(P3.4)引5.4定時(shí)器的編程和應(yīng)用(1)工作方式選擇T0為方式1計(jì)數(shù),初值0FFFFH,即外部計(jì)數(shù)輸入端T0(P3.4)發(fā)生一次負(fù)跳變時(shí),T0加1且溢出,溢出標(biāo)志TF0置“1”,發(fā)中斷請(qǐng)求。在進(jìn)入T0中斷程序后,把F0標(biāo)志置“1”,說(shuō)明T0引腳上已接收了負(fù)跳變信號(hào)。T1定義為方式2定時(shí)。在T0引腳產(chǎn)生一次負(fù)跳變后,啟動(dòng)T1每500s產(chǎn)生一次中斷,在中斷服務(wù)程序中對(duì)P1.0求反,使P1.0產(chǎn)生周期1ms的方波。TMOD=0010,0101=25H(2)計(jì)算T1初值
設(shè)T1的初值為X: 則(28-X)×2×10-6=5×10-4
X=28-250=6=06H485.4定時(shí)器的編程和應(yīng)用(1)工作方式選擇48MAIN: MOVTMOD,#25H
;初始化,T1為方式2定時(shí),T0為方 式1計(jì)數(shù) MOVTL0,#0FFH ;T0置初值
MOVTH0,#0FFH SETBTR0 ;啟動(dòng)T0 MOVTL1,#06H ;T1置初值 MOVTH1,#06HLOOP0:
JBC TF0, NEXT0 ;查詢T0有無(wú)負(fù)跳變,有則轉(zhuǎn)到NEXT0 SJMP LOOP0NETX0:
CPL P1.0 ;P1.0取反 SETB TR1 ;啟動(dòng)T1LOOP1:
JBC TF1, NEXT1;查詢T1定時(shí)時(shí)間到否,到則轉(zhuǎn)到NEXT1 SJMP LOOP1NEXT1:
CPL P1.0 ;P1.0取反
SJMP LOOP1 END49(3)程序設(shè)計(jì)MAIN: MOVTMOD,#25H;初始化,T5.4定時(shí)器的編程和應(yīng)用T0方式3時(shí),TL0和TH0被分成兩個(gè)獨(dú)立的8位定時(shí)器/計(jì)數(shù)器。其中,TL0:8位定時(shí)器/計(jì)數(shù)器;TH0:8位定時(shí)器。當(dāng)T1作串行口波特率發(fā)生器時(shí),T0才設(shè)置為方式3。505.4定時(shí)器的編程和應(yīng)用T0方式3時(shí),TL0和TH0被5.4定時(shí)器的編程和應(yīng)用以上例題均采用查詢的方法,這種方法很簡(jiǎn)單,但是在定時(shí)器整個(gè)計(jì)數(shù)的過(guò)程中,CPU要不斷地查詢溢出標(biāo)志TFx的狀態(tài),很難執(zhí)行其他操作,占用了CPU的工作時(shí)間,使得CPU的工作效率不高。若采用中斷的方式來(lái)實(shí)現(xiàn),可大大提高CPU的工作效率。515.4定時(shí)器的編程和應(yīng)用以上例題均采用查詢的方法,這種方5-52例5-6
如圖所示:P1中接有八個(gè)發(fā)光二極管,編程使八個(gè)管輪流點(diǎn)亮,每個(gè)管亮100ms,設(shè)晶振為6MHz。5-52例5-6如圖所示:5-53分析:利用T1完成100ms的定時(shí),當(dāng)P1口線輸出‘1’時(shí),發(fā)光二極管亮,每隔100ms,‘1’左移一次。采用方式1定時(shí),先計(jì)算計(jì)數(shù)初值:
6MHz晶體,機(jī)器周期MC=2μs計(jì)數(shù)值:100ms/2μs=50000=C350H定時(shí)器初值:(C350H)補(bǔ)
=10000H-C350H=3CB0HM0M1GATEM0M1GATEC/TC/TT1方式1:TMOD=10H5-53分析:利用T1完成100ms的定時(shí),當(dāng)P1口線輸5-54程序如下 ORG00H MOVTMOD,#10H;T1工作于定時(shí)方式1 MOVA,#01H;置初值,第一個(gè)LED亮NEXT:MOVP1,A
MOVTH1,#3CH MOVTL1,#0B0H;定時(shí)100ms SETBTR1AGAI:JBCTF1,SHI;100ms到轉(zhuǎn)SHI,并清TF1 SJMPAGAISHI:RLA SJMPNEXT
查詢方式5-54程序如下 ORG00H查詢方式5-55
中斷方式 ORG0030H;主程序MAIN:MOVA,#01HMOVP1,A;置初值,第一個(gè)LED亮
MOVTMOD,#10H;T1工作于定時(shí)方式1MOVTH1,#3CHMOVTL1,#0B0H;定時(shí)100msSETBEA;中斷總允許
SETBTR1;啟動(dòng)T1工作
SETBET1;允許T1中斷WAIT:SJMPWAIT;等待中斷ORG0000HAJMPMAIN;單片機(jī)復(fù)位后從0000H開始執(zhí)行
ORG001BH;T1中斷入口
AJMPTIME1;轉(zhuǎn)到T1中斷服務(wù)程序5-55中斷方式 ORG0030H;中斷服務(wù)程序5-56TIME1:RLA;左移一位
MOVP1,A;下一個(gè)發(fā)光二極管亮
MOVTH1,#3CHMOVTL1,#0B0H;重裝計(jì)數(shù)值
RETI;中斷返回以上程序執(zhí)行結(jié)果,八個(gè)LED一直循環(huán)輪流點(diǎn)亮。中斷服務(wù)程序5-56TIME1:RLA5-57例5-7
在P1.7端接一個(gè)發(fā)光二極管LED,要求利用定時(shí)控制使LED亮一秒滅一秒,周而復(fù)始,設(shè)fosc=6MHZ。89C51P1.7+5VLEDP1.0T11s分析:16位定時(shí)最大65536*2us=131.072ms,顯然不能滿足要求,可用以下兩種方法解決。5-57例5-7在P1.7端接一個(gè)發(fā)光二極管LED,要求方法1:用一個(gè)定時(shí),另一個(gè)計(jì)數(shù)5-58
兩個(gè)定時(shí)/計(jì)數(shù)器均采用查詢方式:采用T0產(chǎn)生周期為200ms脈沖,即P1.0每100ms取反一次作為T1的計(jì)數(shù)脈沖,T1對(duì)下降沿計(jì)數(shù),因此T1計(jì)5個(gè)脈沖正好1s。如圖T0定時(shí)、方式1:初值X0=65536-100*103/2得:X=3CB0H;T1計(jì)數(shù)、采用方式2:計(jì)數(shù)初值X1=256-5=FBHTMOD=61H;TH0=3CHTL0=0B0HTH1=TL1=0FBH方法1:用一個(gè)定時(shí),另一個(gè)計(jì)數(shù)5-58兩個(gè)定時(shí)/計(jì)數(shù)器均流程圖5-59P1.7=0,P1.0=1T0:定時(shí)方式1T1:計(jì)數(shù)方式2P1.7求反裝T1初值,TR1=1裝T0初值,TR0=1100ms到?P1.0求反計(jì)滿5次?YNYNLED滅LED取反高電平脈沖脈沖取反流程圖5-59P1.7=0,P1.0=1T0:定時(shí)方式1P1方法一、程序如下5-60程序中用JBC指令對(duì)定時(shí)/計(jì)數(shù)溢出標(biāo)志位進(jìn)行檢測(cè),當(dāng)標(biāo)志位為1時(shí)跳轉(zhuǎn)并清標(biāo)志。ORG0000HMAIN:CLRP1.7SETBP1.0MOVTMOD,#61HMOVTH1,#0FBHMOVTL1,#0FBHSETBTR1LOOP1:CPLP1.7LOOP2:MOVTH0,#3CHMOVTL0,#0B0HSETBTR0
LOOP3:JBCTF0,LOOP4SJMPLOOP3LOOP4:CPLP1.0JBCTF1,LOOP1AJMPLOOP2ENDEx5_2.sdn方法一、程序如下5-60程序中用JBC指令對(duì)定時(shí)/計(jì)數(shù)溢出標(biāo)方法2:5-61T0每隔100ms中斷一次,利用軟件對(duì)T0的中斷次數(shù)進(jìn)行計(jì)數(shù),中斷10次即實(shí)現(xiàn)了1秒的定時(shí)。
ORG00HAJMPMAIN;主程序
ORG000BH
;T0中斷服務(wù)程序入口
AJMPTIMER0
方法2:5-61T0每隔100ms中斷一次,利用軟件對(duì)T0的方法二:主程序5-62 ORG0030H;主程序開始
MAIN: CLRP1.7 MOVTMOD,#01H MOVTH0,#3CH;T0定時(shí)100ms MOVTL0,#0B0H
SETBET0 SETBEA MOVR4,#0AH;中斷10次計(jì)數(shù)器
SETBTR0 SJMP$;等待中斷方法二:主程序5-62 ORG0030H;主方法二:中斷服務(wù)程序5-63TIMER0: DJNZR4,RET0 MOVR4,#0AH;重置10次計(jì)數(shù)值
CPLP1.7;LED取反RET0: MOVTH0,#3CH;定時(shí)初值重裝載
MOVTL0,#0B0H
;SETBTR0
RETIEx5_2.sdn方法二:中斷服務(wù)程序5-63TIMER0: DJNZR4,小結(jié)5-64定時(shí)/計(jì)數(shù)器應(yīng)用非常廣泛,如定時(shí)采樣、時(shí)間測(cè)量、產(chǎn)生音響、作脈沖源、制作日歷時(shí)鐘、測(cè)量波形的頻率和占空比、檢測(cè)電機(jī)轉(zhuǎn)速等。因此應(yīng)很好掌握。
51系列單片機(jī)有兩個(gè)16位的定時(shí)/計(jì)數(shù)器,有四種不同的工作方式,歸納于表中(P105)。使用定時(shí)/計(jì)數(shù)器前要先初始化,設(shè)置方式控制字TMOD,計(jì)數(shù)初值THx,TLx;啟動(dòng)工作TRx;中斷方式,還需開中斷(EA和ETx)。
定時(shí)/計(jì)數(shù)器是加1計(jì)數(shù),初值為負(fù)數(shù),用補(bǔ)碼表示。計(jì)數(shù)產(chǎn)生溢出(計(jì)數(shù)初值寄存器回零),置位TFx,可以通過(guò)程序查詢;如果允許中斷,會(huì)產(chǎn)生中斷。本章應(yīng)重點(diǎn)掌握定時(shí)/計(jì)數(shù)器的應(yīng)用設(shè)計(jì)。小結(jié)5-64定時(shí)/計(jì)數(shù)器應(yīng)用非常廣泛,如定時(shí)采樣、時(shí)間測(cè)量第5章定時(shí)器/計(jì)數(shù)器及其應(yīng)用5.1定時(shí)器的結(jié)構(gòu)及工作原理5.2定時(shí)器的TMOD和TCON寄存器5.3定時(shí)器的工作方式5.3.1方式05.3.2方式15.3.3方式25.3.4方式35.4定時(shí)器的編程和應(yīng)用65第5章定時(shí)器/計(jì)數(shù)器及其應(yīng)用5.1定時(shí)器的結(jié)構(gòu)及工作原基本知識(shí)定時(shí)器/計(jì)數(shù)器簡(jiǎn)介
1.計(jì)數(shù)概念
同學(xué)們選班長(zhǎng)時(shí),要投票,然后統(tǒng)計(jì)選票,常用的方法是畫“正”,每個(gè)“正”號(hào)五劃,代表五票,最后統(tǒng)計(jì)“正”號(hào)的個(gè)數(shù)即可,這就是計(jì)數(shù)。單片機(jī)有兩個(gè)定時(shí)/計(jì)數(shù)器T0和T1,都可對(duì)外部輸入脈沖計(jì)數(shù)?;局R(shí)定時(shí)器/計(jì)數(shù)器簡(jiǎn)介1.計(jì)數(shù)概念同學(xué)們選班長(zhǎng)
2.計(jì)數(shù)器的容量
我們用一個(gè)瓶子盛水,水一滴滴地滴入瓶中,水滴不斷落下,瓶的容量是有限的,過(guò)一段時(shí)間之后,水就會(huì)逐漸變滿,再滴就會(huì)溢出。單片機(jī)中的計(jì)數(shù)器也一樣,T0和T1這兩個(gè)計(jì)數(shù)器分別是由兩個(gè)8位的RAM單元組成的,即每個(gè)計(jì)數(shù)器都是16位的計(jì)數(shù)器,最大的計(jì)數(shù)量是65536。2.計(jì)數(shù)器的容量我們用一個(gè)瓶子盛水,水一滴滴地滴
3.定時(shí)一個(gè)鐘表,秒針走60次,就是1分鐘,所以時(shí)間就轉(zhuǎn)化為秒針走的次數(shù),也就是計(jì)數(shù)的次數(shù),可見,計(jì)數(shù)的次數(shù)和時(shí)間有關(guān)。只要計(jì)數(shù)脈沖的間隔相等,則計(jì)數(shù)值就代表了時(shí)間,即可實(shí)現(xiàn)定時(shí)。秒針每一次走動(dòng)的時(shí)間是1秒,所以秒針走60次,就是60秒,即1分鐘。因此,單片機(jī)中的定時(shí)器和計(jì)數(shù)器是一個(gè)東西,只不過(guò)計(jì)數(shù)器是記錄的外界發(fā)生的事情,而定時(shí)器則是由單片機(jī)提供一個(gè)非常穩(wěn)定的計(jì)數(shù)源。3.定時(shí)一個(gè)鐘表,秒針走60次,就是1分鐘,所以時(shí)間就
4.溢出上面我們舉的例子,水滴滿瓶子后,再滴就會(huì)溢出,流到桌面上。單片機(jī)計(jì)數(shù)器溢出后將使得TF0變?yōu)椤?”,一旦TF0由0變成1,就是產(chǎn)生了變化,就會(huì)引發(fā)事件,就會(huì)申請(qǐng)中斷。4.溢出上面我們舉的例子,水滴滿瓶子后,再滴就會(huì)溢出,
5.任意定時(shí)及計(jì)數(shù)的方法計(jì)數(shù)器的容量是16位,也就是最大的計(jì)數(shù)值到65536,計(jì)數(shù)計(jì)到65536就會(huì)產(chǎn)生溢出。如果計(jì)數(shù)值要小于65536,怎么辦呢?一個(gè)空的瓶子,要1萬(wàn)滴水滴進(jìn)去才會(huì)滿,我們?cè)陂_始滴水之前就先放入一些水,就不需要10000滴了。比如先放入2000滴,再滴8000滴就可以把瓶子滴滿。在單片機(jī)中,我們也采用類似的方法,稱為“預(yù)置數(shù)”的方法,我們要計(jì)1000,那就先放進(jìn)64536,再來(lái)1000個(gè)脈沖,不就到了65536了嗎?定時(shí)也是如此。5.任意定時(shí)及計(jì)數(shù)的方法計(jì)數(shù)器的容量是16位,也就是最
6.單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)6.單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)5.1定時(shí)器的結(jié)構(gòu)及工作原理組成:兩個(gè)16位的定時(shí)器T0和T1,以及他們的工作方式寄存器TMOD和控制寄存器TCON等組成。內(nèi)部通過(guò)總線與CPU相連。定時(shí)器T0和T1各由兩個(gè)8位特殊功能寄存器TH0、TL0、TH1、TL1構(gòu)成。工作方式寄存器TMOD:用于設(shè)置定時(shí)器的工作模式和工作方式;控制寄存器TCON:用于啟動(dòng)和停止定時(shí)器的計(jì)數(shù),并控制定時(shí)器的狀態(tài);單片機(jī)復(fù)位時(shí),兩個(gè)寄存器的所有位都被清0。725.1定時(shí)器的結(jié)構(gòu)及工作原理組成:兩個(gè)16位的定時(shí)器T0和兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器T1、T0。每個(gè)定時(shí)器內(nèi)部結(jié)構(gòu)實(shí)際上就是一個(gè)可編程的加法計(jì)數(shù)器,由編程來(lái)設(shè)置它工作在定時(shí)狀態(tài)還是計(jì)數(shù)狀態(tài)。兩種工作模式: (1)計(jì)數(shù)器工作模式
就是對(duì)外部事件進(jìn)行計(jì)數(shù)。計(jì)數(shù)脈沖來(lái)自相應(yīng)的外部輸入引腳T0(P3.4)或T1(P3.5)。當(dāng)輸入信號(hào)發(fā)生由1至0的負(fù)跳變(下降沿)時(shí),計(jì)數(shù)器(TH0,TL0或TH1,TL1)的值增1。計(jì)數(shù)的最高頻率一般為振蕩頻率的1/24。Why? (2)定時(shí)器工作模式
也是通過(guò)計(jì)數(shù)實(shí)現(xiàn)的。計(jì)數(shù)脈沖來(lái)自內(nèi)部時(shí)鐘脈沖,每個(gè)機(jī)器周期計(jì)數(shù)值增1,每個(gè)機(jī)器周期=12個(gè)振蕩周期,因此計(jì)數(shù)頻率為振蕩頻率的1/12。所以定時(shí)時(shí)間=計(jì)數(shù)值×機(jī)器周期。4種工作方式(方式0-方式3)。兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器T1、T0。74當(dāng)控制信號(hào)定時(shí)器工作在定時(shí)方式;加1計(jì)數(shù)器對(duì)脈沖f進(jìn)行計(jì)數(shù),每來(lái)一個(gè)脈沖,計(jì)數(shù)器加1,直到計(jì)時(shí)器計(jì)滿溢出;因?yàn)椋匆粋€(gè)計(jì)數(shù)脈沖的周期就是一個(gè)機(jī)器周期;計(jì)數(shù)器計(jì)數(shù)的是機(jī)器周期脈沖個(gè)數(shù)。從而實(shí)現(xiàn)定時(shí)。當(dāng)控制信號(hào)定時(shí)器工作在計(jì)數(shù)方式;加1計(jì)數(shù)器對(duì)來(lái)自輸入引腳T0(P3.4)和T1(P3.5)的外信號(hào)脈沖進(jìn)行計(jì)數(shù),每來(lái)一個(gè)脈沖,計(jì)數(shù)器加1,直到計(jì)時(shí)器計(jì)滿溢出;TxTHxTFxTLxTRxINTx定時(shí)計(jì)數(shù)
控制信號(hào)K“1”啟動(dòng),計(jì)數(shù)器運(yùn)行;“0”停止,計(jì)數(shù)器停止;定時(shí)器/計(jì)數(shù)器原理框圖加1計(jì)數(shù)器10當(dāng)控制信號(hào)定時(shí)器工作在定時(shí)方式;控制信號(hào)K可以控制計(jì)數(shù)器的“啟動(dòng)”和“停止”,75
TCON(88H)11TCON(88H)在每個(gè)機(jī)器周期的S5P2期間采樣檢測(cè)引腳輸入電平。若前一個(gè)機(jī)器周期采樣值為“1”,后一個(gè)機(jī)器周期采樣值為“0”,則計(jì)數(shù)器加1。新的計(jì)數(shù)值在檢測(cè)到輸入引腳電平發(fā)生“1”到“0”的負(fù)跳變(下降沿)后,于下一個(gè)機(jī)器周期的S3P1期間裝入計(jì)數(shù)器中。由于CPU需要兩個(gè)機(jī)器周期來(lái)識(shí)別一個(gè)“1”到“0”的跳變信號(hào),所以最高的計(jì)數(shù)頻率為振蕩周期的1/24。76P1P2S1振蕩周期狀態(tài)周期機(jī)器周期機(jī)器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2在每個(gè)機(jī)器周期的S5P2期間采樣檢測(cè)引腳輸入電平。12P1P5.1定時(shí)器的結(jié)構(gòu)及工作原理77定時(shí)/計(jì)數(shù)器對(duì)輸入信號(hào)的要求外部計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24,例如選用12MHz頻率的晶體,則可輸入500KHz的外部脈沖。輸入信號(hào)的高、低電平至少要分別保持一個(gè)機(jī)器周期。 如圖所示,圖中Tcy為機(jī)器周期。5.1定時(shí)器的結(jié)構(gòu)及工作原理13定時(shí)/計(jì)數(shù)器對(duì)輸入信號(hào)的要可編程定時(shí)器的工作方式、啟動(dòng)、停止、溢出標(biāo)志、計(jì)數(shù)器等都是可編程的——通過(guò)設(shè)置寄存器TMOD,TCON,TH0,TL0,TH1和TL1實(shí)現(xiàn)。當(dāng)設(shè)置了定時(shí)器的工作方式并啟動(dòng)定時(shí)器工作后,定時(shí)器就按被設(shè)定好的工作方式獨(dú)立工作,不再占用CPU,只有在計(jì)數(shù)器計(jì)滿溢出時(shí)才向CPU申請(qǐng)中斷,占用CPU。由此可見,定時(shí)器是單片機(jī)中工作效率高且應(yīng)用靈活的部件。78可編程定時(shí)器的工作方式、啟動(dòng)、停止、溢出標(biāo)志、計(jì)數(shù)器等都是可5.2定時(shí)器的TMOD和TCON寄存器8051單片機(jī)定時(shí)器主要有幾個(gè)特殊功能寄存器組成: TMOD,TCON,TH0,TL0,TH1,TL1。TMOD:設(shè)置定時(shí)器的工作方式;TCON:控制定時(shí)器的啟動(dòng)和停止;TH0和TL0:存放定時(shí)器T0的初值或計(jì)數(shù)結(jié)果;TH0存放高8位,TL0存放低8位;TH1和TL1:存放定時(shí)器T1的初值或計(jì)數(shù)結(jié)果;TH1存放高8位,TL1存放低8位;795.2定時(shí)器的TMOD和TCON寄存器8051單片機(jī)定時(shí)5.2.1工作方式控制寄存器TMOD80
8位分為兩組,高4位控制T1,低4位控制T0。(1)GATE—門控位
0:
以TRX(X=0,1)來(lái)啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。
1:
用外中斷引腳(INT0*或INT1*)上的高電平和TRX來(lái)啟 動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。5.2.1工作方式控制寄存器TMOD16 8位分為兩組,高(4)TMOD無(wú)位地址,不能位尋址。(5)復(fù)位時(shí),TMOD所有位均為“0”。(3)C/T*—計(jì)數(shù)器模式和定時(shí)器模式選擇位
0:
定時(shí)器模式。
1:
計(jì)數(shù)器模式。(2)M1、M0—工作方式選擇位
M1M0 工作方式
00
方式0,13位定時(shí)器/計(jì)數(shù)器。
01
方式1,16位定時(shí)器/計(jì)數(shù)器。
10
方式2,8位常數(shù)自動(dòng)重新裝載
11
方式3,僅適用于T0,
(4)TMOD無(wú)位地址,不能位尋址。(3)C/T*—5.2.2控制寄存器TCON低4位與外部中斷有關(guān),后面介紹。高4位的功能如下:
(1)TF1、TF0
—計(jì)數(shù)溢出標(biāo)志位 定時(shí)器T0或T1計(jì)數(shù)溢出時(shí),由硬件自動(dòng)將此位置“1”; TFx可以由程序查詢,也是定時(shí)中斷的請(qǐng)求源;
(2)TR1、TR0
—計(jì)數(shù)運(yùn)行控制位 TRx=1:
啟動(dòng)定時(shí)器/計(jì)數(shù)器工作
TRx=0:
停止定時(shí)器/計(jì)數(shù)器工作825.2.2控制寄存器TCON低4位與外部中斷有關(guān),后面介5.2.3定時(shí)/計(jì)數(shù)器的初始化MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器是可編程的,但在進(jìn)行定時(shí)或計(jì)數(shù)之前要對(duì)程序進(jìn)行初始化,具體步驟如下:(1)對(duì)TMOD賦值,以確定定時(shí)器的工作模式;(2)置定時(shí)/計(jì)數(shù)器初值,直接將初值寫入寄存器的TH0、TL0或TH1、TL1;(3)根據(jù)需要,對(duì)IE置初值,開放定時(shí)器中斷;(4)對(duì)TCON寄存器中的TR0或TR1置位,啟動(dòng)定時(shí)/計(jì)數(shù)器,置位以后,計(jì)數(shù)器即按規(guī)定的工作模式和初值進(jìn)行計(jì)數(shù)或開始定時(shí)。835.2.3定時(shí)/計(jì)數(shù)器的初始化MCS-51單片機(jī)的定時(shí)器5.2.3定時(shí)/計(jì)數(shù)器的初始化初值計(jì)算:
設(shè)計(jì)數(shù)器的最大值為M,則置入的初值X為:計(jì)數(shù)方式:X=M-計(jì)數(shù)值定時(shí)方式:由(M-X)T=定時(shí)值,得X=M-定時(shí)值/TT為計(jì)數(shù)周期,是單片機(jī)的機(jī)器周期。(模式0:M為213,模式1:M為216,模式2和3:M為28)84例如:機(jī)器周期為1μs時(shí),若工作在模式0,則最大定時(shí)值為:213×1μs=8.192ms若工作在模式1,則最大定時(shí)值為:216×1μs=65.536ms5.2.3定時(shí)/計(jì)數(shù)器的初始化初值計(jì)算:20例如:機(jī)器周5.3定時(shí)器的工作方式MCS-51的定時(shí)器T0有4種工作方式: 即:方式0,方式1,方式2,方式3。MCS-51的定時(shí)器T1有3種工作方式: 即:方式0,方式1,方式2。855.3定時(shí)器的工作方式MCS-51的定時(shí)器T0有4種工作方5.3定時(shí)器的工作方式——方式05.2.1方式0
M1、M0設(shè)置為00,為13位計(jì)數(shù)器,以T1為例,其框圖如下:86計(jì)數(shù)脈沖輸入加1計(jì)數(shù)器5.3定時(shí)器的工作方式——方式05.2.1方式0225.3定時(shí)器的工作方式——方式0TH1D12D11D10D9D8D7D6D5TL1×××D4D3D2D1D087在這種方式下,16位寄存器TH1和TL1只用13位,由TH1的8位和TL1的低5位組成。TL1的高3位不定。當(dāng)TL1的低5位計(jì)數(shù)溢出時(shí),向TH1進(jìn)位。而TH1計(jì)數(shù)溢出時(shí),則向中斷標(biāo)志位TF1進(jìn)位(即硬件將TF1置1),并請(qǐng)求中斷。可通過(guò)查詢TF1是否置“1”或考察中斷是否發(fā)生來(lái)判定定時(shí)器T1的操作完成與否。5.3定時(shí)器的工作方式——方式0TH1D12D11D5.3定時(shí)器的工作方式——方式0當(dāng)C/T=0時(shí),為定時(shí)工作模式,開關(guān)接到振蕩器的12分頻器輸出上,計(jì)數(shù)器對(duì)機(jī)器周期脈沖計(jì)數(shù)。其定時(shí)時(shí)間為:
(213-初值)×振蕩周期×12
例如:若晶振頻率為12MHz,則最長(zhǎng)的定時(shí)時(shí)間為(213-0)×(1/12)×12us=8.191ms當(dāng)C/T=1時(shí),為計(jì)數(shù)工作模式,開關(guān)與外部引腳T1(P3.5)接通,計(jì)數(shù)器對(duì)來(lái)自外部引腳的輸入脈沖計(jì)數(shù)。當(dāng)外部信號(hào)發(fā)生負(fù)跳變時(shí)計(jì)數(shù)器加1。
885.3定時(shí)器的工作方式——方式0當(dāng)C/T=0時(shí),為定時(shí)工作5.3定時(shí)器的工作方式——方式0GATE控制定時(shí)器Tx(T1或T0)的條件:(1)當(dāng)GATE=0時(shí),“或門”輸出恒為1,“與門”的輸出信號(hào)K由TRx決定(即此時(shí)K=TRx),定時(shí)器不受INTx輸入電平的影響,由TRx直接控制定時(shí)器的啟動(dòng)和停止。
TRx=1;計(jì)數(shù)啟動(dòng); TRx=0;計(jì)數(shù)停止;(2)當(dāng)GATE=1時(shí),“與門”的輸出信號(hào)K由INTx輸入電平和TRx位的狀態(tài)一起決定(即此時(shí)K=TRx·INTx), 當(dāng)且僅當(dāng)TRx=1且INTx=1(高電平)時(shí),計(jì)數(shù)啟動(dòng);
否則,計(jì)數(shù)停止。
895.3定時(shí)器的工作方式——方式0GATE控制定時(shí)器Tx(T5.3定時(shí)器的工作方式——方式15.3.2方式1
M1、M0=01,為16位的計(jì)數(shù)器,除位數(shù)外,其他與方式0相同。其定時(shí)時(shí)間為:
(216-初值)×振蕩周期×12
例如:若晶振頻率為12MHz,則最長(zhǎng)的定時(shí)時(shí)間為 (216-0)×(1/12)×12us=65.536ms905.3定時(shí)器的工作方式——方式15.3.2方式1265.3定時(shí)器的工作方式——方式25.3.3方式2
M1、M0=10,為自動(dòng)恢復(fù)初值的8位計(jì)數(shù)器,等效框圖如下:TLx作為8位計(jì)數(shù)器,THx作為重置初值的緩沖器。91
THx作為常數(shù)緩沖器,當(dāng)TLx計(jì)數(shù)溢出時(shí),在置“1”溢出標(biāo)志TFx的同時(shí),還自動(dòng)的將THx中的初值送至TLx,使TLx從初值開始重新計(jì)數(shù)。定時(shí)器/計(jì)數(shù)器的方式2工作過(guò)程如圖(x=0,1)。5.3定時(shí)器的工作方式——方式25.3.3方式2275.3定時(shí)器的工作方式——方式2優(yōu)點(diǎn):
方式0和方式1用于循環(huán)重復(fù)定時(shí)或計(jì)數(shù)時(shí),在每次計(jì)數(shù)器擠滿溢出后,計(jì)數(shù)器復(fù)0。若要進(jìn)行新一輪的計(jì)數(shù),就得重新裝入計(jì)數(shù)初值。這樣一來(lái)不僅造成編程麻煩,而且影響定時(shí)精度。而方式2具有初值自動(dòng)裝入的功能,避免了這個(gè)缺點(diǎn),可實(shí)現(xiàn)精確的定時(shí)。缺點(diǎn): 只有8位計(jì)數(shù)器,定時(shí)時(shí)間短、計(jì)數(shù)范圍小。其定時(shí)時(shí)間為:
(28-初值)×振蕩周期×12若晶振頻率為12MHz,則最長(zhǎng)的定時(shí)時(shí)間為(28-0)×(1/12)×12us=0.256ms92方式2工作過(guò)程圖(x=0,1)。5.3定時(shí)器的工作方式——方式2優(yōu)點(diǎn):28方式2工作過(guò)程圖5.3定時(shí)器的工作方式——方式35.3.4方式3
只適用于定時(shí)器/計(jì)數(shù)器T0。T1不能工作在方式3。 如果將T1置為方式3,則相當(dāng)于TR1=0,停止計(jì)數(shù)(此時(shí)T1可用來(lái)作串行口波特率產(chǎn)生器)。1.工作方式3下的T0
T0在方式3時(shí)被拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器:TH0和TL0。
8位計(jì)數(shù)器TL0使用T0的狀態(tài)控制位C/T*、GATE、TR0、INT0,它既可以工作在定時(shí)方式,也可以工作在計(jì)數(shù)方式。8位定時(shí)器TH0被固定為一個(gè)8位定時(shí)器(不能作外部計(jì)數(shù)模式),并使用定時(shí)器T1的狀態(tài)控制位TR1,同時(shí)占用定時(shí)器T1的中斷請(qǐng)求源TF1。此時(shí),定時(shí)器TH0的啟動(dòng)或停止只受TR1控制。
TR1=1時(shí),啟動(dòng)TH0的計(jì)數(shù);TR1=0時(shí),停止TH0的計(jì)數(shù)935.3定時(shí)器的工作方式——方式35.3.4方式3295.3定時(shí)器的工作方式94各引腳與T0的邏輯關(guān)系如圖所示:5.3定時(shí)器的工作方式30各引腳與T0的邏輯關(guān)系如圖所示:5.3定時(shí)器的工作方式2.T0工作在方式3下T1的各種工作方式注意:當(dāng)T0處于方式3時(shí),T1仍可設(shè)置為方式0、方式1和方式2。當(dāng)時(shí)由于TR1、TF1和T1的中斷源都已被定時(shí)器T0(中的TH0)占用,所以定時(shí)器T1僅有控制位C/T來(lái)決定其工作在定時(shí)方式或計(jì)數(shù)方式。當(dāng)計(jì)數(shù)器計(jì)滿溢出時(shí),不能置位“TF1”,而只能將輸出送往串口。所以,此時(shí)定時(shí)器T1一般用作串口的波特率發(fā)生器,或不需要中斷的場(chǎng)合。 (1)T1工作在方式0955.3定時(shí)器的工作方式2.T0工作在方式3下T1的各種工5.4定時(shí)器的編程和應(yīng)用編程說(shuō)明MCS-51單片機(jī)的定時(shí)器是可編程的,但在進(jìn)行定時(shí)或計(jì)數(shù)之前要對(duì)程序進(jìn)行初始化,具體步驟如下:(1)確定工作方式字:對(duì)TMOD寄存器正確賦值;(2)確定定時(shí)初值:計(jì)算初值,直接將初值寫入寄存器的TH0、TL0或TH1、TL1; 初值計(jì)算:設(shè)計(jì)數(shù)器的最大值為M,則置入的初值X為: 計(jì)數(shù)方式:X=M-計(jì)數(shù)值 定時(shí)方式:由(M-X)T=定時(shí)值,得X=M-定時(shí)值/T T為計(jì)數(shù)周期,是單片機(jī)的機(jī)器周期。 (模式0M為213,模式1M為216,模式2和3M為28)(3)根據(jù)需要,對(duì)IE置初值,開放定時(shí)器中斷;(4)啟動(dòng)定時(shí)/計(jì)數(shù)器,對(duì)TCON寄存器中的TR0或TR1置位,置位以后,計(jì)數(shù)器即按規(guī)定的工作模式和初值進(jìn)行計(jì)數(shù)或開始定時(shí)。965.4定時(shí)器的編程和應(yīng)用編程說(shuō)明325.4定時(shí)器的編程和應(yīng)用97
例5-1
要在P1.0上輸出一個(gè)周期為2ms的方波,假設(shè)系統(tǒng)振蕩頻率采用12MHz。
利用T0方式0產(chǎn)生1ms的定時(shí)
方波的周期用T0來(lái)確定,讓T0每隔1ms計(jì)數(shù)溢出1次,即TF0=1;查詢到TF0=1則CPU對(duì)P1.0取反。即要使P1.0每隔1ms取反一次。5.4定時(shí)器的編程和應(yīng)用33 例5-1要在P1.0上輸5.4定時(shí)器的編程和應(yīng)用98第一步:確定工作方式字 方式0(13位)最長(zhǎng)可定時(shí)8.192ms;
方式1(16位)最長(zhǎng)可定時(shí)65.536ms; 方式2(8位)最長(zhǎng)可定時(shí)256s。T0為方式0,M1M0=00定時(shí)工作狀態(tài),C/T=0GATE=0,不受INT0控制,T1不用全部取“0”值。故TMOD=00H5.4定時(shí)器的編程和應(yīng)用34第一步:確定工作方式字5.4定時(shí)器的編程和應(yīng)用99第二步:計(jì)算1ms定時(shí)的初值X
設(shè)初值為X,則有: (213-X)×12×10-6×1/12=1×10-3 可求得:X=8192-1000=7192 X化為16進(jìn)制,即X=1C18H=1,1100,000
1,1000B。 所以,T0的初值為:
TH0=E0HTL0=18HTH011100000TL0×××110005.4定時(shí)器的編程和應(yīng)用35第二步:計(jì)算1ms定時(shí)的初5.4定時(shí)器的編程和應(yīng)用第三步:程序設(shè)計(jì)
采用查詢TF0的狀態(tài)來(lái)控制P1.0的輸出,同時(shí)要重新裝入初值。1005.4定時(shí)器的編程和應(yīng)用第三步:程序設(shè)計(jì)36參考程序:
ORG 0100HMAIN: MOV TMOD,#00H ;設(shè)置T0為方式0 MOV TL0, #18H ;送計(jì)數(shù)初值 MOV TH0, #0E0H ;送計(jì)數(shù)初值 SETB TR0 ;啟動(dòng)T0LOOP: JBC TF0, NEXT;查詢定時(shí)時(shí)間到,轉(zhuǎn)NEXT,同時(shí)清TF0
SJMP LOOP ;重復(fù)循環(huán)NEXT:
MOV TL0,#18H
;T0重置初值
MOV TH0,#0E0H;T0重置初值
CPL P1.0
;P1.0的狀態(tài)取反
SJMP LOOP ;重復(fù)循環(huán) END101參考程序:375.4定時(shí)器的編程和應(yīng)用例5-2將[例5-1]中的輸出方波周期改為1秒。
分析:周期為1s的方波要求500ms的定時(shí)。
(1)T0工作方式的確定
因定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式?由各種工作方式的特性,可計(jì)算出: 方式0(13位)最長(zhǎng)可定時(shí)8.192ms;
方式1(16位)最長(zhǎng)可定時(shí)65.536ms; 方式2(8位)最長(zhǎng)可定時(shí)256s。
所以采用定時(shí)器定時(shí)加軟件計(jì)數(shù)的方法來(lái)實(shí)現(xiàn)延長(zhǎng)定時(shí)。 選方式1,定時(shí)50ms,軟件計(jì)數(shù)10次。 50ms×10=500ms。
所以,TMOD=01H102以上各方式都不滿足要求5.4定時(shí)器的編程和應(yīng)用例5-2將[例5-1]中的輸出5.4定時(shí)器的編程和應(yīng)用
(2)計(jì)算計(jì)數(shù)初值 因?yàn)?(216-X)×12×10-6×1/12=50×10-3 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=B0H
(3)10次計(jì)數(shù)的實(shí)現(xiàn) 設(shè)計(jì)一個(gè)軟件計(jì)數(shù)器,初始值設(shè)為10。每隔50ms定時(shí)時(shí)間到,產(chǎn)生溢出標(biāo)志TF0,程序查詢到TF0=1,則軟件計(jì)數(shù)器減1。這樣減到0時(shí)就獲得了500ms的定時(shí)。1035.4定時(shí)器的編程和應(yīng)用(2)計(jì)算計(jì)數(shù)初值39(4)程序設(shè)計(jì)(參考程序)
MAIN: MOVTMOD, #01H ;設(shè)T0工作在方式1 MOVTL0, #0B0H;給T0設(shè)初值 MOVTH0, #3CH MOV R7, #10 ;軟件計(jì)數(shù)器初值 SETBTR0 ;啟動(dòng)T0LOOP: JBC TF0,NEXT ;查詢定時(shí)時(shí)間到,轉(zhuǎn)NEXT,同時(shí)清TF0 SJMPLOOPNEXT: DJNZR7,EXIT ;R7不等于0,則不對(duì)P1.0取反 CPL P1.0 MOV R7,#10 ;重置軟件計(jì)數(shù)器初值EXIT:
MOVTL0,#0B0H ;T0中斷子程序,重裝初值 MOVTH0,#3CH SJMP LOOP END104(4)程序設(shè)計(jì)(參考程序)405.4定時(shí)器的編程和應(yīng)用以上的定時(shí)程序中,程序都要重置計(jì)時(shí)器初值,這樣從定時(shí)器溢出發(fā)出溢出標(biāo)志,到重裝完定時(shí)器初值,在開始計(jì)數(shù),之間總會(huì)有一段時(shí)間間隔,使定時(shí)時(shí)間增加了若干微秒,造成定時(shí)不夠精確。 為了減小這
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 手機(jī)基礎(chǔ)知識(shí)培訓(xùn)課件
- 2025年幼教基本功培訓(xùn):聚焦兒童全面發(fā)展
- 2025年市場(chǎng)營(yíng)銷學(xué)授課教案的教學(xué)效果評(píng)估
- 重陽(yáng)節(jié)敬老活動(dòng)總結(jié)
- DB31∕T 223-2020 蒸汽供熱系統(tǒng)經(jīng)濟(jì)運(yùn)行
- 三農(nóng)產(chǎn)品電子商務(wù)營(yíng)銷創(chuàng)新方案
- 卷簾門安裝工程施工合同
- 電子商務(wù)運(yùn)營(yíng)增長(zhǎng)計(jì)劃
- 維修后備人才培訓(xùn)教材-設(shè)備管理基礎(chǔ)知識(shí)
- 社會(huì)保障國(guó)際比較課件6社會(huì)保障管理體制國(guó)際比較
- 衛(wèi)生健康大數(shù)據(jù)底座建設(shè)需求
- 北師大版四年級(jí)下冊(cè)書法9《日字底》教案
- 老年糖尿病的皮膚護(hù)理
- 《管理會(huì)計(jì)學(xué)》(孫茂竹主編)教案 第1-12章
- 2024年-ITSS新標(biāo)準(zhǔn)培訓(xùn)學(xué)習(xí)材料
- 《職業(yè)道德與法治》開學(xué)第一課(導(dǎo)言)(課件)-【中職專用】中職思想政治《職業(yè)道德與法治》高效課堂課件+教案(高教版2023·基礎(chǔ)模塊)
- 第2課《讓美德照亮幸福人生》第2框《做守家庭美德的好成員》-【中職專用】《職業(yè)道德與法治》同步課堂課件
- (正式版)SHT 3227-2024 石油化工裝置固定水噴霧和水(泡沫)噴淋滅火系統(tǒng)技術(shù)標(biāo)準(zhǔn)
- (正式版)JBT 10437-2024 電線電纜用可交聯(lián)聚乙烯絕緣料
- 法律知識(shí)圖譜構(gòu)建及應(yīng)用
- 誦讀經(jīng)典傳承文明課件
評(píng)論
0/150
提交評(píng)論