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

相关文章

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1