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

news2024/12/28 6:08:41

在这里插入图片描述

文章目录

  • 引言
  • 中断流程图
  • 中断优先级
  • 下降沿
  • 中断结构图
  • 中断相关寄存器
    • 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;//打开外部中断1
	IT0 = 1;//设置为下降沿触发方式
}

void main()
{
	Init_Port();
	while(1)
	{
		
	}
}

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

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

相关文章

洁净车间的压缩空气质量如何检测(露点、水油、粒子、浮游菌)

通常一个空压机站的设备即为一个狭义的压缩空气系统&#xff0c;下图为一个典型的压缩空气系统流程图&#xff1a; 气源设备&#xff08;空气压缩机&#xff09;吸入大气&#xff0c;将自然状态下的空气压缩成为具有较高压力的压缩空气&#xff0c;经过净化设备除去压缩空气中的…

新手如何正确学习Python?分享我是如何2个月熟练掌握Python的!学习大纲+学习方式+学习资料 汇总!

前言 一直以来都有很多想学习Python的朋友们问我&#xff0c;学Python怎么学&#xff1f;爬虫和数据分析怎么学&#xff1f;web开发的学习路线能教教我吗&#xff1f; 我先告诉大家一个点&#xff0c;不管你是报了什么培训班&#xff0c;还是自己在通过各种渠道自学&#xff…

[C++][ProtoBuf][Proto3语法][三]详细讲解

目录 1.默认值2.更新消息1.更新规则2.保留字段reserved 3.未知字段1.是什么&#xff1f;2.未知字段从哪获取 4.前后兼容性5.选项option1.选项分类2.常用选项列举3.设置自定义选项 1.默认值 反序列化消息时&#xff0c;如果被反序列化的⼆进制序列中不包含某个字段&#xff0c;…

elasticsearch集群模式部署

系统版本&#xff1a;CentOS Linux release 7.9.2009 (Core) es版本&#xff1a; elasticsearch-7.6.2 本次搭建es集群为三个节点 添加启动用户 确保elasticsearch的启动用户为普通用户&#xff0c;这里我创建了es用户用于启动elasticsearch 执行命令为es用户添加sudo权限 v…

数学建模及国赛

认识数学建模及国赛 认识数学建模 环境类&#xff1a;预测一下明天的气温 实证类&#xff1a; 评价一下政策的优缺点 农业类&#xff1a; 预测一下小麦的产量 财经类&#xff1a; 分析一下理财产品的最优组合 规划类&#xff1a; 土地利用情况进行 合理的划分 力学类&#xf…

如何在 CentOS 中配置 Linux 命名空间(ip netns)

引言 Linux 命名空间是一项强大的技术&#xff0c;允许在同一系统上创建多个独立的虚拟化实例&#xff0c;每个实例可以拥有自己的网络栈、路由表、IP 地址等网络资源&#xff0c;实现资源的隔离和管理。本文将深入探讨如何在 CentOS 中配置和使用 ip netns 命名空间&#xff0…

网络安全合规建设

网络安全合规建设 一、法律安全需求基本合规&#xff08;1&#xff09;《网络安全法》重要节点等级保护政策核心变化 二、安全需求 业务刚需&#xff08;1&#xff09;内忧&#xff08;2&#xff09;外患 三、解决方法&#xff08;1&#xff09;总安全战略目标图&#xff08;2&…

PaddleVideo:Squeeze Time算法移植

参考PaddleVideo/docs/zh-CN/contribute/add_new_algorithm.md at develop PaddlePaddle/PaddleVideo GitHubAwesome video understanding toolkits based on PaddlePaddle. It supports video data annotation tools, lightweight RGB and skeleton based action recognitio…

Xilinx FPGA UltraScale SelectIO 接口逻辑资源

目录 1. 简介 2. Bank Overview 2.1 Diagram 2.2 IOB 2.3 Slice 2.4 Byte Group 2.5 I/O bank 示例 2.6 Pin Definition 2.7 数字控制阻抗(DCI) 2.8 SelectIO 管脚供电电压 2.8.1 VCCO 2.8.2 VREF 2.8.3 VCCAUX 2.8.4 VCCAUX_IO 2.8.5 VCCINT_IO 3. 总结 1. 简介…

基于信号量的生产者消费者模型

文章目录 信号量认识概念基于线程分析信号量信号量操作 循环队列下的生产者消费者模型理论认识代码部分 信号量 认识概念 信号量本质: 计数器 它也叫做公共资源 为了线程之间,进程间通信------>多个执行流看到的同一份资源---->多个资源都会并发访问这个资源(此时易出现…

【Qt课设】基于Qt实现的中国象棋

一、摘 要 本报告讨论了中国象棋程序设计的关键技术和方法。首先介绍了中国象棋的棋盘制作&#xff0c;利用Qt中的一些绘画类的函数来进行绘制。在创作中国象棋棋子方面&#xff0c;首先&#xff0c;我们先定义一下棋子类&#xff0c;将棋子中相同的部分进行打包&#xff0c;使…

Python:安装/Mac

之前一直陆陆续续有学python&#xff01;今天开始&#xff01;正式开肝&#xff01;&#xff01;&#xff01; 进入网站&#xff1a;可能会有点慢&#xff0c;多开几个网页 https://www.python.org 点击下载&#xff0c;然后进入新的页面&#xff0c;往下滑 来到File&#xff0…

PHP验证日本免费电话号码格式

首先&#xff0c;您需要了解免费电话号码的格式。 日本免费电话也就那么几个号段&#xff1a;0120、0990、0180、0570、0800等开头的&#xff0c;0800稍微特殊点&#xff0c;在手机号里面有080 开头&#xff0c;但是后面不一样了。 关于免费电话号码的划分&#xff0c;全部写…

忘记Apple ID密码怎么退出苹果ID账号?

忘记Apple ID密码怎么退出账号&#xff1f;Apple ID对每个苹果用户来说都是必不可少的&#xff0c;没有它&#xff0c;用户就不能享受iCloud、App Store、iTunes等服务。苹果手机软件下载、丢失解锁、恢复出厂设置等都需要使用Apple ID。如果忘记Apple ID 密码&#xff0c;这会…

Linux——多线程(五)

1.线程池 1.1初期框架 thread.hpp #include<iostream> #include <string> #include <unistd.h> #include <functional> #include <pthread.h>namespace ThreadModule {using func_t std::function<void()>;class Thread{public:void E…

九、Linux二进制安装ElasticSearch集群

目录 九、Linux二进制安装ElasticSearch集群1 下载2 安装前准备(单机&#xff0c;集群每台机器都需要配置)3 ElasticSearch单机&#xff08;7.16.2&#xff09;4 ElasticSearch集群&#xff08;8.14.2&#xff09;4.1 解压文件&#xff08;先将下载文件放到/opt下&#xff09;4…

Java系列-valitile

背景 volatile这个关键字可以说是面试过程中出现频率最高的一个知识点了&#xff0c;面试官的问题也是五花八门&#xff0c;各种刁钻的角度。之前也是简单背过几道八股文&#xff0c;什么可见性&#xff0c;防止指令重拍等&#xff0c;但面试官一句&#xff1a;volatile原理是什…

Vue基础--v-model/v-for/事件属性/侦听器

目录 一 v-model表单元素 1.1 v-model绑定文本域的value 1.1.1 lazy属性&#xff1a;光标离开再发请求 1.1.2 number属性&#xff1a;如果能转成number就会转成numer类型 1.1.3 trim属性&#xff1a;去文本域输入的前后空格 1.2v-model绑定单选checkbox 1.3代码展示 二 …

Python OpenCV 教学取得视频资讯

这篇教学会介绍使用OpenCV&#xff0c;取得影像的长宽尺寸、以及读取影像中某些像素的颜色数值。 因为程式中的OpenCV 会需要使用镜头或GPU&#xff0c;所以请使用本机环境( 参考&#xff1a;使用Python 虚拟环境) 或使用Anaconda Jupyter 进行实作( 参考&#xff1a;使用Anaco…

基于单片机的温湿度感应智能晾衣杆系统设计

&#xff3b;摘 要&#xff3d; 本设计拟开发一种湿度感应智能晾衣杆系统 &#xff0c; 此新型晾衣杆是以单片机为主控芯片 来控制的实时检测系统 &#xff0e; 该系统使用 DHT11 温湿度传感器来检测大气的温湿度 &#xff0c; 然后通过单 片机处理信息来控制 28BYJ &…