1. 配置定时器寄存器
①TMOD:定时器/计数器工作方式模式寄存器(不可谓寻址:只能整体赋值)
定时器1 定时器0
TMOD上、下半字节对应T1、T0
GATE: 定时器启动控制位
C/T: 0为定时,1为计数。
M1、M0:工作方式选择。00、01、10、11对应工作方式0、1、2、3。(工作方式0、1分别对应13位定时器和16位定时器)
TMOD=0X01; //0000 0001 定时器0,工作方式1:16位
②TNOD:定时器/计数器控制寄存器(可谓寻址:可以对其中每一位单独赋值)
定时器0:
TF0:定时器0中断溢出标志位,需要清0,防止定时器开始工作就产生中断
TR0:定时器是不是开启,赋1就开启定时器
③ TL0 和 TH0
赋初值
0·65535
每隔1us计数+1,总共定时时间65535us,计数满之后才产生中断。
例如,1ms产生中断,定一个64355初值,和65535相比,离计数器溢出差1000,所以计时时间就是1ms
TH0和TL0分别是高8位、低8位
TH0=645535/256;
TL0=645535%256;
④中断
ET0=1;
EA=1;
PT0默认是0
#include <REGX52.H>
void Timer0_Init()
{
TMOD=0x01;
TF=0;
TR0=1;
TH0=645535/256;
TL0=645535%256;
ET0=1;
EA=1;
PT0=0;
}
void main()
{
void Timer0_Init();
while(1)
{
}
}