對MCS-51單片機(jī)定時器和計數(shù)器區(qū)別的理解
在這幾部分內(nèi)容中,計數(shù)器/定時器對于初學(xué)者說很容易搞混淆,下面我將對這方面的內(nèi)容結(jié)合自己的學(xué)習(xí)經(jīng)驗談幾點看法。
本文引用地址:http://m.butianyuan.cn/article/201611/315754.htm計數(shù)器和定時器的本質(zhì)是相同的,他們都是對單片機(jī)中產(chǎn)生的脈沖進(jìn)行計數(shù),只不過計數(shù)器是單片機(jī)外部觸發(fā)的脈沖,定時器是單片機(jī)內(nèi)部在晶振的觸發(fā)下產(chǎn)生的脈沖。當(dāng)他們的脈沖間隔相同的時候,計數(shù)器和定時器就是一個概念。
在定時器和計數(shù)器中都有一個溢出的概念,那什么是溢出了。呵呵,我們可以從一個生活小常識得到答案,當(dāng)一個碗放在水龍頭下接水的時候,過了一會兒,碗的水滿了,就發(fā)生溢出。同樣的道理,假設(shè)水龍頭的水是一滴滴的往碗里滴,那么總有一滴水是導(dǎo)致碗中的水溢出的。在碗中溢出的水就浪費了,但是在單片機(jī)的定時計數(shù)器中溢出將導(dǎo)致一次中斷,至于什么是中斷我們下次再講,這里只是初步的提下概念,中斷就是能夠打斷系統(tǒng)正常運行,而去運行中斷服務(wù)程序的過程,當(dāng)服務(wù)程序運行完以后又自動回到被打斷的地方繼續(xù)運行。
在定時器計數(shù)器中,我們有個概念叫容量,就是最大計數(shù)量。方式0是2的13次方,方式1是2的13次方,方式2是2的8次方,方式3是2的8次方。把水滴比喻成脈沖,那么導(dǎo)致碗中水溢出的最后一滴水的就是定時計數(shù)器的溢出的最后一個脈沖。
在各種單片機(jī)書本中,在介紹定時計數(shù)器時都講到一個計數(shù)初值,那什么是計數(shù)初值呢?在這里我們還是假設(shè)水滴碗。假設(shè)第一百滴水能夠使碗中的水溢出,我們就知道這個碗的容量是100。問題1,我如何才能使碗接到10滴水就溢出呢?呵呵,我可以想象,如果拿一個空碗去接水,那么還是得要100滴水才能溢出,但是如果我們拿一個已經(jīng)裝有水的碗拿去接,那就不用100滴了。到此我們可以算出,要使10滴水讓碗中的水溢出,那么碗中就先要裝90滴水。
在定時計數(shù)器中,這90滴水就是我們所謂的初始值。問題2,在一個車間我們?nèi)绾卫脝纹瑱C(jī)對100件產(chǎn)品進(jìn)行計件,并進(jìn)行自動包裝呢?
我們可以利用計數(shù)器計數(shù)100,在中斷中執(zhí)行一個自動包裝的動作就可以了。
在這里計數(shù)初值有3個,假設(shè)有方式0:計數(shù)初值=8912(2的13次方)—100=8812。方式1:計數(shù)初值=65536(2的16次方)—100=65436。方式0:計數(shù)初值=256(2的8次方)—100=156。
根據(jù)所得的初始值,再將其轉(zhuǎn)換為16進(jìn)制或者2進(jìn)制,就可以進(jìn)行計數(shù)或者定時了。當(dāng)然要讓程序完全的運行起來還需要相應(yīng)的寄存器進(jìn)行設(shè)置。這些可以從各種單片機(jī)教程中找到。
以上是我個人對mcs51單片機(jī)定時和計數(shù)器的理解,希望指正點評。
評論