普中51单片机:中断系统与寄存器解析(六)

在这里插入图片描述

文章目录

  • 引言
  • 中断流程图
  • 中断优先级
  • 下降沿
  • 中断结构图
  • 中断相关寄存器
    • IE中断允许寄存器(可位寻址)
    • XICON辅助中断控制寄存器(可位寻址)
    • TCON标志控制寄存器
    • SCON串行口控制寄存器
  • 中断号
  • 中断响应条件
  • 中断函数代码模板
  • 电路图
  • 开发板IO连接图
  • 代码演示——外部中断0控制LED1

引言

中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力,它也是单片机最重要的功能之一。中断是指单片机在执行主程序时,遇到某些特定事件(如外部信号、定时器溢出等)时,暂时中止主程序,转而执行中断服务程序,处理完后再返回主程序继续执行。

中断流程图

在这里插入图片描述

中断优先级

在同一时刻,当有多个中断源出现,会根据中断源的优先级来判断先执行哪一个,其中TCON寄存器中的IT0位控制的是触发方式,是低电平触发还是下降沿触发,当为0时,是低电平触发,当为1时是下降沿触发
在这里插入图片描述

下降沿

在数字电路和信号处理中,上升沿触发和下降沿触发是指在时序逻辑中触发触发器或触发器器件(比如时钟触发器)的两种常见方式。

在数字电路中,想象一下时钟信号就像是一根线,它在高电平和低电平之间变化。这个变化的过程就像是上升和下降。当信号从低电平到高电平变化时,我们称之为上升沿;当信号从高电平到低电平变化时,我们称之为下降沿。上升沿触发和下降沿触发描述了在这些变化发生时触发电路动作或逻辑操作的方式。

  • 上升沿触发就像是当时钟信号从低电平到高电平变化时,我们说“现在触发”,进行某种操作或者执行一些任务。
  • 下降沿触发则是当时钟信号从高电平到低电平变化时,我们执行相应的任务或操作。

这些触发方式在数字电路设计中用于指导设备或芯片在特定时刻进行操作。在某些情况下,我们可能需要在信号变为高电平时执行某些操作;而在其他情况下,可能需要在信号变为低电平时执行相应的操作。这取决于特定设计的要求和需要。

中断结构图

在这里插入图片描述
STC89系列51单片机提供了8个中断请求源,分别是一个外部中断0(INT0),外部中断1(INT1),外部中断2(INT2),外部中断3(INT3)以及定时器0(TF0)、定时器1(TF1)和定时器2(TF2),外加串口中断,用于发送接收(UART)
在这里插入图片描述

注意:外部中断0(INT0),外部中断1(INT1),定时器0(TF0)、定时器1(TF1),串口中断,用于发送接收(UART)这五个中断是51单片机共有的中断源。

中断相关寄存器

在这里插入图片描述
上表中列出了与STC89C51RC/RD+系列单片机中断相关的所有寄存器。

IE中断允许寄存器(可位寻址)

中断允许控制是指通过设置中断允许位(Interrupt Enable Bits)来决定是否开启对特定中断源的响应。在单片机中,通常会有一个或多个寄存器用于控制不同中断源的允许状态。例如,在8051单片机中,有一个名为IE(Interrupt Enable)的寄存器,用于控制各种中断的允许状态。

  1. IE寄存器中的位:IE寄存器中的每一位对应一种中断源。如果某一位被设置为1,则表示允许该中断源的中断;如果被设置为0,则表示禁止该中断源的中断。
  2. 中断优先级:在某些单片机中,IE寄存器还可以设置中断优先级,确保高优先级的中断能够得到及时响应。

在这里插入图片描述

  • EA:CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。EA的作用是使中断允许形成两级控制。即各中断源首先收EA控制,其次还受各中断源自己的中断允许控制位控制。
  • ET2: 定时/计数器T2的溢出中断允许位。ET2=1,允许T2中断;ET2=0,禁止T2中断。
  • ES:串行口1中断允许位。ES=1,允许串行口1中断;ES=0,禁止串行口1中断。
  • ET1:定时/计数器T1的溢出中断允许位、ET1=1,允许T1中断;ET1=0,禁止T1中断。
  • EX1:外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。
  • ET0:T0的溢出中断允许位。ET0=1。允许T0中断;ET0=0禁止T0中断。
  • EX0:外部中断0中断允许位。EX0=1,允许中断;EX0=0禁止中断

XICON辅助中断控制寄存器(可位寻址)

在这里插入图片描述

TCON标志控制寄存器

TCON寄存器是专门用于控制定时器和计数器的寄存器。在8051单片机中,TCON寄存器包含多个位,每个位控制不同的定时器或计数器功能,以及相关的中断请求标志。

  • 定时器/计数器运行控制位:TCON寄存器中的某些位用于启动或停止定时器/计数器的运行。例如,TR0和TR1位用于控制定时器0和定时器1的运行。
  • 中断请求标志:TCON寄存器中的TF0和TF1位分别用于指示定时器0和定时器1是否已经溢出,即是否需要产生中断请求。当中断请求发生时,这些位会被硬件自动设置为1。
  • 重置中断请求标志:当中断服务例程处理完中断请求后,软件需要手动清除TF0和TF1位,以便定时器准备下一次的中断请求。

在这里插入图片描述

SCON串行口控制寄存器

在这里插入图片描述

中断号

在单片机(Microcontroller)中,中断号是用于标识不同中断源的唯一数字,它使得单片机能够区分并响应多个同时发生的中断请求。
在这里插入图片描述

中断响应条件

  1. 中断源有中断请求。
  2. 中断源的中断允许位为1,通过设置对应寄存器。
  3. CPU开启总中断(即EA=1)。

中断函数代码模板

中断函数通常使用关键字interrupt和中断号来声明,例如:

void External0_ISR(void) interrupt 0
{// 中断处理代码
}

这表示当外部中断0发生时,将调用External0_ISR函数进行处理 。其他中断类似。

电路图

在这里插入图片描述由图可以看出外部中断0和1分别是P3_2和P3_3引脚

开发板IO连接图

请添加图片描述
由图可知KEY3按键连接在P3_2上,P3_2是外部中断0

代码演示——外部中断0控制LED1

将外部中断0和1设置为下降沿的触发方式,当按键按下的时候,电平状态由高到低,就会触发中断,将对应按键连接到P3_2引脚,当对应按键按下的时候,对应的指示灯通过中断函数点亮。

#include <REGX52.H>sbit LED1 = P2^0;void DelayXms(unsigned int xms)	//@12.000MHz
{unsigned char data i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}
}void External0_ISR(void) interrupt 0
{// 中断处理代码DelayXms(10);//消抖处理if(P3_2 == 0){LED1 = ~LED1;IE0 = 0;	}}void Init_Port()
{LED1 = 0;//默认熄灭EA = 1;//打开总中断EX0 = 1;//打开外部中断1IT0 = 1;//设置为下降沿触发方式
}void main()
{Init_Port();while(1){}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/43883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

局域网远程共享桌面如何实现

在局域网内实现远程共享桌面&#xff0c;可以通过以下几种方法&#xff1a; 一、使用Windows自带的远程桌面功能&#xff1a; 首先&#xff0c;在需要被控制的电脑上右键点击“此电脑”&#xff0c;选择“属性”。 进入计算机属性界面后&#xff0c;点击“高级系统设置”&am…

qt writeDatagram 函数详解

writeDatagram 是 Qt 网络编程中的一个函数&#xff0c;它属于 QUdpSocket 类。这个函数的主要作用是向指定的网络地址和端口发送一个数据报&#xff08;datagram&#xff09;。数据报是网络传输中的基本单位&#xff0c;通常用于无连接的网络服务&#xff0c;如 UDP。 函数原…

SpringAMQP收发消息demo

首先我们需要创建一个微服务的架构&#xff0c;因为一般来讲这个都是在微服务架构下去使用的&#xff08;当然单体也没什么不好&#xff0c;看qps&#xff09; 在父项目中我们需要引入amqp的依赖 <dependencies><dependency><groupId>org.springframework.…

Jupyter Notebook详尽安装教程

Jupyter Notebook是一款开放源代码的Web应用程序&#xff0c;它允许用户创建和共享包含实时代码、方程式、可视化和叙述文本的文档。它适用于数据分析、可视化、机器学习等多种场景&#xff0c;尤其在数据科学领域中广受欢迎。本文将指导你从零开始&#xff0c;一步步安装和配置…

DNS--

1.DNS作用 -互联网中的114查号台/导航员 全球13台DNS根服务器分布&#xff1a; 美国VeriSign公司 2台 网络管理组织IANA(Internet Assigned Number Authority) 1台 欧洲网络管理组织RIPE-NCC(Resource IP Europeens Network Coordination Centre) 1台 美国PSINet公司 1台…

在Ubuntu 16.04上安装和配置VNC的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 ###介绍 VNC&#xff0c;即“Virtual Network Computing”&#xff0c;是一种连接系统&#xff0c;允许您使用键盘和鼠标与远程服务器上…

写一个字符设备的驱动步骤

一、前期准备 了解设备和需求&#xff1a; 深入研究字符设备的硬件手册和数据表&#xff0c;理解其工作原理、接口、寄存器、中断等。确定设备驱动需要支持的功能和操作。 准备开发环境&#xff1a; 确保有运行Linux系统的开发板&#xff0c;且其zImage是自己编译的&#x…

suricata7 rule加载(三)加载options

suricata7.0.5 加载options (msg:“HTTP Request Example”; flow:established,to_server; http.method; content:“POST”; http.uri; content:“query.php”; bsize:>9; http.protocol; content:“HTTP/1.1”; bsize:8; http.host; content:“360”; bsize:>3; class…

代理详解之静态代理、动态代理、SpringAOP实现

1、代理介绍 代理是指一个对象A通过持有另一个对象B&#xff0c;可以具有B同样的行为的模式。为了对外开放协议&#xff0c;B往往实现了一个接口&#xff0c;A也会去实现接口。但是B是“真正”实现类&#xff0c;A则比较“虚”&#xff0c;他借用了B的方法去实现接口的方法。A…

音视频封装demo:将h264数据和aac数据封装(mux)成FLV文件(纯手工,不依赖第三方开源库)

1、README 前言 注意&#xff1a;flv是不支持h.265封装的。 a. demo使用 $ make clean && make DEBUG1 $ $ ./flv_mux_h264_aac Usage:./flv_mux_h264_aac avfile/test1_856x480_24fps.h264 24 avfile/test1_44100_stereo.aac out1.flv./flv_mux_h264_aac avfile/tes…

vue3 + element-plus 表格行内编辑,如何实现表单校验?

问题描述&#xff1a; 当使用table实现行内编辑时&#xff0c;往往需要对必填项增加校验以及错误高度&#xff0c; 预期实现效果如下&#xff1a; 实现思路&#xff1a; 使用el-form表单自身的校验功能&#xff1a;通过el-from绑定对应表格行的prop&#xff0c; 实现校验 页面…

@SpringBootApplication 注解

什么是 SpringBootApplication SpringBootApplication 是 Spring Boot 提供的一个核心注解&#xff0c;它是一个组合注解&#xff0c;用于简化 Spring Boot 应用程序的配置。这个注解通常标注在主类上&#xff0c;用于标识一个 Spring Boot 应用的入口。通过这个注解&#xff…

【力扣】每日一题—第70题,爬楼梯

题目&#xff1a; 假设你正在爬楼梯。需要n阶你才能到达楼顶。 每次你可以爬1或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 思路&#xff1a; 我开始是写了一个函数计算爬一层和爬二层的个数&#xff0c;之后排列求和&#xff0c;但是超范围了&#xff0c…

数据结构基础--------【二叉树题型】

1、前提(待补充) 1.**DFS&#xff08;Depth First Search&#xff09;&#x1f617;*递归法得到最终的数组&#xff08;深度优先算法&#xff09; 其过程简要来说是对每一个可能的分支路径深入到不能再深入为止&#xff0c;如果遇到死路就往回退&#xff0c;回退过程中如果遇…

OAuth2.0登录的四种方式

OAuth登录的四种方式 1. 授权码 授权码&#xff08;authorization code&#xff09;方式&#xff0c;指的是第三方应用先申请一个授权码&#xff0c;然后再用该码获取令牌。 这种方式是最常用的流程&#xff0c;安全性也最高&#xff0c;它适用于那些有后端的 Web 应用。授权…

怎么通过住宅代理IP实现电商采集?

在电商行业&#xff0c;数据采集是一种常见的策略&#xff0c;用于分析市场趋势、监测竞争对手价格和库存、优化产品策略等。由于许多电商平台有严格的数据采集政策和反爬虫措施&#xff0c;使用住宅代理IP可以有效绕过这些限制&#xff0c;实现高效和安全的数据采集。本文将探…

点亿点计划Web3.0广告平台即将发射Clicks科力币

点亿点计划Web3.0广告平台即将发射Clicks科力币 我们很高兴地宣布&#xff0c;点亿点计划Web3.0广告平台即将发射Clicks科力币&#xff01;科力币&#xff08;Clicks&#xff09;是Clicks X Web3.0多功能应用的治理代币&#xff0c;未来将为代币持有人带来巨大的广告收入。 …

计算机的错误计算(二十六)

摘要 结合计算机的错误计算&#xff08;二十四&#xff09;中的 Maple 环境下的计算过程&#xff0c;&#xff08;二十五&#xff09;讨论了&#xff08;不&#xff09;停机问题。事实上&#xff0c;其它数学软件比如 Mathematica 也存在该问题。 &#xff08;不&#xff09;停…

《植物大战僵尸杂交版》2.2版本:全新内容与下载指南

《植物大战僵尸杂交版》2.2版本已经火热更新&#xff0c;带来了一系列令人兴奋的新玩法和调整&#xff0c;为这款经典的塔防游戏注入了新的活力。如果你是《植物大战僵尸》系列的忠实粉丝&#xff0c;那么这个版本绝对值得你一探究竟。 2.2版本更新亮点 新增看星星玩法 这个新…

Linux学习——Linux中无法使用ifconfg命令

Linux学习——Linux中无法使用ifconfg命令&#xff1f; &#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅…