欧美日韩中文国产一区丨亚洲日韩乱码中文无码蜜桃臀网站丨18禁亚洲深夜福利入口丨国产精品亚洲综合色区丨又色又爽又黄还免费视频

服務(wù)熱線:18069884716

采購(gòu)熱線:18069884716

贛鑫計(jì)時(shí)器效果看得見(jiàn),應(yīng)用于健身房、比賽、考試等場(chǎng)所

計(jì)數(shù)器有哪些基礎(chǔ)知識(shí)

返回列表 來(lái)源: 發(fā)布日期: 2020.07.04

51單片機(jī)/計(jì)數(shù)器基礎(chǔ)知識(shí)介紹

一、基本概念   

1、89C51有兩個(gè)計(jì)數(shù)器T0和T1,89C52還有一個(gè)T2。每個(gè)計(jì)數(shù)器都是由兩個(gè)8位的RAM  單元組成的,即每個(gè)計(jì)數(shù)器都是16 位的計(jì)數(shù)器,最大的計(jì)數(shù)容量是2 16 =65536,記住是從0-65535。

2、提供給定時(shí)器的計(jì)數(shù)源又是從哪里來(lái)的呢?就是由單片機(jī)的晶振經(jīng)過(guò)12 分頻后獲得的一個(gè)脈沖源。一個(gè)12M  的晶振,它提供給計(jì)數(shù)器的脈沖時(shí)間間隔是就是1us。

3、預(yù)置數(shù)計(jì)數(shù)法。如果每個(gè)脈沖是1微秒,則計(jì)滿65536個(gè)脈沖需時(shí)65.536毫秒。但是如果只需要10毫秒就可以了,怎么辦?只要在計(jì)數(shù)器里預(yù)先放進(jìn)55536,這樣只需要計(jì)數(shù)65536-55536=10000次,也就是10毫秒了。

二、相關(guān)寄存器

特殊功能寄存器TMOD(89H)
        用于T1              用于T0

GATE   C/T    M1   M0    GATE    C/T   M1    M0

GATE:0用于內(nèi)部脈沖;1用于外部脈沖。

C/T:0用于定時(shí)器;1用于計(jì)數(shù)器

M1M0:工作方式

M1,M0       范圍               特性

0,0工作方式0   13位,8192次         為了和51  的前輩48系列兼容。

0,1工作方式1   16位,65536次        16位,其他特性與工作方式0相同,比較常用。

1,0工作方式2   8位,256次           自動(dòng)再裝入預(yù)置數(shù),預(yù)置數(shù)放在T0(或T1)

                             的高8位中,只有低8  位參與計(jì)數(shù),通常用于

                             波特率發(fā)生器。

1,1工作方式3   8位,256次           TH0只能作為定時(shí)器用,TL0可作定時(shí)器或計(jì)數(shù)

                             器。溢出標(biāo)記:TL0  還是用原來(lái)的T0的標(biāo)記,

                             而TH0則借用T1的標(biāo)記,因此只有在T1  以工

                             作方式2  運(yùn)行時(shí),才讓T0 工作于方式3。

特殊功能寄存器TCON(88H)

      用于定時(shí)/計(jì)數(shù)器                   用于中斷

TF1     TR1    TF0     TR0     IE1    IT1     IE0     IT0

TR0/TR1:定時(shí)器 的開(kāi)關(guān)。

TF0/TF1:計(jì)數(shù)溢出后由0變?yōu)?

IT0/IT1:定時(shí)器/計(jì)數(shù)器中斷允許位。

在今天的分享中我們學(xué)習(xí)下單片機(jī)/計(jì)數(shù)器的使用,在前面的分享中我們接觸到了單片機(jī)時(shí)鐘周期、機(jī)器周期和指令周期的概念,我們?cè)贉亓?xí)下:

  1時(shí)鐘周期  1/晶振頻率M

  1機(jī)器周期  12( 51系列為12時(shí)鐘周期,有的改進(jìn)型單片機(jī)是1時(shí)鐘周期 )× 時(shí)鐘周期=12(1) × (1/晶振頻率M)=1us(1/12us,如采用12M晶體)。

  如果12MHZ晶振工作在51單片機(jī)12T模式下,需要使用定時(shí)器進(jìn)行50ms定時(shí)操作,定時(shí)器工作在方式1,那么我們?cè)撛鯓泳帉?xiě)程序呢?

  我們知道:

  12M的晶振每秒(s)可產(chǎn)生1M(10 6 us)個(gè)機(jī)器周期。

  50ms就需要50 × 1000us× 1us(1機(jī)器周期)個(gè)機(jī)器周期=50000個(gè)機(jī)器周期。

  如果定時(shí)器在方式1工作,是16位計(jì)數(shù)器,最大值為65536(2 16),也就是能進(jìn)行最大65536次計(jì)數(shù)。而50ms定時(shí)操作需要50000個(gè)機(jī)器周期,1個(gè)機(jī)器周期=1us,所以需要50000次計(jì)數(shù)操作。

為了計(jì)數(shù)器定時(shí)器工作,需要預(yù)先填充定時(shí)器初值(初值=定時(shí)器計(jì)數(shù)最大計(jì)數(shù)次數(shù)-所需定時(shí)計(jì)數(shù)次數(shù))。所以需設(shè)置定時(shí)器初值 15536=65536-50000,即3CB0H(10進(jìn)制15536轉(zhuǎn)換成16進(jìn)制數(shù)3CB0),所以TH0=0x3c,TL0=0xb0,高位就是 TH0的值,低位為T(mén)L0的值。

    如果使用11.0592MHZ的晶振,其他條件不變,11.0592M的晶振每秒可產(chǎn)生0.9216M個(gè)機(jī)器周期,50ms就需要46080 個(gè)機(jī)器周期。定時(shí)器在方式1工作,是16位計(jì)數(shù)器,最大值為65536,所以需設(shè)置初值19456=65536-46080,即4C00H,所以 TH0=0x4c,TL0=0x00。


    由上面的分析,我們可以得出推導(dǎo)16位定時(shí)器/計(jì)數(shù)器初值設(shè)定高8位TH0,低TL0的公式為:

    TH0=(65536-所需計(jì)數(shù)次數(shù))/256=初值/256;

    TL0=(65536-所需技術(shù)次數(shù))%6=初值%6;

    公式中的256是什么意思呢?我們的計(jì)時(shí)器是兩個(gè)8位組成的,那么要把那些差值裝進(jìn)這兩個(gè)8位,計(jì)數(shù)從低8位開(kāi)始,那么低8位最多能裝256 個(gè)機(jī)器周期,那么256計(jì)滿了就用高8位的,就是說(shuō)低8位滿一次高8位加1,那么高8位裝多少,低8位就滿了幾次,算法就是用差值除一下256取其整數(shù), 剩下的,就是還剩了小于256次數(shù)的就放在低8位,就是差值的余數(shù)。

  下面我們看個(gè)定時(shí)器/計(jì)數(shù)器0,產(chǎn)生定時(shí)中斷的例程。

  晶振頻率12M,其程序如下:

#include 

void timer0_init()

{

 TMOD = 0x01;        //定時(shí)器在方式1工作,是16位計(jì)數(shù)器,最大值為65536

 TL0 = 0xb0;           //給TL0賦計(jì)數(shù)初值0xb0

 TH0 = 0x3c;           //給TH0賦計(jì)數(shù)初值0x3c

 TR0 = 1;             //定時(shí)器開(kāi)始計(jì)數(shù)

 ET0 = 1;             //定時(shí)器中斷允許

 EA = 1;             //開(kāi)總中斷

} 

void main()

{

 timer0_init();

  w hile(1);

}

void timer0()  interrupt 1

{

 TH0=(65536-50000)/256;     //在中斷處理函數(shù)中需要重新給TH0賦初值。

 TL0=(65536-50000)%6;     //在中斷處理函數(shù)中需要重新給TL0賦初值。 

 加上我們希望的語(yǔ)句。  

} 

  上面給大家看了一段例程,講的是如何用定時(shí)器/計(jì)數(shù)器0實(shí)現(xiàn)中斷。單片機(jī)一般還有一個(gè)定時(shí)器/計(jì)數(shù)器1,它的編程和定時(shí)器/計(jì)數(shù)器0差不多。

   另外,單片機(jī)定時(shí)器/計(jì)數(shù)器的使用不單單體現(xiàn)在定時(shí)器中斷方面,但它們的使用都萬(wàn)變不離其綜,大家掌握了一種用法,對(duì)于其它的應(yīng)用也就不難掌握了。

咨詢熱線

18069884716