51单片机中断系统编程
MCS-51单片机的中断系统

MCS-51单⽚机的中断系统单⽚机中断技术概述在任何⼀款事件驱动型的CPU⾥⾯都应该会有中断系统,因为中断就是为响应某种事件⽽存在的。
中断的灵活应⽤不仅能够实现想要的功能,⽽且合理的中断安排可以提⾼事件执⾏的效率,因此中断在单⽚机应⽤中的地位是⾮常重要的。
单⽚机中断(Interrupt)是硬件驱动事件,它使得CPU暂停当前的主程序,转⽽去执⾏⼀个中断服务⼦程序。
为了更形象地理解中断,下⾯以学⽣上⾃习时接电话为例阐述⼀下中断的概念。
单⽚机的中断系统有5个中断源、2个中断优先级,可实现两级中断服务程序嵌套。
如果单⽚机没有中断系统,单⽚机的⼤量时间可能会浪费在查询是否有服务请求发⽣的定时査询操作上。
采⽤中断技术完全消除了单⽚机在査询⽅式中的等待现象,⼤⼤地提⾼了单⽚机的⼯作效率和实时性。
单⽚机中断系统结构及中断控制中断系统结构图如图5-2所⽰。
由图5-2可见,MCS-51中断系统共有5个中断请求源:INT0——外部中断请求0,中断请求信号由INT0引脚输⼊。
定时/计数器T0计数溢出发出的中断请求。
INT1——外部中断请求1,中断请求信号由INT1引脚输⼊。
定时/计数器T1计数溢出发出的中断请求。
串⾏⼝中断请求。
中断优先级从⾼到底排列。
单⽚机如何知道有中断请求信号?是否能够响应该中断?若5个中断源请求信号同时到来,单⽚机如何响应?这些问题都可以由中断寄存器来解决。
单⽚机中断寄存器有中断标志寄存器TCON和SCON、中断使能寄存器IE和中断优先级寄存器IP,这些寄存器均为8位。
中断标志寄存器5个中断请求源的中断请求标志分别由TCON和SCON的相应位锁存,单⽚机通过这些中断标志位的状态便能知道具体是哪个中断源正在申请中断。
TCON寄存器TCON寄存器为定时/计数器的控制寄存器,字节地址为88H,可位寻址。
特殊功能寄存器TCON的格式如图5-3所⽰。
TCON各标志位功能如下。
TF1——定时/计数器T1的溢出中断请求标志位。
51单片机中断函数定义

51单片机中断函数定义51单片机是一种广泛应用于嵌入式系统开发的单片机,其中断函数是其常用的编程方法。
本文将为读者介绍51单片机中断函数的定义及其编写方法。
一、中断函数的概念中断函数是指当51单片机运行时,某个特殊事件(如外部中断、定时器中断等)发生时,CPU自动调用的一段程序。
这段程序一般是由开发者自己编写的,用于完成特定的工作任务。
二、中断函数的定义在51单片机的开发中,需要用到中断函数时,就需要先进行中断函数的定义。
中断函数的定义包括以下几个方面:1. 定义函数名中断函数一般采用void类型,同时加上中断函数名称,以便CPU 识别该函数。
例如:void timer_ISR() {}2. 定义函数类型在编写中断函数时,需要定义其类型,以表明该函数为中断函数。
例如:void interrupt Timer() interrupt 1 {}其中,interrupt表示该函数为中断函数;Timer表示中断名称;1表示中断号,不同的中断有不同的中断号。
3. 定义中断向量因为51单片机有多个中断,每个中断都有自己的中断向量,需要在编写中断函数时定义中断向量。
例如:org 0BH针对不同的中断类型,中断向量有不同的取值位置,需要根据实际情况设定。
三、中断函数的编写方法编写中断函数时,需要注意以下几点:1. 禁止中断嵌套在编写中断函数时,必须要禁止中断嵌套。
因为中断函数执行期间若还发生新的中断,将影响程序的正常执行。
可以在中断函数的开始部分使用EA=0来禁止所有中断,而在中断函数结束时使用EA=1来允许中断。
2. 确定中断源在编写中断函数时,需要确定触发中断的中断源。
例如,寄存器TCON.0表示定时器1溢出中断,如果等于1表示中断发生。
因此,我们可以用if(TCON&0x01)来判断是否触发中断。
3. 处理中断当中断源发生时,中断函数被调用。
我们可以在中断函数中编写代码来处理中断,例如改变某个寄存器的值,或运行特定的代码等。
单片机教程 第6章-中断系统

TCON位功能:
TF0/TF1:定时器溢出中断申请标志位: =0:定时器未溢出; =1:定时器溢出申请中断,进中断后自动清零。
③ IE1 —— 外中断中断请求标志 当P3.3引脚信号有效时,IE1=1 ④ IE0 —— 外中断中断请求标志 当P3.2引脚信号有效时,IE0=1
IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。
=1:在INT0/INT1端申请中断的信号负跳变有效.
6.2
51单片机的中断系统
3、串行口中断设定
串行控制寄存器SCON控制字,字节地址:98H
SCON 位名称 位地址 功能 D7 D6 — — — — — — D5 — — — D4 — — — D3 — — — D2 — — — D1 TI 99H 串行发送 中断标志 D0 RI 98H 串行接收 中断标志
6.1
中断的概念
6.1.3 中断的分类 可分为三类: * 可屏蔽中断:由CPU的可屏蔽中断引脚INT引起的 中断。 * 非屏蔽中断:由CPU的非屏蔽中断引脚NMI引起的 中断(8086CPU)。 * 软件中断:由中断指令引起的中断(8086CPU)。 • 51单片机的中断可以分为:
①外部中断,由外部可屏蔽中断和外部计数器中断组成; ②内部中断,由内部定时器、串口传输中断等组成。
输入引脚。允许用户设定外部中断源以低电平或 者是负跳变方式触发。
6.2
51单片机的中断系统
②定时器溢出中断源:内部中断,51内部有两
个16位定时/计数器,它们由内部定时脉冲(主脉 冲12分频)或外部引脚T0、T1输入的外部计数脉 冲计数。当计数值溢出时,产生中断请求。这两 个16位定时/计数器的初值可由用户设定。
MCS-51单片机的中断系统

其各位格式为: D7 D6 D5 D4 D3 D2 D1 D0 -- -- -- PS PT1 PX1 PT0 PX0
如果CPU接收到几个相同优先级的中断请求源时,响应哪一个 中断申请要取决于一个内部的硬件查询序列,此时应按照下表所 示的优先权结构先后响应中断请求。
中断源 外部中断0(IE0) 定时器T0中断(TF0) 外部中断1(IE1) 定时器T1中断(TF1) 串行口中断(RI、TI)
主程序的中断处理
1.2 CPU响应及处理中断机制
一般来说,根据中断源的轻重缓急排序,CPU优先处理最 紧急事件的中断请求源。也就是说,需要对各个中断源设定 相应的优先级,CPU总是最先响应级别最高的中断。中断源可 以分为两个中断优先级:高优先级和低优先级。用户可以用 关中断指令或复位指令来屏蔽所有中断请求,也可以用开中 断指令使CPU接收中断申请。
SM0 SM1 SM2 REN TB8 RB8 TI RI
1.4 中断控制及中断优先级
1.中断允许控制寄存器IE(字节地址A8H)
D7 D6 D5 D4 D3 D2 D1 D0 EA -- ET2 ES ET1 EX1 ET0 EX0
使用汇编语言程序控制中断请求信号的允许 或禁止的程序示例如下:
CLR EA ; 禁止所有中断请求
MOV SP, #60H SETB PX0 SETB IT0 SETB ET0 SETB EX0 SETB EA
【例2】若要求外部中断引脚 采用边沿触发方式,处于高优先 级,初始化程序可以采用位操作指令,也可以用字节型指令进行编 制。
位操作指令: SETB EA SETB EX1 SETB PX1 SETB IT1
送/接收后引起。
2.中断请求标志 1)TCON寄存器中的中断标志 TCON是定时/计数器T0、T1的控制寄存器,格式如下:
51单片机汇编中断程序调用子程序

文章标题:深度解析:51单片机汇编中断程序调用子程序一、介绍在51单片机的汇编编程中,中断程序和子程序的调用是非常重要的内容。
本文将深入讨论51单片机汇编中断程序如何调用子程序的相关知识,帮助读者更加深入地理解这一主题。
二、51单片机汇编中断程序调用子程序的基本原理在51单片机中,中断是指在程序运行过程中,由硬件或者软件主动触发的一种事件,当中断发生时,CPU会立即暂停正在执行的程序,转而去执行与该中断相关的处理程序,当处理完毕后再返回原程序继续执行。
子程序则是一段独立的代码,可以被主程序或其他子程序调用执行。
中断程序调用子程序的基本原理是,当中断发生时,CPU会跳转到中断服务程序进行处理,在中断服务程序中可以调用需要的子程序进行处理,处理完毕后再返回中断服务程序,最终返回到原来的程序中继续执行。
三、中断程序调用子程序的具体实现方法1. 中断程序的编写首先需要编写中断程序,并向51单片机的中断向量表中注册相应的中断号。
在中断程序中,可以调用需要的子程序进行处理。
2. 子程序的编写编写需要被调用的子程序,并保证其能够正确地处理需要的任务。
子程序的调用和返回是通过特定的指令来实现的。
3. 调用和返回在中断程序中,通过特定的指令调用需要的子程序,等待子程序执行完成后再进行返回。
这里需要特别注意子程序调用的参数传递和返回值的处理。
四、中断程序调用子程序的实际应用中断程序调用子程序在实际应用中有着广泛的用途,比如在实时系统中,可以利用中断程序调用子程序来实现即时响应;在通信系统中,可以利用中断程序调用子程序来实现数据处理和通信协议的处理等。
五、个人观点和总结中断程序调用子程序是51单片机汇编编程中的重要内容,掌握了这一技术可以让我们更加灵活地进行程序设计和开发。
通过本文的深度解析,希望读者能够更加深入地理解和掌握这一知识,并在实际应用中发挥其作用。
完整的文章已经写好并按照知识的文章格式进行了排版,总字数超过3000字。
51单片机中断程序例子

51单片机中断程序例子
1. 外部中断:当外部信号引脚检测到高电平时,单片机会触发外部中断服务程序。
可以利用外部中断实现按键扫描功能,当按键按下时,触发中断程序对按键进行处理。
2. 定时器中断:利用定时器中断可以实现精确的时间控制。
例如,我们可以设置定时器中断为1秒,当定时器溢出时,触发中断程序,实现1秒钟执行一次的任务。
3. 串口中断:当接收到串口数据时,单片机会触发串口中断服务程序,可以利用串口中断实现串口通信功能。
4. ADC中断:当模数转换器完成一次转换时,单片机会触发ADC中断服务程序,可以利用ADC中断实现模拟信号的采集和处理。
5. 看门狗中断:看门狗定时器溢出时,单片机会触发看门狗中断服务程序,可以利用看门狗中断实现系统复位或其他相关功能。
6. 外部中断优先级:当多个外部中断同时触发时,可以通过设置外部中断的优先级来确定触发的顺序和优先级。
7. 定时器中断优先级:当多个定时器中断同时触发时,可以通过设置定时器中断的优先级来确定触发的顺序和优先级。
8. 中断嵌套:单片机支持中断嵌套,即在一个中断服务程序中触发
另一个中断服务程序,可以通过中断嵌套实现复杂的任务处理。
9. 中断屏蔽:单片机支持对中断的屏蔽,即可以通过设置中断屏蔽标志位来屏蔽某些中断,使其暂时不被触发。
10. 中断标志位:单片机提供中断标志位,用于标识中断是否被触发。
在中断服务程序中,可以通过读取和清除中断标志位来判断中断是否发生。
以上是根据51单片机中断程序的例子进行的描述,这些例子涵盖了常见的中断类型和相关功能。
通过学习和理解这些例子,可以更好地掌握51单片机中断编程的原理和方法。
第3章MCS-51单片机的中断系统

3.3 MCS-51的中断系统 的中断系统
4、中断响应过程 、 关中断:屏蔽其它中断请求信号。 关中断:屏蔽其它中断请求信号。 保护断点:将断点地址压入堆栈保存,即当前 值入栈 值入栈。 保护断点:将断点地址压入堆栈保存,即当前PC值入栈。 寻找中断源:中断服务程序入口地址送 ,转入中断服务。 寻找中断源:中断服务程序入口地址送PC,转入中断服务。 保护现场:将中断服务程序使用的所有寄存器内容入栈。 保护现场:将中断服务程序使用的所有寄存器内容入栈。 中断处理:执行中断源所要求的程序段。 中断处理:执行中断源所要求的程序段。 恢复现场:恢复被使用寄存器的原有内容。 恢复现场:恢复被使用寄存器的原有内容。 开中断:允许接受其它中断请求信号。 开中断:允许接受其它中断请求信号。 中断返回:执行 指令, 中断返回:执行RETI指令,栈顶内容 指令 栈顶内容→PC,程序跳转回断点。 ,程序跳转回断点。
当前PC入栈 书中作记号 当前 入栈
主程序 执行主程序 中断请求 断点 继续执行主程序 中断返回 执行中断 处理程序 中断响应
中断与转子的区别 中断是随机的, 中断是随机的,转子事先编程决定
3.3.1 中断的定义 2、几个术语 、 主程序:原来正常运行的程序称为主程序。 主程序:原来正常运行的程序称为主程序。 断点: 主程序被断开的位置(或地址)称为“断点” 断点 主程序被断开的位置(或地址)称为“断点”。 中断源:引起中断的原因,或发出中断申请的来源。 中断源 引起中断的原因,或发出中断申请的来源。 引起中断的原因 中断请求:中断源要求服务的请求称为“中断请求” 中断请求 中断源要求服务的请求称为“中断请求” 。 中断源要求服务的请求称为 中断响应: 终止当前执行的程序, 中断响应:CPU终止当前执行的程序,去执行相应中断源 终止当前执行的程序 的中断请求。 的中断请求。 中断服务或中断处理程序: 中断服务或中断处理程序: “中断”之后所执行的相应的处理程序。 中断”之后所执行的相应的处理程序。 中断系统:能够实现中断处理功能的部件。 中断系统:能够实现中断处理功能的部件。
51单片机的中断控制

AEH 0
ADH 0
ACH ES 0
ABH ET1
1
AAH EX1
0
A9H ET0
1
A8H EX0
0
用位操作指令
CLR ES CLR EX0 CLR EX1 SETB ET0 SETB ET1 SETB EA
; ES=0,禁止串行口中断 ; EX0=0,禁止外部中断0 ; EX1=0,禁止外部中断1 ; ET0=1,允许定时/计数中断0 ; ET1=1,允许定时/计数中断0 ; CPU开中断
TI SCON
IE EX0 EA ET0 EX1
ET1 ES
IP
PX0 1
0
PX1 1
0
PT0 1
0
PT1 1
0
PS 1
0
高
0003H 000BH 0013H 001BH 0023H
CPU
0003H 000BH 0013H 001BH 0023H
低
2. 51单片机的中断控制
中断的开放与禁止
51系列单片机的5个中断源都是可屏蔽中断,由中断系统内部的专用寄 存器IE负责控制各中断源的开放或屏蔽。
;EA位置 “1” ,CPU开中断 ;EX0位置 “1” ,允许外部中断0产生中断 ;PX1位置 “1” ,外部中断1为高级中断 ;IT1位置 “0” ,外部中断1为电平触发
3. 51单片机中断程序设计
采用中断的程序结构:
主程序起始地址0000H执行,在0000H处用无条件转移指令; 各中断入口地址,用无条件转移指令
IE A8H
7
6
EA
位地址
AF
5
4
3
2
1
0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if (counter==200) //一秒时间到
{
counter=0; //重新计数5毫秒的个数
P1_0=~P1_0; //P1.1引脚输出电平反相,使灯光闪烁
}
}
在上面的程序中,定时器0工作在方式0,定时时间为5ms。再借助无符号变量counter计数
中断的次数,当计数到counter=200时,表示时间已经1s,此时将计数变量counter清零,
来打开或关断各中断源的中断请求,基本格式如下:
上传的图片
抱歉,您所在的组无权下载附件,请注册或登陆
Ø EA:全局中断允许位。EA=0,禁止一切中断;EA=1,打开全局中断控制,此时,由各
个中断控制位确定相应中断的打开或关闭。
Ø×:无效位。
Ø ES:串行I/O中断允许位。ES=1,允许串行I/O中断;ES=0,禁止串行I/O中断。
51单片机中断系统编程
51单片机中断系统编程
上传的图片
抱歉,您所在的组无权下载附件,请注册或登陆中断是指如下过程(如下图所示):CPU
与外设同时工作,CPU执行主程序,外设做准备工作。当外设准备好时向CPU发中断请求信
号,若条件满足,则CPU终止主程序的执行,转去执行中断服务程序。在中断服务程序中
CPU与外设交换信息,待中断服务程序执行完后,CPU再返回刚才终止的主程序继续执行。
按如下顺序确定响应的先后顺序:
INT0→T0→INT1→T1→RI/T1
3中断的响应过程
8051单片机的CPU在每一个机器周期顺序检查每一个中断源,并按优先级处理所有被激活
了的中断请求。如果没有被下列条件所阻止,将响应激活了的最高级中断请求。
①CPU当前正在响应同级或更高级中断。
②当前正在执行的那条指令尚未执行完。
counter=0; //计数5毫秒的个数
TR0=1; //启动定时器0
IE=0x82; //允许定时器0中断
while(1);
}
void time0_int(void) interrupt 1 //中断服务函数,每五毫秒中断一次
{
TH0=0xCB;TL0=0x1D; //重装定时器0的时间常数(5ms,4MHZ)
Keil C51对中断的处理是靠中断服务函数来完成的。有关中断函数构成和更多内容,请参
考3.4.3节的有关内容。
由于8051单片机有5种中断源,各中断源的中断请求标志分别IE0、TF0、IEl、TFl以及
RI/TI。在中断源满足中断请求的条件下,各标志自动置1,以向CPU请求中断。如果某一
中断源提出中断请求后,CPU不能立即响应,只要该中断请求标志不被软件人为清除,中
级;PT2=0,设定为低优先级。
Ø PS:串行I/O中断优先级控制位。PS=1,设定为高优先级;PS=0,设定为低优先级。
Ø PTl:定时器/计数器1中断优先级控制位。PT1=1,设定为高优先级;PT1=0,设定为低
优先级。
Ø PXl:外部中断1中断优先级控制位。PX1=1,设定为高优先级;PX2=0,设定为低优先级
③正在操作IE、IP中断控制寄存器或执行RETI指令。
在正常的情况下,从中断请求信号有效开始,到中断得到响应,通常需要3个机器周期到8
个机器周期。中断得到响应后,自动清除中断请求标志(对串行I/O端口的中断标志,要
用软件清除),将断点即程序计数器PC之值压入堆栈以备恢复时用,然后把相应的中断入
口地址装入PC,使程序转入到相应的中断服务程序中去执行。
断请求的状态就将一直保持,直到CPU响应了中断为止。但是对串行口中断,即使CPU响应
了中断,其中断标志RI/TI也不会自动清零,而必须在中断服务程序中设置清除RI/TI的指
令后,才会再一次地提出中断请求。
4中断实例
使用AT89C2051单片机,设单片机晶振频率为4MHz,编制一段用定时器0定时的程序,使
P1.0端口线上输出周期为2秒的方波脉冲,驱动接在该引脚上的发光二极管重复地亮一秒
钟,停一秒钟。
#include
unsigned char data counter; //计数5毫秒的个数
main()
{
TMOD=0x00; //定时器0为方式0
IP=0x02; //定时器中断0为高优先级
TH0=0xCB;TL0=0x1D; //定时器0的时间常数(5ms,4MHZ)
同时使P1.0引脚反相。
中断系统结构框图
2中断系统的控制寄存器
中断系统有两个控制寄存器(IE和IP),它们分别用来设定各个中断源的打开/关闭和中
断优先级。此外,在TCON中另有4位用于选择引起外部中断的条件并作为标志位。
(1)中断允许寄存器IE
IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H-AFH。IE用
断。
(2)中断优先级寄存器IP
IP在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别是B8H一BFH。
MCS-51单片机的中断分为两个优先级,IP用来设定各个中断源属于两级中断中的ห้องสมุดไป่ตู้一级,
其基本格式如下:
上传的图片
抱歉,您所在的组无权下载附件,请注册或登陆
Ø×:无效位。
Ø PT2:对具有定时器2的单片机,该位为定时器2的优先级控制位。PT2=1,设定为高优先
5.3.1中断系统
MCS-51单片机提供了5个固定的可屏蔽中断源,3个在片内,2个在片外,它们在程序存储
器中各有固定的中断入口地址,由此进入中断服务程序。5个中断源的符号、名称及产生
的条件如下。
Ø INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。
Ø INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
Ø ETl;定时器/计数器T1中断允许位。ETl=1,允许T1中断;ETl=0,禁止T1中断。
Ø EXl:外部中断l中断允许位。EXl=1,允许外部中断1中断;EXl=0,禁止外部中断1中
断。
Ø ET0:定时器/计数器T0中断允许位。ET0=1,允许T0中断;ET0=0,禁止TO中断。
Ø EX0:外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中
。
Ø PT0:定时器/计数器0中断优先级控制位。PT0=1,设定为高优先级;PT0=0,设定为低
优先级。
Ø PX0:外部中断0中断优先级控制位。PX0=1,设定为高优先级;PX0=0,设定为低优先级
。
在MCS-51单片机系列中,高级中断能够打断低级中断以形成中断嵌套,但同级中断之间,
或低级对高级中断则不能形成中断嵌套。若几个同级中断同时向CPU请求中断响应,则CPU
Ø T0:定时器/计数器0中断,由T0计数溢出引起。
Ø T1:定时器/计数器l中断,由T1计数溢出引起。
Ø TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。
中断源有两级中断优先级,可形成中断嵌套。两个特殊功能寄存器用于中断控制和条件设
置。整个中断系统的结构框图如图所示。
上传的图片
抱歉,您所在的组无权下载附件,请注册或登陆