搜档网
当前位置:搜档网 › 51单片机中断系统

51单片机中断系统

51单片机中断系统
51单片机中断系统

标题:中断系统

教学目的与要求:

1.理解中断的基本概念

2.掌握89C51中断源

3.掌握中断控制寄存TCON、SCON、IE、IE、IP的设置方法

4.理解中断处理过程及中断优先控制和中断嵌套

5.中断系统的应用

授课时数:4

教学重点:中断控制寄存TCON、SCON、IE、IE、IP的设置方法

教学内容及过程:

一、80C51中断系统

(一)中断概述

⒈什么叫中断?

举例:同学正在教室写作业,忽然被人叫出去,回来后,继续写作业。

引入计算机中断的概念。

CPU暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序, 叫做中断。

其运行过程如图5-1所示。

2.为什么要设置中断?

⑴提高CPU工作效率

⑵具有实时处理功能

在实时控制中,现场的各种参数、信息均随时间和现场而变化。

这些外界变量可根据要求随时向CPU发出中断申请,请求CPU及

时处理中断请求。如中断条件满足,CPU马上就会响应,进行相应

的处理,从而实现实时处理。

⑶具有故障处理功能

针对难以预料的情况或故障,如掉电、存储出错、运算溢出等,可通过中断系统由故障源向CPU发出中断请求,再由CPU转到相应的故障处理程序进行处理。

⑷实现分时操作

中断可以解决快速的CPU与慢速的外设之间的矛盾,使CPU和外设同时工作。CPU 在启动外设工作后继续执行主程序,

同时外设也在工作。每当外设做完一件事就发出中断申请,请

求CPU中断它正在执行的程序,转去执行中断服务程序(一般

情况是处理输入/输出数据),中断处理完之后,CPU恢复执行

主程序,外设也继续工作。这样,CPU可启动多个外设同时工

作,大大地提高了CPU的效率。

3、中断控制(两级管理)

1)、中断屏蔽

在中断源与CPU之间有一级控制,类似开关,其中第一级为一个总开关,

第二级为五个分开关,由IE控制。

EA ——总控制位

ES ——串口控制位ET1—— T1中断控制位EX1—— /INT1控制位ET0—— T0中断控制位EX0—— /INT0控制位若为“1”,允许(开关接通)若为“0”,不允许(开关断开)例如,SETB EA

CLR IE.7

2——、中断优先级

为什么要有中断优先级?

CPU同一时间只能响应一个中断请求。

若同时来了两个或两个以上中断请求,就必须有先有后。为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。

以上各位与IE的低五位相对应,为“1”时为高级。初始化编程时,由软件确定。

例如,SETB PT0 或SETB IP1

CLR PX0等。

同一级中的5个中断源的优先顺序是:

中断优先原则:(概括为四句话)

1、低级不打断高级

2、高级不睬低级

3、同级不能打断

4、同级、同时中断,事先约定。

二、中断源和中断控制寄存器

⒈中断源

中断源是指能发出中断请求,引起中断的装置或事件。

⑵INT1:外部中断1,中断请求信号由P3.3输入。

⑶T0:定时/计数器0溢出中断,对外部脉冲计数由P3.4输入。

TF0:定时器T0溢出中断请求。⑷T1:定时/计数器1溢出中断,对外部脉冲计数由P3.5输入。

TF1:定时器1溢出中断请求。当定时器1产生溢出时,定时器1中断请求标志位(TCON.7)置位(由硬件自动执行),请求中断处理。

⑸串行中断:包括串行接收中断RI和串行发送中断TI。

INT0

INT1

硬件查询

图5-2MCS-51中断系统内部结构示意图

2.中断控制寄存器

80C51单片机中涉及中断控制的有3个方面4个特殊功能寄存器:

①中断请求:定时和外中断控制寄存器TCON;,串行控制寄存器SCON;

②中断允许控制寄存器IE;

③中断优先级控制寄存器IP。

(1)中断请求控制寄存器

INT0、INT1、T0、T1中断请求标志放在TCON中,串行中断请求标志放在SCON中。

①TCON.7 TF1:定时器1的溢出中断标志。T1被启动计数后,从初值做加1计数,计满溢出后由硬件置位TF1,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清0。也可由软件查询该标志,并由软件清0。

②TCON.5 TF0:定时器0溢出中断标志。其操作功能与TF1相同。

③TCON.3 IE1:中断标志。IE1 = 1,外部中断1向CPU申请中断。

④TCON.2 IT1:中断触发方式控制位。当IT1 = 0时,外部中断1控制为电平触发方式。在这种方式下,CPU在每个机器周期的S5P2期间对(P3.3)引脚采样,若为低电平,则认为有中断申请,随即使IE1标志置位;若为高电平,则认为无中断申请,或中断申请已撤除,随即使IE1标志复位。在电平触发方式中,CPU响应中断后不能由硬件自动清除IE1标志,也不能由软件清除IE1标志,所以,在中断返回之前必须撤消引脚上的低电平,否则将再次中断导致出错。

⑤TCON.1 IE0:中断标志。其操作功能与IE1相同。

⑥TCON.0 IT0:中断触发方式控制位。其操作功能与IT1相同。

SCON是串行口控制寄存器,其低两位TI和RI锁存串行口的发送中断标志和接收中断标志。

①SCON.1 TI:串行发送中断标志。CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将使TI置位。但CPU响应中断时并不清除TI,必须由软件清除。

②SCON.0 RI:串行接收中断标志。在串行口允许接收时,每接收完一个串行帧,硬件将使RI置位。同样,CPU在响应中断时不会清除RI,必须由软件清除。

8051系统复位后,TCON和SCON均清0,应用时要注意各位的初始状态。

(3) IE寄存器中断的开放和禁止标志

MCS-51系列单片机的5个中断源都是可屏蔽中断,其中断系统内部设有一个专用寄存器IE,用于控制CPU对各中断源的开放或屏蔽。IE寄存器各位定义如下:

①EA ——CPU中断允许总控制位

EA=1,CPU开中;

EA=0,CPU关中,且屏蔽所有5个中断源。

②EX0 ——外中断INT0中断允许控制位

EX0=1,INT0开中;EX0=0,INT0关中。

③EX1 ——外中断INT1中断允许控制位

EX1=1,INT1开中;EX1=0,INT1关中。

④ET0 ——定时/计数器T0中断允许控制位

ET0=1,T0开中;ET0=0,T0关中。

⑤ET1 ——定时/计数器T1中断允许控制位

ET1=1,T1开中;ET1=0,T1关中。

⑥ES ——串行口中断(包括串发、串收)允许控制位

ES=1,串行口开中;ES=0,串行口关中。

说明: 80C51对中断实行两级控制,总控制位是EA,每一中断源还有各自的控制位。首先要EA=1,其次还要自身的控制位置“1”。

(3)中断优先级寄存器IP

A T89C51的中断源优先级是由中断优先级寄存器IP进行控制的。五个中断源总共可分为二个优先级,每一个中断源都可以通过IP寄存器中的相应位设置成高级中断或低级中断,因此,CPU对所有中断请求只能实现两级中断嵌套。IP寄存器各位的定义如图所示。

IP ——PS PT1 PX1 PT0 PX0

位地址——BCH BBH BAH B9H B8H

①IP.4 PS:串行口中断优先控制位。PS = 1,设定串行口为高优先级中断;PS = 0,设定串行口为低优先级中断。

②IP.3 PT1:定时器T1中断优先控制位。PT1 = 1,设定定时器T1中断为高优先级中断;PT1 = 0,设定定时器T1中断为低优先级中断。

③IP.2 PX1:外部中断1中断优先控制位。PX1 = 1,设定外部中断1为高优先级中断;PX1 = 0,设定外部中断1为低优先级中断。

④IP.1 PT0:定时器T0中断优先控制位。PT0 = 1,设定定时器T0中断为高优先级中断;PT0 = 0,设定定时器T0中断为低优先级中断。

⑤IP.0 PX0:外部中断0中断优先控制位。PX0 = 1,设定外部中断0为高优先级中断;PX0 = 0,设定外部中断0为低优先级中断。

当系统复位后,IP低5位全部清0,所有中断源均设定为低优先级中断。

如果几个同一优先级的中断源同时向CPU申请中断,CPU 通过内部硬件查询逻辑,按自然优先级顺序确定先响应哪个中断请求。自然优先级由硬件形成,排列如下:

中断源同级自然优先级

外部中断0 最高级

定时器T0中断

外部中断1

定时器T1中断

串行口中断最低级

三、中断处理过程

中断处理过程大致可分为四步:中断请求、中断响应、中断服务、中断返回

⒈中断请求

中断源发出中断请求信号,相应的中断请求标志位(在中断允许控制寄存器IE中)置“1”。

⒉ 中断响应

CPU 查询(检测)到某中断标志为“1”,在满足中断响应条件下,响应中断。 ⑴ 中断响应条件: ① 该中断已经“开中”;

② CPU 此时没有响应同级或更高级的中断; ③ 当前正处于所执行指令的最后一个机器周期;

④ 正在执行的指令不是RETI 或者是访向IE 、IP 的指令,否则必须再另外执行一条指令后才能响应。 ⑵ 中断响应操作

CPU 响应中断后,进行下列操作: ① 保护断点地址; ② 撤除该中断源的中断请求标志;

③ 关闭同级中断;

④ 将相应中断的入口地址送入PC ;

80C51五个中断入口地址: INT0:0003H ;

T0:000BH ; INT1:0013H

T1:001BH ;

串行口:0023H ⒊ 执行中断服务程序

中断服务程序应包含以下几部分: ⑴ 保护现场

⑵ 执行中断服务程序主体,完成相应操作 ⑶ 恢复现场 ⒋ 中断返回

在中断服务程序最后,必须安排一条中断返回指令RETI ,当CPU 执行RETI 指令后,自动完成下列操作: ⑴ 恢复断点地址。

⑵ 开放同级中断,以便允许同级中断源请求中断。

程序

执行

程序

四、中断响应等待时间

若排除CPU正在响应同级或更高级的中断情况,中断响应等待时间为:3~8个机器周期

五、中断请求的撤除

中断源发出中断请求,相应中断请求标志置“1”。CPU响应中断后,必须清除中断请求“1”标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。

⑴对定时/计数器T0、T1中断,外中断边沿触发方式,CPU响应中断时就用硬件自动清除了相应的中断请求标志。

⑵对外中断电平触发方式,需要采取软硬结合的方法消除后果。

⑶对串行口中断,用户应在串行中断服务程序中用软件清除TI或RI。

六、中断优先控制和中断嵌套

⒈中断优先控制

80C51中断优先控制首先根据中断优先级,此外还规定了同一中断优先级之间的中断优先权。其从高到低的顺序为:INT0、INT1、T0、T1、串行口。

中断优先级是可编程的,而中断优先权是固定的,不能设置,仅用于同级中断源同时请求中断时的优先次序。

80C51中断优先控制的基本原则:

①高优先级中断可以中断正在响应的低优先级中断,反之则不能。

②同优先级中断不能互相中断。

③同一中断优先级中,若有多个中断源同时请求中断,CPU将先响应优先权高的中断,后响应优先权低的中断。

2.中断嵌套

当CPU正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,CPU可以“中断”正在执行的低优先级中断,转而响应更高一级的中断,这就是中断嵌套。中断嵌套只能高优先级“中断”低优先级,低优先级不能“中断”高优先级,同一优先

级也不能相互“中断”。

中断嵌套结构类似与调用子程序嵌套,不同的是:

①子程序嵌套是在程序中事先按排好的;中断嵌套是随机发生的。

②子程序嵌套无次序限制,中断嵌套只允许高优先级“中断”低优先

级。

七、中断系统的应用

⒈中断初始化

⑴设置堆栈指针SP

⑵定义中断优先级

⑶定义外中断触发方式

⑷开放中断

⑸安排好等待中断或中断发生前主程序应完成的操作内容。

⒉中断服务主程序

中断服务子程序内容要求:

⑴在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。

⑵根据需要保护现场。

⑶中断源请求中断服务要求的操作。

⑷恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。

⑸中断返回,最后一条指令必须是RETI。

八、课题5:应用中断的红绿灯设计

思考题:

1、MCS-51单片机中断系统有几个中断源?分别是什么?事先约定的优先顺序是怎样的

2、如何进行中断允许控制?如何进行中断优先级控制?

3、中断优先的规则是什么?

课后小记:

51单片机中断系统详解

的定时器中断后便认为是1s,这样便可精确控制定时时间啦。要计50000个数时,TH0和TL0中应该装入的总数是65536-50000=15536.,把15536对256求模:15536/256=60装入TH0中,把15536对256求余:15536/256=176装入TL0中。 以上就是定时器初值的计算法,总结后得出如下结论:当用定时器的方式1时,设机器周期为T CY,定时器产生一次中断的时间为t,那么需要计数的个数为N=t/T CY ,装入THX和TLX中的数分别为: THX=(65536-N)/256 , TLX=(65536-N)%256 中断服务程序的写法 void 函数名()interrupt 中断号using 工作组 { 中断服务程序内容 } 在写单片机的定时器程序时,在程序开始处需要对定时器及中断寄存器做初始化设置,通常定时器初始化过程如下: (1)对TMOD赋值,以确定T0和 T1的工作方式。 (2)计算初值,并将初值写入TH0、TL0或TH1、TL1。 (3)中断方式时,则对IE赋值,开放中断。 (4)使TR0和TR1置位,启动定时器/计数器定时或计数。 例:利用定时器0工作方式1,实现一个发光管以1s亮灭闪烁。 程序代码如下: #include #define uchar unsigned char #define uint unsigned int sbit led1=P1^0; uchar num; void main() { TMOD=0x01; //设置定时器0位工作模式1(M1,M0位0,1) TH0=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872 TL0=(65536-45872)%256; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 while(1) { if(num==20) //如果到了20次,说明1秒时间 { led1=~led1; //让发光管状态取反 num=0; } } } void T0_time()interrupt 1

51单片机中断系统编程

51单片机中断系统编程 51单片机中断系统编程 上传的图片 抱歉,您所在的组无权下载附件,请注册或登陆中断是指如下过程(如下图所示):CPU 与外设同时工作,CPU执行主程序,外设做准备工作。当外设准备好时向CPU发中断请求信 号,若条件满足,则CPU终止主程序的执行,转去执行中断服务程序。在中断服务程序中 CPU与外设交换信息,待中断服务程序执行完后,CPU再返回刚才终止的主程序继续执行。 5.3.1 中断系统 MCS-51单片机提供了5个固定的可屏蔽中断源,3个在片内,2个在片外,它们在程序存储 器中各有固定的中断入口地址,由此进入中断服务程序。5个中断源的符号、名称及产生 的条件如下。 ? INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 ? INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 ? T0:定时器/计数器0中断,由T0计数溢出引起。 ? T1:定时器/计数器l中断,由T1计数溢出引起。 ? TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。 中断源有两级中断优先级,可形成中断嵌套。两个特殊功能寄存器用于中断控制和条件设 置。整个中断系统的结构框图如图所示。 上传的图片 抱歉,您所在的组无权下载附件,请注册或登陆 中断系统结构框图 2 中断系统的控制寄存器 中断系统有两个控制寄存器(IE和IP),它们分别用来设定各个中断源的打开/关闭和中

断优先级。此外,在TCON中另有4位用于选择引起外部中断的条件并作为标志位。 (1)中断允许寄存器IE IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H-AFH。IE 用 来打开或关断各中断源的中断请求,基本格式如下: 上传的图片 抱歉,您所在的组无权下载附件,请注册或登陆 ? EA:全局中断允许位。EA=0,禁止一切中断;EA=1,打开全局中断控制,此时,由各 个中断控制位确定相应中断的打开或关闭。 ? ×:无效位。 ? ES:串行I/O中断允许位。ES=1,允许串行I/O中断;ES=0,禁止串行I/O中断。 ? 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中 断。 (2)中断优先级寄存器IP IP在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别是B8H一BFH。 MCS-51单片机的中断分为两个优先级,IP用来设定各个中断源属于两级中断中的哪一级, 其基本格式如下: 上传的图片

51单片机中断系统程序实例

51单片机中断系统程序实例(STC89C52RC) 51单片机有了中断,在程序设计中就可以做到,在做某件事的过程中,停下来先去响应中断,做别的事情,做好别的事情再继续原来的事情。中断优先级是可以给要做的事情排序。 单片机的学习不难,只要掌握学习方法,学起来并不难。什么是好的学习方法呢,一定要掌握二个要点: 1. 要知道寄存器的英文全拼,比如IE = interrupt中断 不知道全拼,要去猜,去查。这样就可以理解为什么是这个名称,理解了以后就不用记忆了。 2. 每个知识点要有形像的出处 比如看到TF0,脑子里马上要形像地定位到TCON寄存器的某位 看到ET0, 马上要形像地定位到IE寄存器的第2位 https://www.sodocs.net/doc/248271289.html,/tuenhai/独家揭秘:形像是记忆的最大技巧。当人眼看到某个图时,是把视觉信号转化成电信号,再转化成人能理解的形像。当我们回忆形像时,就是在重新检索原先那个视觉信号,并放大。在学习过程中,不断练习检索、放大信号,我们的学习能力就会越来越强。 写程序代码时,也要把尽量把每行代码形像化。 51单片机内中断源 8051有五个中断源,有两个优先级。与中断系统有关的特殊功能寄存器有IE(中断允许寄存器)、IP(中断优先级控制寄存器)、中断源控制寄存器(如TCON、SCON的有关位)。51单片机的中断系统结构如下图(注意,IF0应为TF0):

8052有6个中断源,它比8051多一个定时器/计数器T2中断源。 8051五个中断源分别是: (1)51单片机外部中断源 8051有两个外部中断源,分别是INT0和INT1,分别从P3.2和P3.3两个引脚引入中断请求信号,两个中断源的中断触发允许由TCON的低4位控制,TCON的高4位控制运行和溢出标志。 INT0也就是Interrupt 0。在这里应该看一下你的51单片机开发板的电路原理图。离开形像的记忆是没有意义的。读到上面这句,你应该回忆起原理图上的连接。任何记忆都转化为形像,这是学习的根本原理,我们通过学习单片机要学会这种学习方法,会让你一辈子受益无穷。 TCON的结构如下图: (a)定时器T0的运行控制位TR0

51单片机中断总结

51单片机中断总结: 1. 查询优先级为固定的(外部中断0>定时器0>外部中断1>定时器1>串行中断)。 2. 执行优先级可以通过IP寄存器进行设置(高/低)。 3. CPU同时收到多个中断请求时,首先响应优先级较高者,然后相应优先级较低者;如果 优先级相同,则按照查询优先级顺序依次响应。 4. 正在执行的中断服务,不能被同级或更低级的中断请求打断,但会被更高级的中断请求 打断。推论(1)高优先级的中断不能被任何其它中断所打断(2)低优先级的中断只能在没有任何中断服务运行时得到响应。 5. 对于定时器和外部中断,在进入中断服务后,其中断标志位会自动清零;对于串行中断,由于有两个中断源,需要手动查询并清零RI或/和TI。 if (RI) { // processing RI = 0; } if (TI) { // processing TI = 0; } 6. 如果是使用汇编写中断服务,需要保护累加器、状态寄存器、寄存器组等 8051 Tutorial: Interrupts https://www.sodocs.net/doc/248271289.html,/tutint.php As the name implies, an interrupt is some event which interrupts normal program execution. As stated earlier, program flow is always sequential, being altered only by those instructions which expressly cause program flow to deviate in some way. However, interrupts give us a mechanism to "put on hold" the normal program flow, execute a subroutine, and then resume normal program flow as if we had never left it. This subroutine, called an interrupt handler, is only executed when a certain event (interrupt) occurs. The event may be one of the timers "overflowing," receiving a character via the serial port, transmitting a character via the serial

51单片机中断详解

一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求C PU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待C PU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断二、中断源 在51单片机中有5个中断源 中断号优先级中断源中断入口地址 0 1(最高)外部中断0 0003H 1 2 定时器0 000BH 2 3 外部中断1 0013H 3 4 定时器1 0018H 4 5 串口总段0023H 三、中断寄存器 单片机有10个寄存器主要与中断程序的书写控制有关 1.中断允许控制寄存器IE 2.定时器控制寄存器TC ON 3.串口控制寄存器SCON 4.中断优先控制寄存器IP 5.定时器工作方式控制寄存器TMOD 6.定时器初值赋予寄存器(TH0/TH1,TL0/TL1)

四、寄存器功能与赋值说明 注:在用到中断时,必须要开总中断EA,即EA=1。//开总中断 1.中断允许控制寄存器IE EX0(EX1):外部中断允许控制位 EX0=1 外部中断0开关闭合//开外部0中断 EX0=0 外部中断0开关断开 ET0(ET1):定时中断允许控制位 ET0=1 定时器中断0开关闭合//开内部中断0 ET0=0 定时器中断0开关断开 ES: 串口中断允许控制位 ES=1 串口中断开关闭合//开串口中断 ES=0 串口中断开关断开 2.定时器控制寄存器TCON //控制外部中断和定时器中断 外部中断: IE0(IE1):外部中断请求标志位 当INT0(INT1)引脚出现有效的请求信号,此位由单片机自动置1,cpu开始响应,处理终端,而当入

51单片机汇编语言教程:18课单片机中断系统

51单片机汇编语言教程:第18课-单片机中断系统

MCS-51单片机中断系统的结构: 5个中断源的符号、名称及产生的条件如下。 INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。 T1:定时器/计数器l中断,由T1计满回零引起。 TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。整个中断系统的结构框图见下图一所示。

<51单片机中断系统结构> 如图所示,由与中断有关的特殊功能寄存器、中断入口、次序查询逻辑电路等组成,包括5个中断请求源,4个用于中断控制的寄存器IE、IP、ECON和SCON来控制中断类弄、中断的开、关和各种中断源的优先级确定。 中断请求源: (1)外部中断请求源:即外中断0和1,经由外部管脚引入的,在单片机上有两个管脚,名称为INT0、INT1,也就是P3.2、P3.3这两个管脚。在内部的TCON中有四位是与外中断有关的。IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。这两种方式的差异将在以后再谈。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。(2)内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。TI、RI:串行口发送、接收中断,在串行口中再讲解。2、中断允许寄存器IE在MCS-51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。见下表EAX 其中EA是总开关,如果它等于0,则所有中断都不允许。ES-串行口中断允许ET1-定时器1中断允许EX1-外中断1中断允许。ET0-定时器0中断允许EX0-外中断0中断允许。如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE能是EAX 即8CH,当然,我们也能用位操作指令SETB EA SETB ET1SETB EX1 来实现它。3、五个中断源的自然优先级与中断服务入口地址外中断0:0003H定时器0:000BH 外中断1:0013H定时器1:001BH串行口:0023H它们的自然优先级由高到低排列。写到这里,大家应当明白,为什么前面有一些程序一始我们这样写: ORG0000HLJMP START ORG0030H START:。 这样写的目的,就是为了让出中断源所占用的向量地址。当然,在程序中没用中断时,直接从0000H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。优先级:单片机采用了自然优先级和人工设置高、低优先级的策略,即能由程序员设定那些中断是高优先级、

51单片机中断详解

一.中断的概念 1.中断发生 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理 2.中断响应和中断服务 CPU暂时中断当前的工作,转去处理事件B 3.中断返回 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A 这一过程称为中断 二.中断过程示意图 三.MCS51中断系统的结构

MCS51的中断系统有5个中断源(8052有6个),2个优先级,可实现二级中断嵌套 四.中断寄存器 单片机有10个寄存器主要与中断程序的书写控制有关 1.中断允许控制寄存器IE 2.定时器控制寄存器TCON 3.串口控制寄存器SCON 4.中断优先控制寄存器IP 5.定时器工作方式控制寄存器TMOD 6.定时器初值赋予寄存器(TH0/TH1,TL0/TL1) 五.部分寄存器详解

1.中断允许控制寄存器(IE) EX0:外部中断0允许位; ET0:定时/计数器T0中断允许位; EX1:外部中断1允许位; ET1:定时/计数器T1中断允许位; ES :串行口中断允许位; EA :CPU中断允许(总允许)位。 2.定时器/计数器控制寄存器控制寄存器(TCON) IT0:外部中断0触发方式控制位 当IT0=0时,为电平触发方式(低电平有效) 当IT0=1时,为边沿触发方式(下降沿有效) IE0:外部中断0中断请求标志位 IT1:外部中断1触发方式控制位 IE1:外部中断1中断请求标志位

TF0:定时/计数器T0溢出中断请求标志位 TF1:定时/计数器T1溢出中断请求标志位 3.串行口控制寄存器(SCON) RI:串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。注意,RI必须由软件清除。 TI:串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能自动清除TI,TI必须由软件清除。 4.中断优先级控制寄存器(IP) PX0:外部中断0优先级设定位 PT0:定时/计数器T0优先级设定位 PX1:外部中断0优先级设定位 PT1:定时/计数器T1优先级设定位

51单片机定时、中断系统

51单片机定时、中断系统51单片机中断级别 中断源默认中断级别序号(C语言用) INT0---外部中断0 最高0 T0---定时器/计数器0中断第2 1 INT1---外部中断1 第3 2 T1----定时器/计数器1中断第4 3 TX/RX---串行口中断第5 4 T2---定时器/计数器2中断最低 5 中断允许寄存器IE 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 符号位EA ------- ET2 ES ET1 EX1 ET0 EX0 EA---全局中允许位。 EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。EA=0,关闭全部中断。 -------,无效位。 ET2---定时器/计数器2中断允许位。EA总中断开关,置1为开; ET2=1,打开T2中断。EX0为外部中断0(INT0)开关,…… ET2=0,关闭T2中断。ET0为定时器/计数器0(T0)开关,…… ES---串行口中断允许位。EX1为外部中断1(INT1)开关,…… ES=1,打开串行口中断。ET1为定时器/计数器1(T1)开关,…… ES=0,关闭串行口中断。ES为串行口(TX/RX)中断开关,…… ET1---定时器/计数器1中断允许位。ET2为定时器/计数器2(T2)开关,…… ET1=1,打开T1中断。 ET1=0,关闭T1中断。 EX1---外部中断1中断允许位。 EX1=1,打开外部中断1中断。 EX1=0,关闭外部中断1中断。 ET0---定时器/计数器0中断允许位。 ET0=1,打开T0中断。 ET0=0,关闭T0中断。 EX0---外部中断0中断允许位。 EX0=1,打开外部中断0中断。 EX0=0,关闭外部中断0中断。 中断优先级寄存器IP 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 位地址--- --- --- PS PT1 PX1 PT0 PX0 -------,无效位。

51单片机中断系统详解(定时器、计数器)

51单片机中断系统 51单片机中断级别 中断源默认中断级别序号(C语言用) INT0---外部中断0 最高0 T0---定时器/计数器0中断第2 1 INT1---外部中断1 第3 2 T1----定时器/计数器1中断第4 3 TX/RX---串行口中断第5 4 T2---定时器/计数器2中断最低 5 中断允许寄存器IE 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 符号位EA ------- ET2 ES ET1 EX1 ET0 EX0 EA---全局中允许位。 EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。EA=0,关闭全部中断。 -------,无效位。 ET2---定时器/计数器2中断允许位。EA总中断开关,置1为开; ET2=1,打开T2中断。EX0为外部中断0(INT0)开关,…… ET2=0,关闭T2中断。ET0为定时器/计数器0(T0)开关,……ES---串行口中断允许位。EX1为外部中断1(INT1)开关,…… ES=1,打开串行口中断。ET1为定时器/计数器1(T1)开关,…… ES=0,关闭串行口中断。ES为串行口(TX/RX)中断开关,…… ET1---定时器/计数器1中断允许位。ET2为定时器/计数器2(T2)开关,…… ET1=1,打开T1中断。 ET1=0,关闭T1中断。 EX1---外部中断1中断允许位。 EX1=1,打开外部中断1中断。 EX1=0,关闭外部中断1中断。 ET0---定时器/计数器0中断允许位。 ET0=1,打开T0中断。 ET0=0,关闭T0中断。 EX0---外部中断0中断允许位。 EX0=1,打开外部中断0中断。 EX0=0,关闭外部中断0中断。 中断优先级寄存器IP 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 位地址--- --- --- PS PT1 PX1 PT0 PX0 -------,无效位。 PS---串行口中断优先级控制位。

51单片机中断程序大全

//实例42:用定时器T0查询方式P2口8位控制LED闪烁 #include<> // 包含51单片机寄存器定义的头文件 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 } } //实例43:用定时器T1查询方式控制单片机发出1KHz音频 #include<> // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为引脚 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值

51单片机外部中断详解

一.外部中断相关寄存器 1.定时器/计数器控制寄存器控制寄存器(TCON)? ? IT0:外部中断0触发方式控制位? 当IT0=0时,为电平触发方式(低电平有效)? 当IT0=1时,为边沿触发方式(下降沿有效)? IT1:外部中断1触发方式控制位? 当IT1=0时,为电平触发方式(低电平有效)? 当IT1=1时,为边沿触发方式(下降沿有效) 2.中断允许控制寄存器(IE)? ? EX0:外部中断0允许位;? EX1:外部中断1允许位;? EA :CPU中断允许(总允许)位。 二.外部中断的处理过程 1、设置中断触发方式,即IT0=1或0,IT1=1或0?

2、开对应的外部中断,即EX0=1或EX1=1;? 3、开总中断,即EA=1;? 4、等待外部设备产生中断请求,即通过,口连接外部设备产生中断? 5、中断响应,执行中断服务函数 三.程序编写 要求:通过两位按键连接外部中断0和1,设定外部中断0为下降沿触发方式,外部中断1为低电平触发方式,按键产生中断使数字加减,用一位共阳极数码管来显示数值。? 目的:感受外部中断对程序的影响,体会低电平触发和下降沿触发的区别。 #include<>#define uint unsigned int #define uchar unsigned char uchar code dat[]={0xc0, 0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uint num; void main() { EA=1; //开总中断 IT0=1; //下降沿触发 IT1=0; //低电平触发 EX0=1; //外部中断0允许 EX1=1; //外部中断1允许 while(1) { P0=dat[num%10]; } } void plus() interrupt 0???? //外部中断0 { EX0=0;

相关主题