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

相关文章

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Macos创建python虚拟环境的详细步骤教学

《Macos创建python虚拟环境的详细步骤教学》在macOS上创建Python虚拟环境主要通过Python内置的venv模块实现,也可使用第三方工具如virtualenv,下面小编来和大家简单聊聊... 目录一、使用 python 内置 venv 模块(推荐)二、使用 virtualenv(兼容旧版 P

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示