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

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

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

  • 28
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值