單片機(jī) 定時(shí)器/計(jì)數(shù)器
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一、什么是定時(shí)器/計(jì)數(shù)器
在51單片機(jī)中,定時(shí)器/計(jì)數(shù)器是用來實(shí)現(xiàn)定時(shí)功能,并且具有計(jì)數(shù)的功能,來實(shí)現(xiàn)對外部信號的計(jì)數(shù)。
二、定時(shí)器/計(jì)數(shù)器有什么類型在51單片機(jī)中,分為軟件定時(shí)器,不可編程硬件定時(shí)器,可編程定時(shí)器。
軟件定時(shí):CPU每執(zhí)行一條指令時(shí),是需要固定時(shí)間的,所以,通過執(zhí)行空指令可以達(dá)到延時(shí)的效果,這樣子做的代價(jià)是占用CPU時(shí)間,所以一般很少這么做。
不可編程硬件定時(shí)器:是由電路和硬件來完成定時(shí)功能的,一般采用基電路,外接定時(shí)部件(電阻和電容),通過改變電阻的阻值和電容的電容值來修改定時(shí)值,一量確定后件不能通過軟件修改,這樣子做的優(yōu)點(diǎn)是不需要占用CPU時(shí)間。
可編程定時(shí)器:通軟件來確定定時(shí)值及其范圍,可編程定時(shí)器功能強(qiáng)大,靈活性高。這是本文詳細(xì)講解的定時(shí)器。
三、定時(shí)器的內(nèi)部結(jié)構(gòu)及工作原理8051單片機(jī)有定時(shí)器0(T0)和定時(shí)器1(T1)兩個(gè)定時(shí)器。
定時(shí)器0(T0)和定時(shí)器1(T1)是兩個(gè)16位加法計(jì)算器。
定時(shí)器0是由TH0和TH1兩個(gè)8位計(jì)數(shù)器組成的,定時(shí)器1也是一樣。
定時(shí)器內(nèi)部還有以下寄存器:
8位的方式寄存器(TMOD)
8位控制寄存器(TCON)
選擇定時(shí)器模式寄存器(C/T)
啟動方式寄存器(GATE)
工作方式及發(fā)出啟動信號寄存器(TR0或TR1)
內(nèi)部結(jié)構(gòu)如下圖:
定時(shí)器的工作方式主要是通過THOD低4位是定時(shí)器0的工作方式控制位,高4位為定時(shí)器1的工作方式控制方式。均為M1M0
timer_count.c
#include
unsigned char i;
sbit LED0 = P1^0;
void main(void)
{
TMOD = 0x01;
TH0 = 0;
TL0 = 0;
ET0 = 1;
TR0 = 1;
EA = 1;
while(1);
}
void t0_delay(void) interrupt 1
{
i++;
TR0 = 0;
TH0 = 0;
TL0 = 0;
if(i == 20)
{
i = 0;
LED0 = ~LED0;
}
TR0 = 1;
}