蓝桥杯 模板Template Part3:定时器

九层妖塔 起于垒土

在这里插入图片描述



改编自国信长天蓝桥杯官方蓝皮书例程,按照自己的习惯进行了补充和修改



基础知识【蓝桥杯】—{MCU:IAP15F2K61S2}—{定时器}


一、定时器预定部署分配

1、定时器预定分配

 ●STC15F2K60S2有三个16位定时器/计数器:定时器0,定时器1,定时器2。
 ●定时器0的外部引脚位P34,在蓝桥杯的板子上已经和NE555定时器的输出引脚Signal相邻,使用时只需要通过跳线帽连接即可。所以定时器0一般备用作为计数器使用,平时一般不用。
 ●定时器2的的好多控制位不能进行位寻址,使用不方便,可以留作串口通信时的波特率发生器。
 ●定时器1一般用作1ms定时器,用作程序内的ms计时,按键消抖,数码管显示,以及控制LED、数码管的数据刷新频率。

2、定时器预定部署(各个定时器的工作模式)

 ●使用中断法响应定时器溢出。

以下一段为扯pi:
 ●由上文可知,定时器0为必用定时器。鉴于定时器0所服务的功能:按键消抖,数码管显示,以及控制LED、数码管的数据刷新频率等,对时间要求都不严格,建议使用查询标志位的方法响应定时器溢出。查询标志位法需要对寄存器比较熟悉。好处是:避免中断对超声波测量,555频率测量,AT24C02,DS1302产生的影响;避免在适应其他定时器中断时,产生中断优先级问题。
 LED的闪烁,LED、数码管的亮度,也可以使用定时器0,时间稍微有所偏差,几乎可以忽略。

定时器溢出响应方法:中断法和查询标志位法


二、基本模板

1、定时器1初始化函数Timer1Init()

//--------------------------------------------定时器1初始化-------------------------//
void Timer1Init(void)		//1毫秒@12.000MHz
{
	AUXR &= 0xBF;		//定时器时钟12T模式
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0x18;		//设置定时初值
	TH1 = 0xFC;		//设置定时初值
	TF1 = 0;		//清除TF1标志
	TR1 = 1;		//定时器1开始计时
}


2、定时器1中断服务函数Timer1_ISR()

//----------------------------定时器1服务函数,LED显示&数码管显示&按键消抖----------------//
void Timer1_ISR(void) interrupt 3
{
    ul_ms++;

	if(++uc_Key_falg == 10) uc_Key_falg = 0;    //按键扫描控制为10ms一次
	if(++uc_temp_falg == 500) uc_temp_falg = 0; //温度读取控制为500ms一次

	SEG_Disp(puc_SEG_Code,uc_SEG_Position);   //数码管显示
	if(++uc_SEG_Position == 8) uc_SEG_Position = 0;
	
	LED_Disp(uc_LED);  //LED显示
}

3、中断允许控制位的使能

void main(void)
{
	Init();      //全局初始化
	Timer1Init();//定时器1初始化
	
    …………
    …………
    
	ET1 = 1;  //开定时器1中断
	EA = 1;   //开总中断
	
	while(1)
	{
	 …………
	}
}

Notes:

 ●官方例程将定时器0设置为12T模式AUXR &= 0x7F; 12T和1T模式设置的是定时器 计数脉冲 的分频系数,即计数脉冲 周期是系统时钟的12倍(慢12T模式);计数脉冲为系统时钟脉冲,计数脉冲 周期等于系统时钟周期,即无分频(快,1T模式)。 这一段话里的斜体字 计数脉冲 我的理解指的是定时器工作在定时模式下(即脉冲源为系统时钟)。所以工作在计数器模式下没有 设置分频系数(12T还是1T) 这一说法。
 只有在定时器工作在定时模下才有 设置分频系数(12T还是1T) 这一说法。然而,12T与1T唯一的区别就是能够定时的最大时间长度不同。
 16位模式下,可最大计数65536个脉冲,而每个脉冲的周期决定了最大计数时间。最大计数时间 = 最大计数脉冲个数*脉冲周期。
 12T与1T的区别就是计数的脉冲周期不同,12T模式下的脉冲周期是1T模式下的12倍,所以12T模式的最大计数时间大。

三、流程图

  
  
  
  
彩 蛋

  • 1
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页

打赏

#法外狂徒张三

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者