前言
文章的開始,有人可能會問,我們在前幾節(jié)課學(xué)了延時函數(shù),為什么不用延時函數(shù)來取代定時器,而必須學(xué)定時器呢?這里,有如下幾個理由:
1.使用delay函數(shù)時,單片機(jī)的cpu做不了其他事情,只能等待延時結(jié)束。
2.用了定時器cpu就可以做其他的事情,只要定時器溢出時,執(zhí)行一下中斷即可。
3.這就相當(dāng)于原來用delay的時候cpu得自己數(shù)數(shù)計時,有了定時器就相當(dāng)于cpu有了一個鬧鐘,時間一到就響了,提醒你做該做的事情。
一.定時器的工作模式
STC89C52的定時器1和定時器2有如下四種工作模式
?我們通常使用的是工作模式1,即16位定時器/計數(shù)器,本文所使用的也是工作模式1,所以其他工作模式便不再過多介紹。有興趣的小伙伴可以自行了解。
下面的配圖即為工作模式1的流程圖
流程圖詳解:
定時器分為三大部分: 從左到右的圈圈里分別是時鐘、計數(shù)系統(tǒng)、中斷系統(tǒng)
1.我們先來看時鐘部分,首先,我們所使用的單片機(jī)在時鐘部分接入的是12T mode,往下走,遇到一個C/T開關(guān),C->counter 計數(shù)器,當(dāng)這個開關(guān)選1時,則為計數(shù)器模式。 T->timer 定時器,當(dāng)這個開關(guān)選0時即為定時器,也就是我們本節(jié)課所需要使用到的。當(dāng)定時器\計數(shù)器 模式開啟時,時鐘系統(tǒng)會在固定的時間間隔內(nèi)向計數(shù)系統(tǒng)發(fā)送一次脈沖,當(dāng)計數(shù)系統(tǒng)的寄存器(TH0,TH1)溢出時
便將中斷標(biāo)志位TF0置1,標(biāo)志著中斷信號的傳遞。
2.我們再來看計數(shù)系統(tǒng)部分,這部分包括上下兩部分,我們先來講下面部分。下面部分是一個開關(guān)的控制系統(tǒng),也就是上半部分的那個開關(guān),這個開關(guān)決定著定時器0是否開啟,時鐘的脈沖信號是否能傳輸?shù)接嫈?shù)系統(tǒng)中。這個開關(guān)有兩種控制模式。
1.GATE門控端置0,由TR0單獨控制,若TR0為1,則開關(guān)閉合,反之開關(guān)則斷開。
2.GATE門控端置1,由外部引腳INT0和TR0共同控制,這種情況下下,INT0和TR0必須都為1才可以實現(xiàn)開關(guān)的閉合,否則開關(guān)都是斷開。
原因:GATE門控端出來的那個三角形是一個“非門”,如果給GATE賦值0,則出來是1,如果給GATE賦值1,則出來是0。三角形出來的又遇到一個圖形,這個圖形是“或門”。最后一個圖形是“與門”,這里的“非門、或門、與門”與C語言中的與或非完全相同。這就解釋了上面的兩種情況。
3.最后我們再來看看中斷系統(tǒng):
?當(dāng)計數(shù)系統(tǒng)溢出時,中斷標(biāo)志位TF0置1,向中斷系統(tǒng)請求中斷,我們本次使用的是定時器0,所以配置T0中斷即可,ET0為定時器0的中斷寄存器,置1開啟即可,EA為總使能,相當(dāng)于總開關(guān),也置1開啟即可,最后就是PT0優(yōu)先級寄存器,系統(tǒng)默認(rèn)定時器0為低優(yōu)先級,所以配置0即可。
總結(jié):1.定時器原理:系統(tǒng)時鐘每隔一段時間向計數(shù)系統(tǒng)發(fā)送脈沖,計數(shù)系統(tǒng)由TR0直接控制或者TR0和GATE門控端共同控制,當(dāng)定時器開關(guān)被打開后,脈沖發(fā)送到計數(shù)系統(tǒng),當(dāng)計數(shù)系統(tǒng)溢出時,中斷標(biāo)志位TF0被置1,向中斷系統(tǒng)發(fā)送中斷請求,中斷系統(tǒng)通過配置中斷寄存器從而產(chǎn)生中斷。
2.定時器0所用的16位定時器是由兩個八位寄存器拼接在一起的,每次中斷結(jié)束后都置0,所以需要賦初值,而后面所講的串口用的是8位重裝定時器,和這個有所差別
3.高優(yōu)先級的中斷可以打斷低優(yōu)先級的中斷。
4.單片機(jī)通過配置寄存器來控制內(nèi)部電路的連接
5.TCON是定時器控制寄存器,也就是TR0,TF0,TR1,TF1等寄存器
6.TMOD是定時器模式寄存器,控制單片機(jī)位定時器1或者定時器0,其中,高4位配0,低四位中的最后兩位M1、M0分別配置為0 1,則為定時器0的工作模式1(常用),若低四位配置為0,高四位中的M1、M0分別配置為0 1則為定時器1的工作模式1。(常用)
?7.可位尋址就是可以單獨賦值,如LED,可以單獨對每個燈進(jìn)行配置。文章來源:http://www.zghlxwxcb.cn/news/detail-414054.html
8.不可位尋址只能整體賦值,TMOD就是不可位尋址,只能整體賦值,下節(jié)我們會講到TMOD的具體賦值方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-414054.html
到了這里,關(guān)于C51單片機(jī)中斷系統(tǒng)與定時器/計時器(理論部分)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!