51单片机中断过程与主程序调用子程序过程的比较

发布者:CrystalRose最新更新时间:2016-09-08 来源: eefocus关键字:51单片机  中断过程  主程序调用 手机看文章 扫描二维码
随时随地手机看文章
3.1调用子程序过程

    主程序调用子程序过程应包括保护断点、跳至子程序首址、保护现场、子程序处理、恢复现场、恢复断点(子程序返回)6步。这六步都是用软件指令完成的。其中前两步保护断点和跳至子程序首址由调用指令CALL完成。保护断点其实就是把断点地址推入堆栈中保护起来,要注意的是保护的断点应是紧跟着调用指令的下一条指令地址,而不是调用指令本身地址,否则会引起重复调用“死循环”,这点必须提醒学生注意。LCALL与ACALL是MCS-51单片机的两条调用指令,分别称为长调用和绝对调用,两指令主要区别在于LCALL后面操作数直接就是16位二进制的子程序入口地址;而ACALL后面操作数只是11位二进制数,子程序入口地址是把这11位数作为低位地址,再加上ACALL的下一条指令地址(即断点地址)的高5位作为高位地址,从而形成16位的子程序入口地址。由此可知,两条调用指令的调用范围是不一样的,LCALL为64KB程序存贮器任何范围,而ACALL在高5位地址不变的同一页2KB范围内。

    由于主程序与子程序可能会使用相同的寄存器和存贮单元存放数据,如果两者这些数据无关,那么子程序在使用这些相同寄存器和存贮单元之前,就必须先把主程序存放在这些区间里的数据现场保护起来,子程序在使用这些区间结束后,再把主程序现场恢复出来,以便子程序返回主程序后,主程序继续使用这些区间。现场保护与恢复一般采用堆栈推入PUSH指令与堆栈弹出POP指令实现,当然也可采用改变工作寄存器R0~R7区间指针等方法实现。子程序返回只需用RET指令就可把保护在堆栈中的断点恢复出来,继续执行主程序。

    此外,主程序与子程序是密切联系的,它们之间存在着入口参数与出口参数传递问题,也就是主程序如何把输入参数传给子程序,子程序又如何把处理结果的输出参数带回给主程序,两者参数传递一般可采用寄存器或存贮单元、堆栈、数据指针等方法实现。

    子程序再调用子程序叫做子程序嵌套,由于MCS-51单片机只能把内部RAM 00~7FH 128字节单元作为堆栈使用,断点地址保护到堆栈中需占2字节单元,所以子程序最多可能嵌套64级,当然实际使用中子程序嵌套一般2~3级,否则程序结构就显得太复杂了。

3.2 中断过程

    中断过程远比调用子程序过程要复杂,它包括中断请求(或申请)、中断排队、中断响应、中断服务(或处理)和中断返回5大步。这5大步是由硬件和软件结合完成的。

    中断请求由中断源向CPU提出。MCS-51单片机只有T/C0定时/计数器0溢出、T/C1定时/计数器1溢出、TXD/RXD串行口发送与接收一帧完、INT0外部中断0和INT1外部中断1等5个硬件中断源,其中前三个为内部中断源,后两个为外部中断源。

    由于CPU在某一时刻只能响应一个中断请求,为处理执行主程序时同时来了多个中断请求和正在处理某一中断时又来了新的中断请求这两种情况,计算机采用硬件或软件给各个中断源按优先权大小进行中断排队,从多个中断申请中选出一个级别最高中断请求而响应之,这一过程称为中断排队。MCS-51单片机用户可用指令设置高、低两个优先级,而且同级中还有5个固定的隐含优先级,从高到低的优先级顺序分别是INT0、T/C0、INT1、T/C1、TXD/RXD。这样,在执行主程序时,同时来了两个以上中断请求,则先按高低两级选择高优先级,如只有一个高级就直接选之,如有两个以上都是同级,则按同级隐含优先级,选择其中一个高级别。如正在执行一个低优先级,又来了一个高优先级(即正在执行的中断级别低于新来的中断级别),则高优先级中断低优先级,这就形成了两级中断嵌套。如正在执行低的又来了另一低的或者正在执行高的又来了一个低的或高的(即正在执行的中断级别高于或等于新来的中断级别),则不予理睬,不会引起中断嵌套,也就是说同级隐含原则在不同时来了同级中断时无效。可见,MCS-51单片机最多形成两级中断嵌套。

    CPU在执行任何机器指令时,在每一个机器周期TCY都要抽点时间(MCS-51单片机为S5P2状态节拍)来采集查询有无中断请求,如没有,则继续执行原程序机器指令,如有中断请求,则先从中选出级别最高者,在中断响应条件成立时,去处理响应此中断请求。

MCS-51单片机的中断响应必要条件是中断屏蔽总开关EA和中断请求相应的屏蔽分开关都必须闭合,只有这样,中断请求信号才能送到CPU。此外,还不能碰到以下3种情况,即有优先级更高的中断请求同时提出或者正在执行同级或高级中断,正在执行的指令还没有执行完、正在执行RETI或访问中断屏蔽寄存器IE和中断排队寄存器IP,这3种情况是中断响应的充分条件。这1种情况中断排队轮不到它响应;第2种情况必须等到现行指令执行完,再响应中断,指令周期分为1、2、4TCY三种机器周期,计算机每个TCY出现仅查看一次中断请求,因此,2TCY和4TCY机器指令有可能没有执行完。如果执行指令没执行完就去响应中断,则中断处理返回后,计算机很难把分断开执行的同一条指令连贯起来;第3种情况处理与第2种情况类似,但它除了要把现行的RETI指令或访问IE、IP指令执行完处,还需再执行下一条指令,方能响应中断。利用这个原理,很容易实现单步STEP操作(调试程序时使用)。

    中断服务和中断返回又由关(禁止)同级和低级中断、中断请求撤除、保护断点、跳至中断服务程序入口、保护现场、中断处理、恢复现场、开(允许)同级和低级中断、恢复断点(中断返回)等9小步组成。这9步中断服务过程与前面介绍的6步调用子程序过程类似,只是增加了开、关同级和低级中断请求以及中断请求撤除3步,其余6步完全一致。开、关同级和低级中断目的是使不同时来中断请求的同级隐含排队原则无效,此时只能实现高级嵌套低级的两级中断嵌套。在中断处理的返回前清除原中断请求原因是防止同一次中断申请被重复响应。

    中断服务过程的前4步是由硬件自动实现的,这点完全不同于调用子程序过程。当然TXD/RXD中断请求与INT0、INT1电平触发中断请求还需用户分别用软件和硬件清除中断请求。MCS-51单片机的中断服务程序入口地址是固定的,它们分别是INT0 为0003H、T/C0为000BH、INT1为0013H、T/C1为001BH、TXD/RXD为0023H。断点现场保护与恢复也是通过堆栈推入与弹出或改变工作寄存器区来实现的。

中断处理完后,就应返回断点继续执行主程序,开同级和低级中断、恢复断点2步可用中断返回指令RETI实现,注意子程序返回指令RET只能实现恢复断点,而不能开同级和低级中断。

关键字:51单片机  中断过程  主程序调用 引用地址:51单片机中断过程与主程序调用子程序过程的比较

上一篇:8051单片机I/O口的工作原理
下一篇:ADDA系列PCF8591的驱动程序

推荐阅读最新更新时间:2024-03-16 15:09

51单片机中断应用与编程方法
中断的概念 中断示意图见图1,以下做3点说明。 1、CPU 在处理某一事件A 时,发生了另一事件B 请求CPU 迅速去处理(中断发生); 2、CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 3、待 CPU 将事件B 处理完毕后,再回到原来事件A 被中断的地方继续处理事件A(中断返回),这一过程称为中断 。 图1 中断示意图 引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构),51单片机中断结构见图2。 图2 中断结构
[单片机]
<font color='red'>51单片机</font>中断应用与编程方法
51单片机无条件转移类指令简介及举例
无条件转移类 指令 (1) 短转移类指令 AJMP addr11 (2) 长转移类指令 LJMP addr16 (3)相对转移指令 SJMP rel 上面的三条指令,如果要仔细分析的话,区别较大,但开始学习时,可不理会这么多,统统理解成:JMP 标号,也就是跳转到一个标号处。事实上,LJMP 标号,在前面的例程中我们已接触过,并且也知道如何来使用了。而AJMP和SJMP也是一样。那么他们的区别何在呢?在于跳转的范围不一样。好比跳远,LJMP一下就能跳64K这么远(当然近了更没关系了)。而AJMP 最多只能跳2K距离,而SJMP则最多只能跳256这么远。原则上,所有用SJMP或AJMP的地方都能用LJMP来替代。因此在
[单片机]
51单片机定时器设置方式_51单片机定时器/计数器
8051单片机内部有两个定时/计数器T0及T1,具有定时和计数两种功能。T0及T1在计数过程中不需要CPU参与,也不影响CPU的其他工作。当计数溢出后,定时/计数器给出中断信号,申请CPU停止当前的工作,去处理预先设定的中断事件。 一、T1内部结构 定时器工作模式:对内部时钟信号计数。由于时钟频率是定值,所以可根据计数值计算出定时时间。 计数器工作模式:是对加在T1(P3.5)引脚上的外部脉冲进行计数。 二、计数功能 计数器用于统计从TO(P3.4)和Tl(P3.5)两个引脚输入脉冲的负跳变数量。负跳变是指前一个机器周期采样为高电平,后一个机器周期为低电平。每输入一个脉冲负跳变,计数器加1。 输入脉冲的高电平与
[单片机]
<font color='red'>51单片机</font>定时器设置方式_<font color='red'>51单片机</font>定时器/计数器
基于AT89C51单片机的智能台灯设计
一.系统概述 系统使用的模块有AT89C51单片机+按键+两个不同颜色的小灯。 系统内使用AT89C51单片机作为主控,系统内分为普通模式和调节模式,上电之后就是普通模式,小灯会亮但是不能进行亮度调节,按下设置按键后亮度可调节的小灯亮,通过加减按键就能直接控制小灯的亮度。 二.仿真概述 1.系统上电台灯打开,此时的绿灯亮代表的是亮度无法修改的普通灯亮起。 2.按下设置按键后切换到可调节亮度的灯。 3.蓝色小灯的亮度调节是PWM调节,按键加和减可以调节信号的占空比,并实现小灯亮度的控制。 三.程序设计 使用Keil 51进行程序设计,打开Proteus时程序是默认烧录的状态,如果没有烧录点击AT89C51单片机并将
[单片机]
基于AT89C<font color='red'>51单片机</font>的智能台灯设计
51单片机——I2C总线驱动程序
为方便移植,采用多文件工程的方式。 void Delay10us()//延时10us { unsigned char a,b; for(b=1;b 0;b--) for(a=2;a 0;a--); } 起始信号:在SCL时钟信号在高电平期间SDA信号产生一个下降沿 void I2cStart()//为方便与其他函数衔接,起始之后SDA和SCL都为0,虽然这与I2C总线空闲状态不符,但并不影响程序运行 { SDA=1; Delay10us(); SCL=1; Delay10us();//建立时间是SDA保持时间 4.7us SDA=0; Delay10us();//保持时间是 4us SCL=0;
[单片机]
基于51单片机的压力测量控制系统研发
1 引言   目前我国发展煤炭生产机械化发展迅速。综采设备的应用,是提高效率、改善安全状况的措施。 影响开机率的一个主要因素是支架对工作面的顶板控制的好坏,因此,对综采工作面进行矿压监测与控制是很有必要的。要做到这一点,首先需要对井下工作面的液压支架的实际工作状况进行监测,通过对检测数据处理、分析,评定其效果,并采取相应措施,以提高开机率、提高产量。本文以监测综采液压支架的压力为研究内容,开发了一套基于单片机的压力测量控制系统。   2 压力测量控制系统功能设计   压力测量控制系统用于监测支架压力, 每台测量控制系统配有四只传感器, 可分别通过高压油管连接支架的立柱、平衡千斤顶, 前探梁千斤顶的油压腔。压力测量控制系
[单片机]
基于<font color='red'>51单片机</font>的压力测量控制系统研发
51单片机pwm调速程序
此程序是一个用51单片机来调直流电机转速的程序。当然也可以用来调整led灯的亮度,用定时器2来实现. #include reg52.h //包括一个52标准内核的头文件 #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit PWM = P3^3; //要控制的风扇 sbit K= P3^7; //按键控制转速 uchar scale;//用于保存占空比的输出0的时间份额,总共10份 //延时程序 void delay10ms(void) { unsigned char i,j; for(i=20;i 0;i-
[单片机]
基于80C51单片机的多功能肌电测量仪设计
肌电测量或肌电图是检查人体神经、肌肉系统功能的重要方法,广泛应用于神经科、骨科、耳鼻喉科及口腔科。它可为临床诊断、治疗神经肌肉系统疾患提供客观的科学依据。肌电测量仪一般只具有在示波器上显示波形和记录波形的功能。早期,肌电信号通过照相对胶片进行显影才能看到;后来,把肌电信号描绘在肌电图纸上。这两种肌电信号记录法的机构都很复杂。这里介绍一种利用普通的示波器,通过单片机和A/D、D/A转换控制系统构成的,具有记忆、波形分析(诊断)功能和各种操作的实时处理的低功耗智能肌电测量仪。该肌电测量仪可实现一次采集后,多次重复显示、打印,实现了肌电信号测量仪的智能化 1 多功能肌电测量仪的硬件设计 1.1 系统硬件结构框图 系统硬件结构框图如图
[单片机]
基于80C<font color='red'>51单片机</font>的多功能肌电测量仪设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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