新聞中心

51單片機(jī)-定時器

作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
定時/計(jì)數(shù)器的結(jié)構(gòu)和工作原理
定時/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個寄存器組成。80C51單片機(jī)定時/計(jì)數(shù)器的工作是由兩個特殊功能寄存器控制的。TMOD是定時/計(jì)數(shù)器的工作方式寄存器,確定工作方式和功能,低四位用于T0,高四位用于T1。TCON是控制寄存器,控制T0和T1的啟動和停止及溢出標(biāo)志,高四位與定時器有關(guān),低四位與外部中斷有關(guān)。如果定時/計(jì)數(shù)器工作于定時模式,則表示定時時間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿。加1計(jì)數(shù)器輸入的計(jì)數(shù)脈沖有兩個來源,一個是由系統(tǒng)的時鐘振蕩脈沖經(jīng)12分頻后送來;一個是T0或T1引腳輸入的外部脈沖源。








中斷允許控制。CPU對中斷系統(tǒng)所有中斷以及某個中斷源的開放和屏蔽是由中斷允許寄存器
IE控制的。
#include <reg52.h>
unsigned int t;
sbit p3_4 = P3^4;
void init_timer(){
TH0 = (65535 - 50000) / 256; //求取高8位
TL0 = (65535 - 50000) % 256; //求取低8位
EA = 1; //CPU總中斷允許位
ET0 = 1; //定時/計(jì)數(shù)器中斷允許位
IT0 = 1; //下降沿有效
TR0 = 1; //定時器啟動
TMOD = 0x01; //使用定時器T0,16位計(jì)數(shù)器
p3_4 = 1;
}
void main(){
init_timer();
t = 0;
while(1){
if(t == 20){
p3_4 = "p3_4; //響一秒,停一秒
t = 0;
}
}
}
void bell() interrupt 1{
TH0 = (65535 - 50000) / 256; //從15535開始計(jì)時,共50000us,50ms
TL0 = (65535 - 50000) % 256; //20*50 = 1000ms = 1s 即1s響停一次
t++;
}


評論


技術(shù)專區(qū)

關(guān)閉