51单片机定时器与中断系统

小白极客的51单片机笔记(自用)

做定时器时钟时顺手写的笔记,如有错漏,欢迎斧正。

定时器介绍

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

  1. 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作;
  2. 替代长时间的Delay,提高CPU的运行效率和处理速度;
  3. 操作系统的任务切换(高级单片机)

STC89C52定时器资源

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

定时器框图

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

定时器工作模式

  • STC89C52的T0和T1均有四种工作模式:
  1. 模式0:13位定时器/计数器
  2. 模式1:16位定时器/计数器(常用)
  3. 模式2:8位自动重装模式
  4. 模式3:两个8位计数器
  • 工作模式1框图:
    在这里插入图片描述
    TL0/TH0是一个十六位的计数器,TL存储低字节,TH存储高字节,左边的时钟提供脉冲,每来一个脉冲,这十六位的计数器里面的值就会加一,当加到最大值65535时再加的话就会溢出,溢出的时候计数器就会回到0.所以在溢出的时候会置一个标志位(TF0),有了这个标志位它就会向中断系统申请中断。

定时器时钟

我们之前讲到了,计数器每来一个脉冲加一,那么这个脉冲的时间是怎么确定的呢?这就需要用到时钟系统了。

  • SYSclk:系统时钟,即晶振周期,本开发板上的晶振为12MHz
  • 12M很快,一般来说我们会对12MHz进行分频,12Tmode会对12M的系统时钟进行12分频,分频之后这个开关如果连到12分频,那么它输出的就是1MHz,1MHz的一个周期就是一微秒,那就说明我们如果连这条线路的话,那么计数单元每隔一微秒就要记一次数,当它记到最大值,就会产生中断
  • C/T是一个选择开关,是寄存器中的一位,如果这一位配置为1的话,就是C(Counter计数器)这个功能,如果给0,那么就是T(Timer定时器)这个功能

时钟最初的来源有两个,一个是SYSclk,另一个是T0 Pin(单片机外部的接口)

中断系统

在这里插入图片描述

中断程序流程

在这里插入图片描述

STC89C52中断资源

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

  • 中断优先级个数:4个

  • 中断号:在这里插入图片描述

  • 注意:中断的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的中断资源,例如中断源个数不同、优先级个数不同等等

定时器和中断系统

在这里插入图片描述
整个流程:时钟—>12分频—>定时器模式—>计数器增加溢出中断—>中断入口
下面控制启动和暂停时钟是否过来—>

定时器相关寄存器

在这里插入图片描述
在这里插入图片描述

  • 寄存器是连接软硬件的媒介
  • 在单片机中寄存器就是一段特殊的RAM存储器,一方面,寄存器可以存储和读取数据,另一方面,每一个寄存器背后都连接了一根导线,控制着电路的连接方式
  • 存储器相当于一个复杂机器的“操作按钮”
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值