注:定時(shí)器與計(jì)數(shù)器原理與使用方法相似、此處計(jì)數(shù)器知識(shí)為基礎(chǔ)普及、后面詳講
2個(gè)定時(shí)器(寄存器)、定時(shí)器0、定時(shí)器1、(計(jì)數(shù)器0、計(jì)數(shù)器1)
每經(jīng)過一個(gè)機(jī)器周期、寄存器+1
TF:定時(shí)器溢出標(biāo)志。溢出時(shí)自動(dòng)置1。中斷時(shí)硬件清零否則必須軟件清零。
TR:定時(shí)器運(yùn)行控制位。置1開始計(jì)時(shí)、清零停止計(jì)時(shí)。
C/T:該位為0時(shí)用作計(jì)時(shí)器、該位為1時(shí)用作計(jì)數(shù)器。
溢出時(shí)時(shí)間-開始計(jì)時(shí)時(shí)間=預(yù)設(shè)定時(shí)時(shí)間
一個(gè)機(jī)器周期共有12個(gè)振蕩脈沖周期
若設(shè)定時(shí)為0.02s,則:
12*(65535-X)/11059200=0.02s
定時(shí)器作“加1”次數(shù):X=47104=0xB800次 時(shí)間為0.02s
1、設(shè)置特殊功能寄存器TMOD,使之工作在需求的狀態(tài)。
2、設(shè)置計(jì)數(shù)寄存器的初值,精確設(shè)定好定時(shí)時(shí)間。
3、設(shè)置特殊功能寄存器TCON,通過打開TR來讓定時(shí)器進(jìn)行工作。
4、判斷寄存器TCON的FT0位、檢測(cè)定時(shí)器溢出情況。
假設(shè)我們使用定時(shí)器0、定時(shí)為0.02s,兩個(gè)寄存器計(jì)時(shí)
TMOD=0x01; TMOD=0x01,指的是采用T0方式,將M1置0,M0置1,是方式一的定時(shí)器
高八位寄存器TH0=0xB8、低八位寄存器TL0=0x00
#include
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit led=P1^0;
uint8 counter;
void main(){
TMOD=0x01;
TH0=0xb8;
TL0=0x00;
TR0=1;
led=1;
counter=0;
while(1){
if(TF0==1){ //如果達(dá)到溢出 0.02s后溢出
TF0=0; //軟件清零
TH0=0xB8; //重置計(jì)數(shù)基數(shù)
TL0=0x00;
counter++; //溢出一次計(jì)次數(shù)
}
if(counter==50){ //0.02s*50=1s
counter=0; //清零
led=~led; //取反使P1^0亮滅
}
}
}
上海意泓電子科技有限責(zé)任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像
CopyRight 2020-2025 www.jlodreman.com All rights reserved 滬ICP備2021005866號(hào)