零基础学习8051单片机(十六)

2024-02-22 14:04

本文主要是介绍零基础学习8051单片机(十六),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

继续学习8051单片机,本次通过观看视频在此学习8051单片机的中断系统

要掌握单片机中断系统的硬件结构和工作原理

掌握:中断系统的初始化编程以及中断服务子程序设计。

一、中断的基本过程图:

 

中断的响应和处理过程:

当中断提出中断请求的时候,要打断正常执行的主程序,那么正在执行的这条指令的下一条指令的地址,要压到堆栈里面去,当执行完中断服务程序时,断点地址在弹出来,就继续执行主程序

实时监测没有中断实现不了

二、中断系统结构

 注:这些位都可以用位指令来将其置1或者清0,用软件人为的置1,就是人为制造1个中断源

当人为制造中断源是,两个定时器的中断请求标志位是自动清的,串行口是用软件清0,对于外中断是响应之后,自动清的

(1 INT0*——外部中断请求0,中断请求信号由INT0*引脚输入,请求标志为IE0

2 INT1*——外部中断请求1,中断请求信号由INT1*引脚输入,请求标志为IE1

3定时器/计数器T0计数溢出发出的中断请求,请求标志为TF0

4定时器/计数器T1计数溢出发出的中断请求,请求标志为TF1

5串行口中断请求,请求标志为发送中断TI或接收中断RI

外中断的触发方式有两种:

1.电平触发——低电平有效,高电平不会发出中断请求,低电平发出中断请求

2.跳沿触发——外设加到引脚上,成为负跳变,就等于发出了一个中断请求,负跳变有效

注:一个中断源的中断响应还要看是否允许它:EX0是控制外部中断零是否允许外部中断零申请中断的控制位

定时器的触发:当定时器/计数器计满的时候,就会把中断请求标志置为1

串口中断有两种:接受和发送,他们共用一个中断入口

注:中断中的每一位都是特殊功能寄存器中的某一个,可以用指令对其置1或清0,当单片机复位的时候,相应的这几个位都为0,

EA是总的中断允许位,EA写0开关断开,EA写1开关闭合此时允许CPU开中断至于到底要那一位中断,还要看5个中断源的5个标志位

注意:一个中断源是否允许中断,要看对应的中断标志位,都是特殊功能寄存器中的某一位,都可以用软件置为1或清0,IE中断允许寄存器,IP中断优先级寄存器,如果让他为高优先级则置为1

三、特殊功能寄存器

注:串行口发送或接受数据是以帧为单位的,这一帧信息发完之后,发送中断有效,然后进入中断服务程序,把下一次要发的哪一个字节数据送到发送缓冲器,同理还有一个接受中断,当接受完的信息在接受缓冲器里面,单片机CPU应当把接受缓冲器里面的信息读走,所以他有接受中断和发送中断两个标志位

要弄明白TCON、SCON各位的含义

注:使用字节指令编程需要对内部寄存器各位的含义非常的熟悉 

这两个不可寻址的优先级 激活触发器,不能用指令进行置1或者清0,这两个触发器代表中断系统在执行某一个中断的时候来告诉用户,它是高优先级中断还是低优先级,它实际上代表执行当前中断的优先级别

 注:用字节指令需要对硬件特别熟悉

注:同级不能打断同级,低级不能打断高级 

注:

若为同一级别的中断请求,则按照单片机内部顺序进行执行,若用软件设置为高优先级或低优先级,则优先按照软件设定的优先级执行

这个中断入口是程序存储器的地址,当单片机复位的时候程序指针指向0000H,0000H、0001H、0002H这三个空闲单元,正好放一条长跳转指令,跳向主程序MAIN,所以编程时:

                ORG  0000H

                LJMP  MAIN

下一个单元就是0003H,

主程序一般放在之后的某个位置可以写:ORG  XXXXH

注:一个中断请求能够被响应必须满足4个条件,4个必要条件满足,也不一定响应,原因在于上面可能出现的三种情况 

注:

当外设有中断请求的时候,向外中断输入引脚发一个低电平信号即可

51单片机这个CPU在每个机器周期实际上都在简则外中断输入引脚,只要是低电平当时就可以检测到,当处理完中断后发出中断的低电平一定要撤销,否则会再次中断

 注:这个机器周期检测外中断输入线是高电平,下一个周期在检测它为低电平,说明中间发生了一个负跳沿,这时用软件设置为挑眼触发就说明有中断请求,跳沿触发适合以负脉冲的形式来发送中断请求的外设,如最常见的AD转换器

 注:当中断相应完之后,一定要把中断标志位清0,由于每个机器周期都查这5个标志位,没清掉系统以为还有中断请求

 注:对于电平触发的这种外中断请求,在中断请求标志位自动撤销以后,往往可能要加一个上图所示的附加电路,要把电平触发输入这个地方的低电平给他撤掉,把低电平变为高电平,要加这个电路

  注:当单片机复位的时候,这俩寄存器都为0,所以最开始都是禁止中断、低优先级的,需要用软件对其进行初始化

 注:

关中断:实际上就是把EA那位清0,在电路中把电路打开,不允许任何中断发生,意思就是这个中断请求进入中断服务程序后,不允许其他任何中断来打断它

现场保护:现场保护就是为了把下面进行中断处理用到的一些寄存器,把原来寄存器里面那些内容一定压到堆栈里,所以上面要关中断就是为了现场保护,如果正在现场保护又来新的中断容易把原来寄存器里面的内容打断,这时候主要是压栈操作

开中断:保护完之后开中断,这时候可以由别的中断打扰它

中断处理:之后进行中断处理,这个中断处理要根据要完成的任务进行处理

关中断:这个关中断的目的是为了把现场恢复出来,如果正恢复现场,再来个中断容易擦现场搞乱

现场恢复:进行堆栈的恢复

开中断:恢复之后再开中断

中断返回:RETI指令

上面这个顺序不是必要的,如果不需要进行现场保护就不用来回的开关中断

注:

这里涉及到中断返回子程序与子程序的区别问题: 把响应中断时所置“1”的不可寻址的优先级状态触发器清“0”

这是两条指令即RET与RETI指令最根本的区别,RET指令没有中断的优先级是高优先级还是低优先级的问题

所有的中断请求标志,尤其是跳沿触发的外中断标志,当有外中断请求时,发出一个负跳沿,然后中断请求标志置为1,然后中断请求标志查询有更高级的中断请求,执行完之后,原来的中断响应未丢失,因为它是带锁存的,只要那个中断没响应,那个中断就还是1,什么时候响应了,什么时候才把它清0

调用子程序的时候,是执行程序当中主动调用的,那个端点实际上是正在执行指令的下一条指令的地址,然后子程序执行完毕之后,RET指令,再把那个断定弹到PC指针里面,在继续执行没有执行完的主程序

中断是随机的,不一定什么时候有这个中断请求每当发生中断的时候,硬件自动的执行一条长跳转指令,然后断点被压到堆栈里,然后注意两个不可寻址的中断优先级触发器,有一个必定为1表明当前响应的中断是高优先级还是低优先级,然后中断服务子程序执行完了,返回那两个中断优先级触发器,其中被置为1那个,肯定得到清0,然后再把断点从堆栈里面弹出来继续执行

如果中断服务子程序最后使用的是RET指令,断点也弹出来了,但是那个中断优先级触发器不会清0,再来一次中断,它就往中断里面跳,但两个中断优先级没有清0,它就不会进去了

 注:两种方法:一种加中断优先级触发器,另一种采用软硬结合的方法

注:它这5个中断源是电平触发,当有中断请求的时候,他们其中任意一个都要发出一个高电平信号,原来是低电平信号

注:上述这个例子的前提是只有一个中断

第二种方法是用硬件编码器,它用硬件自动判断,然后通过某种连法加到上面

这篇关于零基础学习8051单片机(十六)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个