一、什么是定時器/計數(shù)器
在51單片機中,定時器/計數(shù)器是用來實現(xiàn)定時功能,并且具有計數(shù)的功能,來實現(xiàn)對外部信號的計數(shù)。
二、定時器/計數(shù)器有什么類型在51單片機中,分為軟件定時器,不可編程硬件定時器,可編程定時器。
軟件定時:CPU每執(zhí)行一條指令時,是需要固定時間的,所以,通過執(zhí)行空指令可以達到延時的效果,這樣子做的代價是占用CPU時間,所以一般很少這么做。
不可編程硬件定時器:是由電路和硬件來完成定時功能的,一般采用基電路,外接定時部件(電阻和電容),通過改變電阻的阻值和電容的電容值來修改定時值,一量確定后件不能通過軟件修改,這樣子做的優(yōu)點是不需要占用CPU時間。
可編程定時器:通軟件來確定定時值及其范圍,可編程定時器功能強大,靈活性高。這是本文詳細講解的定時器。
三、定時器的內(nèi)部結(jié)構(gòu)及工作原理8051單片機有定時器0(T0)和定時器1(T1)兩個定時器。
定時器0(T0)和定時器1(T1)是兩個16位加法計算器。
定時器0是由TH0和TH1兩個8位計數(shù)器組成的,定時器1也是一樣。
定時器內(nèi)部還有以下寄存器:
8位的方式寄存器(TMOD)
8位控制寄存器(TCON)
選擇定時器模式寄存器(C/T)
啟動方式寄存器(GATE)
工作方式及發(fā)出啟動信號寄存器(TR0或TR1)
內(nèi)部結(jié)構(gòu)如下圖:
定時器的工作方式主要是通過THOD低4位是定時器0的工作方式控制位,高4位為定時器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;
}