STC系列单片机的中断系统

目录

一、中断系统的定义

二、STC15系列单片机的中断请求源及结构图

三、中断查询表以及触发方式

四、在keil c中如何声明中断函数

五、外部中断

六、基于STC15芯片实战中断系统的使用

(1)外部中断2/外部中断3来检测门的开关状态

(2)外部中断1来检测电源的电压情况


一、中断系统的定义

        

二、STC15系列单片机的中断请求源及结构图

我们这里所使用的是STC15F100W系列单片机,我们来详细看看他的介绍

        下面是中断的结构图,我们可以通过查询结构图来确定我们在使用一个中断的时候,需要配置哪些寄存器(也可以直接在烧录软件上使用样例程序来配置寄存器)

        值得注意的是外部中断0和外部中断1都是有两种触发模式的:上升沿触发和下降沿触发,而其余的外部中断2 3 4都只有下降沿触发这一种模式

三、中断查询表以及触发方式

四、在keil c中如何声明中断函数

        如果使用c语言来编程的话,中断查询的次序号就是中断号,中断号是写在普通函数后面的一个标志,有了这个标志后,就表示在接收到该中断请求的时候,会跳转到该中断服务函数中,一旦中断号写错了或者是没有写,就无法触发中断服务函数了

五、外部中断

        可以看到,外部中断服务函数虽然没有写入主函数main中,但是由于系统每一个时钟都会对外部中断引脚采样1次,所以一旦外部中断引脚发生了电平的变化,系统就会直接跳转到对应的中断服务函数中,从而完成相应的功能。

        中断的出现,让单片机可以自由判断外部环境的变化从而做出反应,而不用在主函数中一直循环判断函数而导致程序看起来卡死了,所以我们说中断的出现极大程度上的提高了单片机的工作效率。

六、基于STC15芯片实战中断系统的使用

        这是一款门磁探测器的电路图,可以看到他有外部中断01234这几个外部中断,下面我们就通过其中的几个来说明外部中断的使用方法

(1)外部中断2/外部中断3来检测门的开关状态

通过分析该电路图可以知道:

静态时:

干簧管远离磁铁(开门): GUAN : 高电平       KAI:   低电平

干簧管靠近磁铁(关门): GUAN : 低电平       KAI:   高电平

动态时:

关门动作:

只分析GUAN引脚。干簧管远离--> 干簧管靠近    GUAN: 由高电平变成低电平

开门动作:

只分析KAI引脚。-干簧管靠近-> 干簧管远离    KAI: 由高电平变成低电平

        因为GUAN和KAI引脚连接的是外部中断2和外部中断3,所以他们都只有下降沿触发这一种模式,即我们在关门动作的时候需要判断的是GUAN这个引脚的电平变化;在开门动作的时候需要判断的是KAI这个引脚的电平变化。

        

我们可以直接使用STC-ISP软件中的样例程序来配置我们的外部中断所需要的寄存器,并且套用中断服务函数

于是我们就拼凑出来这样一个代码

同时,为了测量的更加准确,我们先让GUAN和KAI这两个引脚都置为高电平

由此,我们就利用了外部中断2和外部中断3来判断门当时的状态,从而利用中断服务函数来实现我们需要的功能

(2)外部中断1来检测电源的电压情况

        首先我们来看看电源电压检测的电路图(达林顿开关电路)

经过分析可以知道:

静态分析:

电池未低压(正常情况):Volt_LOW 高电平

因为电池的电压还比较高,所以A点的电压也较高,由于三极管的特性在A端有电流的情况下,三极管导通,使得Q3接地,所以Q3和Q2之间没有电流,所以Q2没有导通,于是VoLT_LOW就是VCC的电压,即高电平了

电池低压:Volt_LOW 低电平

动态分析:

未低压--->低压:由高电平变成低电平(即产生了一个下降沿)

我们又知道VoLT_LOW连接到了INT1这个外部中断,所以我们只需要打开外部中断1,并且让系统自动检测外部中断1的情况即可完成对电压的检测了

首先从STC-ISP软件中抄一份对INT1的寄存器的配置代码,这样外部中断1就已经开启了,我们再配合对应的中断服务函数就好了

并且在主函数中检测标志位的变化情况来做出不同的反应,(记得加上防抖哟)

笔者简单的介绍了一下外部中断,希望大家有所帮助

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】- 继承(继承定义!!基本格式!切片概念!!菱形继承详解!)

继承 了解继承继承的定义基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承和友元菱形继承和菱形虚拟继承 了解继承 继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能&a…

优化 IT 支出和消除浪费的 8 种主要方法

不懈追求最佳 IT 支出对于任何组织的长期可持续发展和成功都至关重要。在这个技术快速进步的时代,您必须做出明智的决策,消除浪费,同时最大限度地提高技术投资的价值。 从进行 IT 成本分析到采用敏捷预算和技术标准化,这些策略对…

关于服务器解析A记录和CNAME记录的分析

内容提要: 大致讲下理解,dns域名解析这一块 0 . 问题来源 最近搞了一个七牛云上传,然后需要配置融合cdn加速,也就是可以加速域名,中间有一部需要CNAME 域名,也就是将七牛云提供的域名CNAME一下,查阅资料其实就是起一个别名,好访问而已. 方便我们访问云存储,达到加速的效果. …

Elasticsearch(ES) 简述请求操作索引下文档 增删查改操作

上文 Elasticsearch(ES) 创建带有分词器规则的索引 带着大家创建了一个带有分词功能的索引 老规矩 我们启动一下ES服务 本文 我们就来说说 关于文档的操作 我们先来添加一个文档 就像数据库加一条数据一样 这里 并不需要指定什么表结构和数据结构 它的文档结构是无模式的 添…

es6中标签模板

之所以写这篇文章,是因为标签模板是一个很容易让人忽略的知识点 首先我们已经非常熟悉模板字符串的使用方法 const name "诸葛亮" const templateString hello, My name is ${name}标签模板介绍 这里的标签模板其实不是模板,而是函数调用…

2024年Java面试题大全 面试题附答案详解,BTA内部面试题

基础篇 1、 Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) 阿里内部资料 基本类型 大小(字节) 默认值 封装类 6、Java自动装箱与拆箱 装箱就是…

《幻兽帕鲁》解锁基地和工作帕鲁数量上限

帕鲁私服的游戏参数通常可通过配置文件 PalWorldSettings.ini 来进行修改,然而这个配置文件有个别参数对游戏不生效,让人很是头疼。没错!我说的就是终端最大的帕鲁数量! 其实还有另外一种更加高级的参数修改方式,那就…

《Python 网络爬虫简易速速上手小册》第2章:网络爬虫准备工作(2024 最新版)

文章目录 2.1 选择合适的爬虫工具和库2.1.1 重点基础知识讲解2.1.2 重点案例:使用 Scrapy 抓取电商网站2.1.3 拓展案例 1:使用 Requests 和 BeautifulSoup 抓取博客文章2.1.4 拓展案例 2:使用 Selenium 抓取动态内容 2.2 设置开发环境2.2.1 重…

【前沿技术杂谈:开源软件】引领技术创新与商业模式的革命

【前沿技术杂谈:开源软件】引领技术创新与商业模式的革命 开源软件如何推动技术创新开源软件的开放性和协作精神促进知识共享和技术迭代推动关键技术的发展开源软件与新技术的融合 开源软件的商业模式开源软件的商业模式将开源软件与商业软件相结合 开源软件的安全风…

Docker Dockerfile

1、概念介绍 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。 每条保留字指令都必须为大写字母且后面要跟随至少一个参数 指令按照从上到下,顺序执行 #表示注释 每条指令都会创建一个新的镜像层并对镜像进…

PyTorch 2.2 中文官方教程(十)

使用整体追踪分析的追踪差异 原文:pytorch.org/tutorials/beginner/hta_trace_diff_tutorial.html 译者:飞龙 协议:CC BY-NC-SA 4.0 作者: Anupam Bhatnagar 有时,用户需要识别由代码更改导致的 PyTorch 操作符和 CUDA 内核的变化…

vulhub中AppWeb认证绕过漏洞(CVE-2018-8715)

AppWeb是Embedthis Software LLC公司负责开发维护的一个基于GPL开源协议的嵌入式Web Server。他使用C/C来编写,能够运行在几乎先进所有流行的操作系统上。当然他最主要的应用场景还是为嵌入式设备提供Web Application容器。 AppWeb可以进行认证配置,其认…

【数据结构]排序算法之插入排序、希尔排序和选择排序

简单不先于复杂,而是在复杂之后。 文章目录 1. 排序的概念及其运用1.1 排序的概念1.2 排序运用1.3 常见的排序算法 2. 常见排序算法的实现2.1 插入排序2.1.1 基本思想2.1.2 直接插入排序2.1.3 希尔排序(缩小增量排序) 2.2. 选择排序2.2.1 基本…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Menu组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Menu组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Menu组件 TextClock组件通过文本将当前系统时间显示在设备上。支持不同时区的时间…

Ubuntu+GPU搭建Stable-Diffusion教程

【前序】已经安装anaconda 1.git拉取项目到本地 执行git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 进入项目目录下 cd stable-diffusion-webui/ 2. 安装对应Python依赖包 首先安装pytorch和torchvision,若是GPU环境的用户需要安装与cu…

PHP入门指南:API

PHP入门指南:API 1. 简介2. API的基础概念2.1 什么是API?2.2 API的类型2.3 API的作用2.4 RESTful API2.5 API的基本构成元素 3. PHP与API的交互基础3.1 发送HTTP请求3.2 处理HTTP响应3.3 异常处理3.4 确保安全性 4. 如何在PHP中创建一个简单的API4.1 设计…

ShardingSphere 5.x 系列【5】Spring Boot 3.1 集成Sharding Sphere-JDBC并实现读写分离

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 使用限制3. 案例演示3.…

【蓝桥杯选拔赛真题64】python数字塔 第十五届青少年组蓝桥杯python 选拔赛比赛真题解析

python数字塔 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要求 (注:input()输入函数的括号中不允许添加任何信息) 提示信息: 数字塔是由 N 行数堆积而成,最顶层只有一个数,次顶层两个数,以此类推。相邻层之间的数用线连接,下一层的每个数与它上一层左上…

智能设备管理系统:PreMaint助力药厂攻克设备管理难题

在药品生产中,设备管理是确保质量的关键环节。传统的手工操作和纸笔记录方式已经难以适应当今药厂的需求,存在诸多问题。这些问题包括设备管理工作的不成体系,难以随时掌握设备的状态,以及设备无法满足工艺流程的需求。面对这些挑…

【Linux系统化学习】进程等待

目录 进程等待 进程等待的必要性 进程等待的方法 wait方法 等待一个进程(阻塞等待) waitpid方法 任意等待多个进程(阻塞等待) 父进程获取子进程的退出信息 非阻塞轮询等待 进程等待 进程等待的必要性 之前讲过,子进程退…