目录标题

  • 1.定时器初步
    • 2.定时器使用
      • 3.中断系统
        • 4.使用中断

1.定时器初步

时钟周期:时序中最小的单位,1/时钟源频率

机器周期:单片机完成一个操作需要的最短时间

STC15系列的机器周期:
12T模式 一个机器周期=12个时钟周期
1T模式 一个机器周期=1个时钟周期
对于常用的12M晶振:
12T模式 一个机器周期为1us
1T模式 一个机器周期为1/12us

. 机器周期是1us,就是说每1us产生一次计数,就拿50ms来说,这是你想要的计时,意思是,对机器周期进行50000计数就可以得到我想要的,可T0是一个可以对机器周期能进行65536次计数,也就是说我想要的50ms不能让T0溢出,怎么办,那么先给这个定时器里面放些数,放多少,就是我们想要的50ms再加上一个多少就能等于65536,也就是65536和50000的差值,这个值就是我们说的初值。

. 为什么除以256,因为我们的计时器是两个8位组成的,那么要把那些差值装进这两个8位,那么低8位最多能装256个机器周期,那么256计满了就用高8位的,就是说低8位满一次高8位加1,那么高8位装多少,低8位就满了几次,算法就是用差值除一下256取其整数,剩下的,就是还剩了小于256次数的就放在低8位,就是差值 的余数。如果我要放一个超过256的数,肯定是超过先放高八位,把剩下的部分放在低八位中了,TH0=(65536-50000)/256就是把TL0中放不下的部分放在TH0中,再把剩下的部分放在TH0中。

oid timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
flag++;
if(flag==20)//当定时到1秒时执行花括号里面的语句
{
}
}

单片机通常有2个16位可编程定时/计数器,即定时器T0和T1,T0和T1均可分为高8位TH和低8位TL。与定时/计数器相关的有两个特殊功能寄存器:模式控制寄存器TMOD和控制寄存器TCON,它们控制了定时器的工作,如下图:

2.定时器使用

计时器工作方式寄存器TMOD
TMOD:8位分为两组,高四位控制T1,低四位控制T0

GATE C/T* M1 M0 GATE C/T* M1 M0

如果我们使用一个定时器,那么只要设置对应的4位就可以了:

位符号 描述
GATE 门控位,为0时以TR1TR0来启动定时器运行,为1时依靠中断/TR启动定时器运行
C/T* 为0:定时器模式
M1/M0 工作方式的选择,有4种工作方式
M1 M2 工作方式
0 0 方式0,13位定时器/计数器
0 1 方式1,16位定时器/计数器
1 0 方式2,8位常数自动重新装载
1 1 方式3,T0分成两个8位计数器,T1停止计数

假如我们使用T0计时器:

TMOD 工作方式 描述
0000 0000 工作方式0 13位定时器
0000 0001 工作方式1 16位定时器
0000 0010 工作方式2 8位常数自动重新装载器
0000 0011 工作方式3 T0分为两个8位计数器

模式控制寄存器TCON

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

低四位与外部中断有关,高四位功能如下:
TF1、TF0——计数溢出标志位:

定时器T0或T1计数溢出时,由硬件自动将此位置为1
TFx可以由程序查询,也是定时中断的请求源

TR1、TR0——计数溢出标志位:
TRx=1:启动定时器/计数器工作
TRx=0:停止定时器/计数器工作

3.中断系统

EA:控制总中断
TRx:TCON的控制位,控制计时器Tx中断
例如使用T0计时器的初始化函数:

void init()//定时1ms
{TMOD=0x01;//设置工作方式1TH=(65536-1000)/256;//设置TH初始值TL=(65536-1000)%256;//设置TL初始值ET0=1;//开启计时器T0中断EA=1;//开启总中断TR0=1;//开启计时器T0
}

4.使用中断

中断的实现
当定时器T0/T1计数计满溢出时,会导致TCON的TF置位并向CPU申请中断,CPU响应中断,执行中断函数。

中断函数:一种当有中断发生时自动执行的函数,它不需要由主函数调用执行。执行完中断函数后,定时器/计数器重新计数。
函数定义:

void fun()interrupt N
{}

其中,interrupt N中N指的是中断的优先级,例如T0优先级高于T1,优先级高的先产生中断

STC学习:定时器和中断相关推荐

  1. STM32CubeMX与HAL库学习--基本定时器定时中断

    STM32CubeMX与HAL库学习--基本定时器定时中断 背景 STM32CubeMX生成初始化代码 在MDK-ARM里编辑代码 其他 背景 本人小白,最近在学着使用STM32CubeMX与HAL库 ...

  2. 蓝桥杯STM32G431RBT6学习——定时器中断

    蓝桥杯STM32G431RBT6学习--定时器中断 前言 从网络上的资料来看,蓝桥杯嵌入式好像并不考外部中断(毕竟通常只是个按键应用),因此跳过进行定时器的学习. STM32单片机的定时器通常分为高级 ...

  3. 51单片机学习--定时器--中断--串口通信

    51单片机学习–定时器–中断–串口通信 定时器–中断–串口通信 中断分类 定时器中断 外部中断 串口中断 基本概念 对于单片机来讲, 中断是指 CPU 在处理某一事件 A 时, 发生了另一事件 B, ...

  4. 51单片机学习笔记之中断(外部中断、定时器中断、中断嵌套)

    要学习51单片机中断的朋友,拥有这一篇博文就够了,深入浅出,里面包含了寄存器,外部中断.定时器中断.中断嵌套等的讲解,还有代码实战.快一万字,写得不容易,还请大家点赞支持一下,后续持续更新 (一)寄存 ...

  5. 51单片机学习-5定时器与中断

    5 定时器与中断 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github ...

  6. STM32L475裸机例程学习 定时器中断和PWM输出实验

    定时器中断和PWM输出实验 所以阿-笔记的重要性哇!之前看过的内容在做后面的内容涉及到了发现没有笔记,看的时间太久远,竟然全部忘记了,真是个悲伤的故事:( 那就重来吧.由于这两个实验都跟TIM定时器关 ...

  7. HNU小学期计算机系统设计与创新基础训练——基于STC学习板的加密信息存储与游戏操作系统(第一部分设计思路+基础原理)

    HNU小学期计算机系统设计与创新基础训练--加密信息存储与游戏操作系统 一. 选题名称 二. 选题背景 三. 实现功能 1. 主要功能 2. 细节设计 四. 设计思路 五. 基本原理 1. 数码管与发 ...

  8. 湖南大学STC学习板导航键的使用

    前言:发现STC板子上的按键不够用了,想着用导航键,但无奈在网上找了很久都没有任何一个字眼是关于STC学习板导航按键的使用和详细的代码.今天下午我帅帅的学长教会了我如何去使用导航键,为了更好的巩固和理 ...

  9. 单片机之魂——定时器、中断

    文章目录 一.中断是什么 (1)中断 (2)中断优先级 二.中断的使用 1.外部中断 (2)定时器中断 一.定时器中断使用 二.TMOD与TCON 2.中断服务程序写法 总结 一.中断是什么 中断的控 ...

  10. 10 51单片机汇编:让定时器产生中断(使用Keil模拟器)[系列教程之10]

    10 51单片机汇编:让定时器产生中断(使用Keil模拟器)[系列教程之10] 该系列主仓库地址:https://gitee.com/langcai1943/8051-from-boot-to-app ...

最新文章

  1. C#实现一个用于开机启动其他程序的Windows服务
  2. Spring源码解析 - AbstractBeanFactory 实现接口与父类分析
  3. c#中反射技术在Unity中的运用
  4. 【CEO赠书】《精益数据分析》:如何构建数据指标体系
  5. 一年的天数 Exercise06_16
  6. python模拟qq空间登录_模拟登录QQ空间
  7. 服务端接口中的那些坑
  8. mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据
  9. 项目管理学习总结(6)——产品经理常用的工具有哪些?
  10. java keytool下载_Java中Keytool工具的使用总结(一)
  11. 秃友进销存标准版内存注册机 Cracked.By.HackWm.
  12. 百万调音师—AU效果器基本应用
  13. 计算机怎么快速查找应用,win10系统如何快速查找应用?win10系统快速查找应用的方法...
  14. 两台计算机远程桌面连接不上去,远程桌面连接不上怎么办
  15. 用 360 随身 WiFi 钓鱼
  16. UE4 Matinee功能基本概念及简单示例(Sequence编辑器)
  17. 闲人闲谈PS之三十一——新收入准则中的合同损失计提
  18. 取消Chrome黑暗模式
  19. jdk8以上G1垃圾回收器的配置参数
  20. QT基础入门【Demo篇】QT定时器的使用方法

热门文章

  1. Python Tornado web框架简单例子
  2. 使用xshell-ssh连接服务器被经常意外中断(Disconnected from remote host)
  3. 中国电信业的魔咒:第四运营商之梦
  4. rdd数据存内存 数据量_技术分享|大数据技术初探之Spark 任务调度与优化
  5. .net pdf转图片_如何将PDF转图片?PDF转图片免费方法!
  6. 通过编写纯代码与JDBC实现对mysql的数据实现增删改查案例,jdbc连接数据库六步完整步骤详解,适合编程新手,通俗易懂
  7. 简述osi参考模型各层主要功能_简述OSI参考模型及各层的功能
  8. scala条件替换_Scala:如何使用scala替换Dataframe中的值
  9. 【转】余弦相似度及基于python的三种代码实现、与欧氏距离的区别
  10. 纯CSS Lightbox效果