一文详解MCS-51单片机的中断系统

发布者:HarmonySpirit最新更新时间:2023-02-02 来源: elecfans关键字:MCS-51  单片机  中断系统 手机看文章 扫描二维码
随时随地手机看文章

MCS-51中断系统:5个中断源(两个外部中断, 两个定时器, 一个串口),2个优先级

一文详解MCS-51单片机的中断系统

中断相关概念

中断:当CPU正在处理某件事情时,单片机外部或内部发生的某一紧急事件请求CPU立即去处理,于是,CPU暂时中止当前的工作,转去处理这个紧急事件,待处理完毕后,再回到原来被中止的地方,继续原来的工作。


中断过程

中断发生:CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理;

中断响应和中断服务:CPU暂时中断当前的工作,转去处理事件B(B的优先级要高于A);

中断返回:待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A ;

中断源(中断请求源):能够向CPU发出中断申请的部件。


中断系统结构

一文详解MCS-51单片机的中断系统

外部中断0和1:低电平或者脉冲下降沿时产生中断请求;

定时器/计数器0和1:计数值由FF变为00时产生中断请求;(定时功能:计数脉冲来源于片内;计数功能:计数脉冲来源于片外);

串行口:发送或者接受1字节数据时产生中断请求;


中断控制

4个特殊功能寄存器来实施中断控制: • 中断允许寄存器 IE • 中断优先级寄存器 IP • 定时/计数器及外部中断控制寄存器 TCON • 串口控制寄存器 SCON

中断允许寄存器 IE

一文详解MCS-51单片机的中断系统

EA 中断允许总控制位。0禁止,1允许。

ES 串行中断允许控制位。0禁止,1允许。

ET1 定时计数器1中断允许控制位。0禁止,1允许。

EX1 外部中断1允许控制位。0禁止,1允许。

ET0 定时计数器0中断允许控制位。0禁止,1允许。

EX0 外部中断0允许控制位。0禁止,1允许。

中断优先级寄存器 IP

一文详解MCS-51单片机的中断系统

PX0 外部中断0的优先级控制位。1为高,0为低

PT0 定时中断0的优先级控制位。1为高,0为低

PX1 外部中断1的优先级控制位。1为高,0为低

PT1 定时中断0的优先级控制位。1为高,0为低

PS 串行中断的优先级控制位。1为高,0为低

串行口控制寄存器 SCON

一文详解MCS-51单片机的中断系统

TI:串口发送中断标志,响应中断时用软件将TI标志清零

RI:串口接收中断标志,响应中断时用软件将RI标志清零

定时/计数器的控制寄存器 TCON

一文详解MCS-51单片机的中断系统

外部中断触发方式位 IT0、IT1(ITx)

ITx = 0 低电平触发,响应中断后IEx不自动清0ITx = 1 脉冲下降沿触发,响应中断后IEx自动清0

外部中断请求0/1的中断请求标志位IE0、IE1

定时器/计数器T0/T1的溢出中断请求标志位TF0/TF1(TFx)

启动T0/T1计数后,从初值加1计数,直到最高位产生溢出时,硬件将TFx置“1”,向CPU请求中断。 响应中断后TFx自动清0;

TR0,TR1与中断无关,仅与定时器/计数器T0/T1有关;

中断响应

中断响应就是CPU对中断源发出的中断请求做出的响应。

中断响应条件

CPU开中断,即中断允许寄存器IE中的中断允许总控制位EA = 1;中断源发出中断请求;中断源的中断允许位为1;没有同级或者高级的优先级中断正在执行;

中断响应的过程

由硬件根据中断源的类型自动生成一条长调用指令LCALL addr16。CPU执行LCALL addr16。

中断响应的时间

响应时间在3~8个机器周期之内;最短响应时间:查询中断请求标志位(T)+LCALL(2T);

中断响应的过程

将相应优先级状态触发器置1(阻断后来同级或低级中断 )执行硬件LCALL指令(PC入栈,中断服务程序入口址送PC)执行中断服务程序PS:编写中断服务程序注意:中断服务程序入口存放指令LJMP或AJMP;现场保护与现场恢复。

中断返回

最后指令为RETI,功能为:

将断点从堆栈弹送PC,CPU从原断点继续执行将相应优先级状态触发器清0,恢复原来工作状态

8051中断程序设计

中断服务程序基本流程

关中断:为了防止此时有高一级的中断进入,以免现场保护的执行过程被中断。

现场保护:所谓现场是指中断时刻单片机中某些寄存器和存储器单元中的数据或状态。为了不让中断服务程序的执行破坏这数据或状态,以免中断返回后影响主程序的运行,需要将他们送入堆栈保存起来。

开中断:为了允许有更高级的中断进入。这样一来,除了现场保护和现场恢复外,中断处理的过程仍允许中断嵌套的功能。

中断处理

关中断:为了防止此时有高一级的中断进入,以免现场恢复的执行过程被中断。

现场恢复:中断处理结束后,在返回主程序前,把保存的现场的内容从堆栈中弹出,以恢复那些寄存器和存储单元中的原有内容

开中断:为了允许有更高级的中断进入。现场恢复后,仍允许中断嵌套的功能。

中断返回:必须是返回指令RETI。CPU执行完这条指令后,把响应中断时所置“1”的优先级状态触发器清“0”,然后从堆栈中弹出栈顶上的两个字节的断点地址送到程序计数器PC,弹出的第一个字节送入PCH,第二个字节送入PCL,CPU从断点处重新执行被中断的主程序。

实例

ORG 0000H ;程序开始LJMP START ;= LJMP 1000HORG 0003H ;外部中断0入口地址

LJMP INTORG 1000H ;主程序入口START: MOV P1, #0AAH ; #0AAH=10101010BSETB EX0 ;允许外部中断0SETB PX0 ;设置外部中断0为高优先级SETB IT0 ;设置外部中断0为脉冲下降沿触发SETB EA ;开中断SJMP $ ;原地跳转,等待中断

INT: CLR EA ;关中断PUSH PSW ;现场保护PUSH ACC ;SETB EA ;开中断

CPL A ;对累加器A按位取反MOV P1, A ;累加器A值送P1端口

CLR EA ;关中断POP ACC ;现场保护POP PSW ;SETB EA ;开中断RETI ;


关键字:MCS-51  单片机  中断系统 引用地址:一文详解MCS-51单片机的中断系统

上一篇:51单片机的扩展中断方法
下一篇:基于51单片机的简易电梯系统的设计

推荐阅读最新更新时间:2024-11-13 06:33

AVR单片机C语言入门知识
1、基本语法介绍 一个简单的AVR程序 #include iom16v.h #include macros.h void main() { PORTA = 0x0F; //给PA口赋值,让PA口低四位为1,高四位为0 while(1) ; }本程序的作用是把PA口的值设为0x0F。 1、程序中以井号开头的语句#include iom16v.h 是包含特定的头文件,叫预处理指令,i0m16v表示使用的是mega16,macros.h包含了必须的avr操作命令。 2、C语言的程序是由函数构成的,如上面的那个void main(),前面的void表明函数没有返回值。每一个c程序里面里有且只有一个main()函数,系
[单片机]
51单片机运算器(ALU)的主要功能
A)算术和逻辑运算,可对半字节(一个字节是8位,半个字节就是4位)和单字节数据进行操作。 B)加、减、乘、除、加1、减1、比较等算术运算。 C)与、或、异或、求补、循环等逻辑运算。 D)位处理功能(即布尔处理器)。 由于ALU内部没有寄存器,参加运算的操作数,必须放在累加器A中。累加器A也用于存放运算结果。 例如:执行指令 ADD A,B 执行这条指令时,累加器A中的内容通过输入口In_1输入ALU,寄存器B通过内部数据总线经输入口In_2输入ALU,A+B的结果通过ALU的输出口Out、内部数据总线,送回到累加器A。
[单片机]
几种常用单片机I/O口线的驱动能力
在控制系统中,经常用单片机的I/O口驱动其他电路。几种常用单片机I/O口驱动能力在相关的资料中的说法是:GMS97C2051、AT89C2051的P1、P3的口线分别具有 10mA、20mA的输出驱动能力,AT89C51的P0、P1、P2、P3的口线具有10mA的输出驱动能力。在实际应用中,仅有这些资料是远远不够的。笔者通过实验测出了上述几种单片机的I/O口线的伏安特性(图1、图2),从中可以得到这些I/O口的实际驱动能力。 说明:1、测试方法:所测试的口线输出的信号是周期为4秒的方波。当测试口线为低电平时的驱动能力时,该口线通过电阻箱接+5V电源,测出该口线对地的电压,从而计算出通过电阻的电流,即灌电流;测出这样的一组数据,得
[单片机]
几种常用<font color='red'>单片机</font>I/O口线的驱动能力
51单片机的数码管动态扫描方法
1.实验任务   如图4.13.1所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,当开关接高电平时,显示“12345”字样;当开关接低电平时,显示“HELLO”字样。 2.电路原理图 图4.13.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P0.0/AD0-P0.7/AD7用8芯排线连接到“动态数码显示”区域中的a-h端口上; (2).把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“动态数码显示”区域中的S1-S8端口上; (3).把“单片机系统”区域中的P1.7端口用导线连接到“独立式键盘”区域中的SP1端口上; 4.程序设计内容 (1).动
[单片机]
51<font color='red'>单片机</font>的数码管动态扫描方法
四、单片机读取ID卡(硬件调试及读码)
1、功率放大电路及125Khz载波测量 A点为示波器测量处,signalcarrier为单片机产生125KHz波形 实际波形 2、LC谐振电路及正弦波测量 B点为示波器测量点 3、包络检波电路及检波波形 C点为示波器测量点 4、放大整形电路及输出波形测量 测量点为OutSignal。 5、波形分析与读码 通过上面最终输出的波形,单片机已经可以识别到输出的曼切斯特码了。 首先我们使用市面上能买到的读卡器,读取一下本次测试用的ID卡卡号 1 E 0 0 6 8 B 0 9 8 通过在EM4100的数据格式一文中的格式,我们进行拆解,如下图所示 下面是一段随机截取的输出波形。我们进行分析 1111111
[单片机]
四、<font color='red'>单片机</font>读取ID卡(硬件调试及读码)
蓝牙定时开关APP软件(附51单片机参考程序)
APP发送字符“1”至“7”数字。比如第一组定时发送的是字符“1”。第二组定时发送字符“2”.....一共7组。可用串口助手测试,电脑与蓝牙模块通信连接,如图1.所示。 单片机源程序如下: #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar tmp; uint c=0; sbit led1=P1^0; //指示灯0 sbit led2=P1^1; //指示灯1 sbit led3=P1^2; //指示灯3 sbit le
[单片机]
蓝牙定时开关APP软件(附51<font color='red'>单片机</font>参考程序)
单片机复位电路
单片机复位电路, 以下是推荐用的几种典型复位电路, 其中图三图四都可作为延时复位电路。在待机状态下由于其它电路干扰引起的死机,可以在芯片没有播放语音时切断芯片电源,参考电路图如下
[模拟电子]
<font color='red'>单片机</font>复位电路
GigaDevice发布多款基于ARM Cortex-M3内核的32位通用MCU
         领先的半导体供应商 GigaDevice ( 兆易创新 ) 日前在中国发布 14 款基于 ARM® Cortex TM -M3 内核的 GD32F103 系列 32 位通用 MCU 产品。目前,该系列产品已经开始提供样片。   GD32 系列 MCU 力争为用户带来优异的系统性能与灵活的应用体验,并在性价比上做得更为出众。为了给用户在研发时有更大的自由选择范围,全新的 GD32F103 产品线提供从 16KB 到 128KB 的 Flash 容量,并有 QFN36 , TQFP48 , LQFP64 和 LQFP100 多种封装选择。系列产品在软件和引脚封装方面全兼容。   GD
[手机便携]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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