51单片机中断与定时器计数器,基于普中科技教学视频学习记录

本文主要是介绍51单片机中断与定时器计数器,基于普中科技教学视频学习记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  1. 寄存器
  2. 置位复位
  3. 中断系统
    1. 中断概念
    2. 中断系统
  4. 中断系统构造
    1. 外部中断
    2. 计时器、定时器中段
    3. 串口中断
  5. 中断允许控制(控制中断方式)
    1. 总中断
    2. 各个中断
  6. 中断请求标志(控制触发方式)
    1. 外部中断触发方式IT0、IT1
    2. 标志位IE0、IE1
    3. 计时器、定时器溢出中断TF0、TF1
  7. 优先级
    1. 中断优先级三条原则

  1. 中断源
    1. 中断号
  2. 中断响应条件
  3. 使用中断思路
  4. 例子

  • 寄存器
    1. 寄存器是cpu的硬件设计者制定的,
    2. 目的是让程序员可以在cpu设计好后通过写软件让开关开或者关,留作外设被编程控制的“活动开关”。

  • 置位/复位
    1. 置位为1,复位为0

  • 溢出
    1. 消失
  • 下降沿与低电平区别
  1. 外部中断低电平触发:外部中断低电平触发只要引脚为低电平时间内中断一直有效,那么就会一直进入中断,直到电平变化为高电平。
  1. 下降沿触发:下降沿触发中断只会触发一次,只有在下次电平发生变化时才会重新触发中断。

中断系统

中断概念

       中断发生:处理a,发生事件b请求cpu去处理

       中断响应和中断服务:cpu暂时中断当前工作处理事件b

       中断返回:b处理完毕,回到a中断的地方继续处理事件a

中断系统

中断源:引起cpu中断的根源(中断源向cpu提出中断请求)

断点:事件b处理完毕后,回到原来中断的地方

中断系统结构(51)

       5个中断源,2个优先级,可实现二级中断嵌套


外部中断

IT0是通过ICON配置的

P3^2是外部中断INT0,

IE0 中断标志位

寄存器

       TCON/IE/IP 都为寄存器,需要程序控制

置位/复位

       置位为1,复位为0

 

定时计数器中断

        TF0管计数器定时器T0,当T0发生溢出,TF0发生置位


串行口中断请求

       RI 接收一帧串行数据,RI置1

       TI 发送一帧串行数据,TI置1

中断允许控制

IE寄存器

       CPU对中断系统所有中断(EA) 某个中断(5个)的开关控制。(看构造图)

中断请求控制


       IT0、IT1:外部中断触发方式选择,=1时边沿,=0时电平

       IE0、IE1:外部中断请求标志位,当接收到IT0、IT1有效,则置1(看构造图)

优先级

优先级的三条原则

       同时接收几个中断时候,首先响应优先级别最高的中断请求

       正在进行的中断过程不能被新的同级或者低优先级别的中断请求打断

       正在进行的低优先级中断服务,能被高优先级别中断请求所中断

实现上述两条原则方法

中断源

      

中断号

       写程序时候需要用到中断号,也就是当程序输入0时候,外部输入0可以中断,如果再写入一个2,就可以当2发生中断请求,cpu就执行事件3.。。如果想要0中断,但是程序却写成1,那么中断就不回执行了。

中断响应条件

       中断源的中断请求

       此中断源的中断允许为1

       CPU开中断(EA=1)

       以上三条满足,CPU才有可能响应中断

使用中断思路,程序员应该干什么?

       想使用的中断是哪个?选择相应的中断号

       你所希望的触发条件是什么?

       你希望中断后干什么?

例子

主程序是为了让中断系统打开

中断服务函数是为了在里面编写中断后运行的程序

Interrupt 0;0是中断号,表示选择中断源,但是首先得打开中断系统的这个寄存器

定时器与计数器

目录

1,51单片机定时计数器

2,CPU时序

3,各个周期值的转换

4,计数器的模

5,分频

6,工作原理

7,内部结构

        工作方式寄存器TMOD

        控制寄存器TCON

8,工作方式

9,初始化

10,计数器初值的计算

51单片机定时计数器

       有两组定时器/计数器,既可以定时又可以计数

       定时器/计数器是与CPU互相独立,定时器计数器工作过程是自动完成

       定时器/计数器是根据机器内部的时钟或者外部的脉冲信号对寄存器的数据加1

       可以增加单片机的效率,简单重复的事情可以交给定时器,cpu处理复杂的事情

       定时器可以精确定时

CPU时序

       振荡周期:单片机提供的定时信号的振荡源(晶振周期,外加振荡周期)

       状态周期(S):2个振荡周期,S周期或时钟周期

       机器周期:6个状态周期,12个振荡周期;

       指令周期:完成一条指令所占的全部时间,以机器周期为单位

各个周期值的转换

       振荡周期=1/12us;

      状态周期=1/6us;

      机器周期=1us;

      指令周期=1~4us;

       周期等于频率的倒数

一个字节=8位

计数器的模

       计数器运行时,从某一个状态开始依次遍历不重复的各个状态后完成一次循环,所经历的状态总数叫做计数器的模,M表示

分频

       分频是指将单一频率的信号降低为原来的1/N,就叫N分频。实现分频的电路或者装置叫做分频器,这里的分频单指信号而言。如33MHZ的信号2分频得到16.5MHZ的信号,3分频得到11MHZ的信号,10分频得到3.3MHZ的信号

工作原理

       实质是加1计数器,随着输入脉冲自加1,也就是每来一个脉冲,计数器就加1,加到全为1时,再输入一个脉冲就可以使计数器全为0(51系列单片机内部有两个计数器/定时器,是加1计数器,就是每个机器周期计数值就加1,如原来值是10,加1后就为11.如果是减1计数器就减1,减1后就为9.搞清是加1还是减1,在使用时是有区别的.例如,让单片机计50个数,如果是减1计数器的话,那初始值就是50,每个计数事件后就减1,当50次后就减为0,则计数结束.可是如果是加1计数器的话,还要看计数的最大值是多少,如8位时,最大值是255,模是256,则初始值=256-50=206,这样,每个计数事件后加1,一直加到255,再加1个就是模256了,也就是计数50次后,就要回0,则计数结束.所以,区别是在计算初始值时的方法是不同的.)且计数器的溢出使相应的中断标志位置1,向CPU发出中断请求(定时/计数器中断允许时)。

       如果定时器/计数器工作在定时模式,表示定时时间已到。如果工作在计数模式,表示计数值已满。

       可见,由溢出时计数器值减去计数初值才是加1计数器的计数值(8位,计数值=256-206=50)

周期

       周期等于频率分之一

内部结构

      

       由高8位和低8位两个寄存器THx,TLx组成

       TMOD是定时器/计数器的工作方式寄存器,确定工作方式和工作

TCON控制寄存器,控制中断哪个T0,T1的启动和停止,设置溢出标志

工作方式寄存器TMOD

      

       低四位控制T0,高四位控制T1

      

Gate门控位,gate=0时,用于控制器的启动是否受外部中断的影响,用TCON中TR0或TR1=1,就可以启动定时计数器工作

Gate=1时,INT0/1=1(高电平),TR0或者TR1=1,可以启动定时计数器。

(一般使用gate=0)

C/T:定时器/计数器模式选择位。C/T=0为定时模式,C/T=1为计数模式。

M1M0:工作方式设置位。定时/计数器有四种工作方式

控制寄存器TCON

TF1:溢出中断请求标志位,当T1溢出硬件控制TF1置1。CPU响应中断后TF1由硬件自动清0.T1工作时,CPU可随时查TF1状态。所以可以作测试的标志,同时TF1可以软件置1清0.

TR1:T1运行控制位。置1工作,置0停止。软件控制

工作方式

       方式0

      

      

       定时器模式时有:N=t/Tey

       (t:想用定时器定的时间,如1ms

Tey:周期,过1周期计数加1,是时钟频率的倒数,求得想要计数的个数,才是这么长的计时,X为初值,写THx和TLx)

       方式1

      

       计数个数与计算初值的关系

       X=216-N

      

方式2

      

       自动重装载,当低8位满了会自动重新装载,从新装载初值不会累加,不会进位

       方式3

      

      

初始化

       对TMOD赋值,确定T0,T1的工作方式

       计算初值,并将其写入TH0和TL0或TH1和TL1。

       中断方式时,则对EA赋值,开放定时器中断

       使TR0或者TR1置位,启动定时器/计数器定时或者计数

计数器初值的计算

       机器周期就是CPU完成一个基本操作所需的时间

       机器周期=1/单片机的时间频率

机器周期

       我们的单片机完成一个操作的最短时间。机器周期主要针对汇编语言而言,在汇编语言下程序的每一条语句执行所使用的时间都是机器周期的整数倍,而且语句占用的时间是可以计算出来的,而 C 语言一条语句的时间是不确定的,受到诸多因素的影响。一个机器周期等于12个时钟周期,所以121/12=1

这篇关于51单片机中断与定时器计数器,基于普中科技教学视频学习记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/421967

相关文章

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Spring Retry 实现乐观锁重试实践记录

《SpringRetry实现乐观锁重试实践记录》本文介绍了在秒杀商品SKU表中使用乐观锁和MybatisPlus配置乐观锁的方法,并分析了测试环境和生产环境的隔离级别对乐观锁的影响,通过简单验证,... 目录一、场景分析 二、简单验证 2.1、可重复读 2.2、读已提交 三、最佳实践 3.1、配置重试模板

在 Spring Boot 中使用异步线程时的 HttpServletRequest 复用问题记录

《在SpringBoot中使用异步线程时的HttpServletRequest复用问题记录》文章讨论了在SpringBoot中使用异步线程时,由于HttpServletRequest复用导致... 目录一、问题描述:异步线程操作导致请求复用时 Cookie 解析失败1. 场景背景2. 问题根源二、问题详细分

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据