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就已经开启了,我们再配合对应的中断服务函数就好了

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

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

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

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

相关文章

架构之模板方法等模式的使用

目录 一、程序编写背景 二、编程思路讲解 - 类图 - 实现逻辑 - 工厂模式 - 模板方法模式 接口类(代码)抽象类(代码)具体实现类(代码)工厂类(代码)注册类(代码&…

Vue3 常用的10个组合式 API

2024-01-025,917阅读6分钟 Vue.js是一个用于开发Web应用程序的强大JavaScript框架。Vue 2 于 2023 年 12 月 31 日停止维护。而通过Vue 3,组合式API增强了我们利用Vue的能力,使我们的代码更具模块性和可读性。下面分享10个常用的Vue3组合式API&#xff…

[office] excel如何计算毛重和皮重的时间间隔 excel计算毛重和皮重时间间隔方法 #笔记#学习方法

excel如何计算毛重和皮重的时间间隔 excel计算毛重和皮重时间间隔方法 在日常工作中经常会到用excel,有时需要计算毛重和皮重的时间间隔,具体的计算方式是什么,一起来了解一下吧 在日常工作中经常会到用excel,在整理编辑过磅数据…

美创科技与河南金融信创生态实验室签署战略合作协议

2024年1月31日,由普惠通科技与河南省科学院物理所、北京交通大学、中国金融电子化集团重庆金融认证中心联合发起成立中部地区第一家金融信创生态实验室运营公司(即河南豫科普惠通信创科技有限公司)与杭州美创科技股份有限公司战略合作签约仪式…

【python】学习笔记02-判断语句

2.1 布尔类型和比较运算符 1. 在Python中&#xff0c;可以表示真假的数据类型是&#xff1a; 布尔类型&#xff0c;字面量True表示真&#xff0c;字面量False表示假 2. 除了可以定义布尔类型外&#xff0c;还可以通过____计算得到布尔类型&#xff1f; 通过<比较运算符>…

精雕细琢的文档体验:Spring Boot 与 Knife4j 完美交汇

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 精雕细琢的文档体验&#xff1a;Spring Boot 与 Knife4j 完美交汇 前言Knife4j 与 Swagger 的区别1. 特性与优劣势对比&#xff1a;Knife4j&#xff1a;Swagger&#xff1a; 2. 选择 Knife4j 的理由&a…

STL之stack+queue的使用及其实现

STL之stackqueue的使用及其实现 1. stack&#xff0c;queue的介绍与使用1.1stack的介绍1.2stack的使用1.3queue的介绍1.4queue的使用 2.stack&#xff0c;queue的模拟实现2.1stack的模拟是实现2.2queue的模拟实现 3.总结 所属专栏&#xff1a;C“嘎嘎" 系统学习❤️ &…

话题:IT行业有哪些证书含金量高?

IT行业有哪些证书含金量高? 1. 以下是一些在IT行业中我认为具有高含金量的证书&#xff1a; 思科认证&#xff08;Cisco Certifications&#xff09;&#xff1a;思科认证是由网络领域的著名厂商——Cisco公司推出的&#xff0c;是互联网领域的国际权威认证。这个认证体系包含…

如何像工程师一样阅读 - 快速阅读技术书籍的9个技巧

0. 目的 在看了 Read Like an Engineer: 9 Tips for Reading Technical Books Fast 之后&#xff0c; 记录一些个人的看法&#xff0c;并在这篇英文文章上作为实验&#xff0c; 记录一下正确的阅读方法。 1. 第一次阅读 1.1 生词表 parcel of the job: 工作中必不可少的部分…

使用cocos2d-console初始化一个项目

先下载好cocos2d-x的源码包 地址 https://www.cocos.com/cocos2dx-download 这里使用的版本是 自己的电脑要先装好python27 用python安装cocos2d-console 看到项目中有个setup.py的一个文件 python setup.py 用上面的命令执行一下。 如果执行正常的话回出现上面的图 然后…

Vue事件中如何使用 event 对象

在Vue中&#xff0c;事件处理函数常常需要获取事件触发时的相关信息&#xff0c;比如鼠标位置、按键信息等。而要获取这些信息&#xff0c;就需要使用event对象。那么在Vue的事件中如何正确使用event对象呢&#xff1f;接下来就来详细介绍一下。 首先&#xff0c;在Vue的事件中…

通过遵循最佳做法来提高 EDA 和 HPC 应用程序的 Azure NetApp 文件性能

介绍 Azure NetApp 文件是一项托管存储解决方案&#xff0c;适用于各种方案&#xff0c;包括高性能计算 (HPC) 基础结构。 低延迟和每秒高 I/O 操作数 (IOPS) 对于大规模企业而言是一种很好的组合。 假设你就职于一家半导体公司。 你的任务是设计公司的集成电路芯片&#xff…

P59---第二阶段B C 相电流

P59---第二阶段B C 相电流

curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION

文章目录 curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION概述笔记END curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION 概述 在看一个开源工程, 里面用到了curl和openssl, 但是工程使用vcpkg来管理的包, 用CMake来编译 依赖太多了, win10 编译选项为 vs2019 x64/Win32(或者Ninja)…

STM32F1 - 标准外设库_规范

STM32F10x_StdPeriph_Lib_V3.6.0 1> 头文件包含关系2> .c文件内部结构3> 宏定义位置4> 位掩码bit mask5> .c文件中定义私有变量 1> 头文件包含关系 1个头文件stm32f10x.h 就把整个MCU以及标准外设库&#xff0c;就管理了&#xff1b; 2> .c文件内部结构 …

【服务器数据恢复】服务器RAID模块硬件损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某品牌服务器中有一组由数块SAS硬盘组建的RAID5磁盘阵列&#xff0c;服务器操作系统是WINDOWS SERVER&#xff0c;服务器中存放企业数据&#xff0c;无数据库文件。 服务器出故障之前出现过几次意外断电的情况&#xff0c;服务器断电…

C++ 中的模型预测控制(01/2)

目录 一、说明二、MPC原理说明三、分解算法的来源并显示关键特征&#xff0c;四、C 实现说明五、平衡 Q 和 R六、资源下载地址 一、说明 以下文章介绍了应用模型预测控制器的简单控制系统方法。本文讨论了这种控制的基本机制&#xff0c;该机制适用于各种工程领域。 MPC 涉及对…

4.5 特效规范与拆分实现及程序的调用原理

一、特效基础流程 落地方案 连入游戏 需求 策划需求,美术需求 需要的SHADER,功能 测试/反馈/修改 效果迭代 满足功能的特效 概念设计 参考图,设计图 二、规范的设计原理与目的 节约沟通成本 保持项目的一致性 工作交接可以更加便捷 降低出错的概率 提升工作效率…

【数据结构】前缀树的模拟实现

目录 1、什么是前缀树&#xff1f; 2、模拟实现 2.1、前缀树节点结构 2.2、字符串的添加 2.3、字符串的查寻 2.3.1、查询树中有多少个以字符串"pre"作为前缀的字符串 2.3.2、查询某个字符串被添加过多少次 2.4、字符串的删除 3、完整代码 1、什么是前缀树&…

Vue-Vue3 集成编辑器功能

1、安装依赖 编辑器插件需要安装 wangeditor/editor 和 wangeditor/editor-for-vue 两个插件 npm install wangeditor/editor --savevue3运行如下命令安装 npm install wangeditor/editor-for-vuenext --savevue2运行如下命令安装 npm install wangeditor/editor-for-vue -…