外部中断_单片机_普中

发布者:WanderlustGlow最新更新时间:2024-08-05 来源: cnblogs关键字:外部中断  单片机  普中 手机看文章 扫描二维码
随时随地手机看文章

1 中断介绍

在我们的日常生活中,经常会遇到这样的情况:我们正在看书,突然客厅的电话响了,这时往往会停止看书,转而去接电话,接完电话后又接着看书。这种停止当前工作,转而去做其他工作,做完后又返回来做先前工作的现象称为中断。


所以单片机虽然是个机器,它也有类似的中断现象,当单片机正在执行某程序时,如果突然出现意外情况,它就需要停止当前正在执行的程序,转而去处理意外情况,处理完后又接着执行原来的程序。


2 中断相关概念

    

 

 图1 中断结构图

(1) 中断源

要让 CPU 中断当前的程序去做其他事情,需要向它发出请求信号,CPU 接收到中断请求信号后才能产生中断。让CPU产生中断的信号称为中断源(又称中断请求源)。


51系列单片机的中断源包括:两个外部中断源、两个定时器/计数器中断源和一个串行通信口中断源,如果它们向 CPU 发出中断请求信号,CPU 就会产生中断,停止执行当前的程序,转而去执行指定的程序(又称中断服务程序或中断子程序),执行完后又返回来执行原来的程序。

 

(2) 中断的优先级别

单片机内的CPU在工作时,如果一个中断源向它发出中断请求信号,它就会产生中断;如果同时有两个或两个以上的中断源发出中断请求信号,CPU会怎么办呢?CPU会先接受优先级别高的中断源请求,然后再接受优先级别低的中断源请求。

(3) 中断处理过程

① 响应中断请求。当 CPU 正在执行主程序时,如果接收到中断源发出的中断请求信号,就会响应中断请求,停止主程序,开始执行中断。

② 保护断点。为了在执行完中断后能返回主程序,在执行中断时,会将主程序的下一条指令的地址(又称断点地址)保存到数据存储器(RAM)的堆栈中。

③ 寻找中断入口地址。保护好断点后,CPU开始寻找中断入口地址(又称矢量地址),中断入口地址存放着相应的中断子程序,不同的中断源对应着不同的中断入口地址。

④ 执行中断子程序。CPU寻找到中断入口地址后,就开始执行中断入口地址处的中断子程序。由于几个中断入口地址之间只有8个单元空间(表中如0003H~000BH相隔8个单元),较小的中断子程序(程序只有一两条指令)可以写在这里,较大的中断子程序无法写入,通常的做法是将子程序写在其他位置,而在中断入口地址单元只写一条跳转指令,由该指令跳转到中断子程序。

⑤ 中断返回。执行完中断子程序后,就会返回到主程序,返回的方法是从RAM的堆栈中取出之前保存的断点地址,然后执行该地址处的主程序,从而返回到主程序。

(4)中断相关寄存器

(5)中断响应条件:①中断源有中断请求;②中断源的中断允许位为 1;③ CPU 开中断(即 EA=1)。

3 功能要求:外部中断属于单片机的内部资源,本实验所使用的独立按键KEY3和KEY3直接接在单片机开发板P3.2和P3.3,而P3.2和P3.3不仅是普通的IO口,而且还可以作为外部中断使用。故可以通过按键来模拟外部的脉冲信号输入到外部中断管脚来触发外部中断。要实现的功能是,当按下KEY3可控制LED1指示灯亮灭,按下KEY4可控制LED2指示灯亮灭。


4 原理分析

(1)在中断结构图1中,INT0和INT1即为外部中断0和外部中断1。

INT0对应的是P3.2口的附加功能,可由IT0选择其触发方式(低电平有效或者下降沿有效)。当CPU监测到P3.2引脚上出现有效的中断信号时,中断标志IE0置1(单片机自动完成),向申请中断。

INT1对应的是P3.3口的附加功能,可由IT1选择其触发方式(低电平有效或者下降沿有效)。当CPU监测到P3.3引脚上出现有效的中断信号时,中断标志IE1置1(单片机自动完成),向申请中断。

(2)外部中断寄存器的配置


1)中断请求标志寄存器 TCON

① IT0(TCON[0]):外部中断0触发方式控制位,当IT0=0时,为低电平触发方式;当IT0=1时,为边沿触发方式(下降沿有效);

②   IE0(TCON[1]):外部中断0中断请求标志位;

③   IT1(TCON[2]):外部中断1触发方式控制位,当IT1=0时,为低电平触发方式;当IT1=1时,为边沿触发方式(下降沿有效);

④   IE1(TCON[3]):外部中断1中断请求标志位。

2)中断允许控制寄存器 IE

①  EX0(IE[0]):外部中断0允许位;

② ET0(IE[1]):定时/计数器T0中断允许位;

③ EX1(IE[2]):外部中断1允许位;

④ ET1(IE[3]):定时/计数器T1中断允许位;

⑤ ES(IE[4]):串行口中断允许位;

⑥ IE[5]

⑦ IE[6]

⑧ EA(IE[7]):CPU中断允许位,即总允许位。


4 硬件设计

(1)系统框图

  

 

(2)独立按键和LED灯原理图

5 软件设计


 1 #include 'reg52.h'

 2 

 3 typedef unsigned int     u16;

 4 typedef unsigned char     u8;

 5 

 6 //定义输入、输出管脚

 7 sbit KEY3     = P3^2;      //独立按键3控制管脚

 8 sbit KEY4    = P3^3;      //独立按键4控制管脚

 9 sbit LED1    = P2^0;      //LED1控制管脚

10 sbit LED2    = P2^1;      //LED2控制管脚

11 

12 //延时函数,ten_us=1时,大约延时10us

13 void delay_10us(u16 ten_us)

14 {

15      while(ten_us--);

16 }

17 

18 //对外部中断0进行初始化设置

19 void exti0_init(void)

20 {

21       IT0    = 1;        //下降沿触发方式

22     EX0 = 1;        //打开INT0的中断允许

23     EA  = 1;        //打开总中断

24 }

25 

26 //对外部中断1进行初始化设置

27 void exti1_init(void)

28 {

29       IT1    = 1;        //下降沿触发方式

30     EX1 = 1;        //打开INT1的中断允许

31     EA  = 1;        //打开总中断

32 }

33 

34 void main()

35 {

36      exti0_init();    //对外部中断INT0进行配置

37     exti1_init();    //对外部中断INT1进行配置

38     while(1)

39     {

40 

41     }

42 }

43 

44 //外部中断0中断函数,中断号为0

45 void exti0() interrupt 0  

46 {

47       delay_10us(1000);     //消抖,忽略按下抖动过程

48     if(KEY3==0)           //再次判断按键3是否按下

49         LED1 = !LED1;     //LED1状态翻转

50 }

51 

52 //外部中断1中断函数,中断号为2

53 void exti1() interrupt 2  

54 {

55       delay_10us(1000);     //消抖,忽略按下抖动过程

56     if(KEY4==0)           //再次判断按键4是否按下

57         LED2 = !LED2;     //LED2状态翻转

58 }


6 仿真结果

 

7 实现现象

当按下按键KEY3,指示灯LED1点亮,再按下按键KEY3,指示灯LED1熄灭,如次循环。同理,按键KEY4控制LED2。


参考资料:
(1)中断系统的结构是什么样的?了解了结构才能进行下一步 (baidu.com);

(2)(80条消息) 51单片机中断相关寄存器_红桃Jk的博客-CSDN博客_51单片机中断寄存器;

关键字:外部中断  单片机  普中 引用地址:外部中断_单片机_普中

上一篇:定时计数器_单片机_普中
下一篇:在51单片机中,中断函数与一般函数的调用区别?

推荐阅读最新更新时间:2024-11-12 10:16

单片机最小系统制作
一、 确定任务 开发单片机最小系统 二、任务分析: 该系统具有的功能: (1)具有2位LED数码管显示功能。 (2)具有八路发光二极管显示各种流水灯。 (3)可以完成各种奏乐,报警等发声音类实验。 (4)具有复位功能。 三、功能分析 (1)两位LED数码管显示功能,我们可以利用单片机的P0口接两个数码管来现这个功能; (2)八路发光二极管显示可以利用P1口接八个发光二极管实现这个功能; (3)各种奏乐、报警等发声功能可以采用P2.0这个引脚接一蜂鸣器来实现。 (4)利用单片机的第9脚可以设计成复位系统,我们采用按键复位;利用单片机的18、19脚可以设计成时钟电路,我们利用单片机的内部振荡方式设计的。 四、
[单片机]
<font color='red'>单片机</font>最小系统制作
8051单片机-多机通信的研究
单片机构成的多机通信系统中常采用总线型主从式结构。在多个单片机组成的系统中,只允许存在一个主机,其他的就是从机,从机要服从主机的控制,这就是总线型主从式结构。 当51单片机进行多机通信时,串口要工作在方式2和方式3。假设当前多机通信系统有1个主机和3个从机,从机地址分别是00H、01H、02H。如果距离很近它们直接可以以TTL电平通信,一旦距离较远的时候,常采用RS-485串行标准总线进行数据传输。 为了区分是数据信息还是地址信息,主机用第九位数据TB8作为地址/数据的识别位,地址帧的TB8=1,数据帧的TB8=0。各从机的SM2必须置1。 在主机与某一从机通信前,先将该从机的地址发送给各从机。由于各从机SM2=1,接
[单片机]
8051<font color='red'>单片机</font>-多机通信的研究
AVR笔记3:AVRmega单片机熔丝位的设置详解及应用举例
一、正确配置AVR的熔丝位 对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。 (1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态, Unprogrammed 表示熔丝状态为 1 (禁止); Programmed 表示熔丝状态为 0 (允许)。因此,配置熔丝位的过程实际上是 配置熔丝位成为未编程状态 1 或成为已编程状态 0 。 (2)在使用通过选择打钩 方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚 表
[单片机]
51单片机模拟SPI总线通信程序及proteus仿真
分享一个51单片机模拟SPI总线来进行通信的程序及仿真 仿真原理图如下 单片机源程序如下: #include reg51.h //包含单片机寄存器的头文件 #include intrins.h //包含_nop_()函数定义的头文件 //x5045引脚定义 sbit SCK=P3^4; //将SCK位定义为P3.4引脚 sbit SI=P3^5; //将SI位定义为P3.5引脚 sbit SO=P3^6; //将SO位定义为P3.6引脚 sbit CS=P3^7; //将SCK位定义为P3.7引脚 //功能变量定义 #define WREN 0x06 //写使能锁存器允许 #define WRD
[单片机]
51<font color='red'>单片机</font>模拟SPI总线通信程序及proteus仿真
Exynos4412的外部中断是如何安排的?
平台 Linux4.9 tiny4412 概述 结合tiny4412开发板分析一下Exynos4412的外部中断是如何组织的。 在Exynos4412的用户手册第9章Interrupt Controller列出了支持的外部中断: 第1列是按Shared Peripheral Interrupt 排序的 第2列是按Software Generated Interrupt + Peripheral Interrupt(PPI+SPI)排序的, 目前GIC提供了16个SGI中断和16个PPI中断 从上面可以看到,硬件上提供了32个外部中断,但是我们在第6章的GPIO Control一节说: 图2 上面说,有172个外
[单片机]
Exynos4412的<font color='red'>外部中断</font>是如何安排的?
51单片机知识点汇总
一、STC89C51单片机外部引脚简介 电源及时钟引脚:Vcc(40脚)、GND(20脚)、XTAL1(19脚)、XTAL2(18脚)。 Vcc、GND——单片机电源引脚,不同的型号单片机接入对应电压电源,常压为+5V,低压为 +3.3V。 XTAL1、XTAL2——外接时钟引脚。XTAL1为片内震荡电路的输入端,XTAL2为片内震荡电路的输出端。8051的时钟有两种方式,一种是片内时钟震荡方式,需要在这两个脚外接石英晶体和震荡电容,震荡电容的值一般取10p~30p;另一种是外部时钟方式,将XTAL1接地,外部时钟信号从XTAL2脚输入。 编程控制引脚。如RST(复位)、PSEN(29脚)、ALE/PROG(30脚)、
[单片机]
单片机控制的动态数据缓存器的DRAM读/写控制过程
  读取一字节数据的程序段如下:      读取数据时,T1先置1,其后的RD信号将行地址送到地址线AB上,并使D。 触发器 锁存Tl,Q,变成低 电平 ,使RAS有效(低电平),实现行选通;再置TO为l,其后的RD信号将列地址送到AB上,并产生CAS信号,使欲读出单元的数据出现在DB上。RD失效的上升沿使CAS失效,同时,D2触发器置1,使D1清零,RAS也失效变为高电平。经过RC延迟放电,使欲读出单元的数据出现在DB上,D2重新清零,Q2又为高电平,恢复初始状态D1、D2均为零。      程序最后送T0、T1低电平,封锁RAS和CAS,防止系统中其他读/写器动作使DRAM产生误动作。      写数据过程与此类似。
[单片机]
<font color='red'>单片机</font>控制的动态数据缓存器的DRAM读/写控制过程
mcs51单片机外部RAM数据传送指令的使用举例说明
外部RAM数据传送 MOVX A,@Ri MOVX A, @DPTR MOVX @Ri, A MOVX @DPTR,A 执行过程中会使/WR、/RD有效。 例、试编写一程序段,实现将外RAM 0FAH单元中的内容传送到外RAM 04FFH单元中。 解: MOV DPTR,#04FFH MOV R0,#0FAH MOVX A,@R0 MOVX @DPTR, A
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved