51单片机学习记录-04-定时器/中断

1 定时器

1.1 定时器介绍

        51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成

1.2 定时器作用

        (1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作

        (2)替代长时间的Delay,提高CPU的运行效率和处理速度

        (…)

1.3 定时器个数

        3个(T0、T1、T2),T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源(注意:定时器的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,T0和T1的操作方式是所有51单片机所共有的)

1.4 定时器框图

        定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号,每隔“一秒”,计数单元的数值就增加一,当计数单元数值增加到“设定的闹钟提醒时间”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使程序跳转到中断服务函数中执行

1.5 定时器工作模式

        模式0:13位定时器/计数器

        模式1:16位定时器/计数器(常用)

        16位由TL0的8位和TH0的8位构成。TL0的8位溢出向TH0的进位,TH0计数溢出置位TCON中的溢出标志位TF0。

        SYSclk为系统时钟,即晶振周期

        

        模式2:8位自动重装模式

        模式3:两个8位计数器

1.6 相关寄存器
1.6.1 TCON

1.6.2 TMOD

2 中断

2.1 中断源个数

        8个(外部中断0、定时器0中断、外部中断1、定时器1中断、串口中断、定时器2中断、外部中断2、外部中断3)

2.2 中断查询

        中断号

        

2.3 中断系统

2.4 相关寄存器
2.4.1 中断寄存器

2.4.2 定时器/计数器0和1的相关寄存器

定时器Timer0函数

void Timer0Init(void)
{
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	TF0 = 0;		              //清除TF0标志
	TR0 = 1;		              //定时器0开始计时
	ET0=1;
	EA=1;
	PT0=0;
}

/*定时器中断函数模板
void Timer0_Routine() interrupt 1
{
	static unsigned int T0Count;
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	T0Count++;
	if(T0Count>=1000)
	{
		T0Count=0;
		
	}
}
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值