51单片机中断系统

本文深入探讨了单片机中断的概念,包括中断的发生、中断优先级和中断嵌套。以8051单片机为例,详细介绍了中断系统的5个中断源和中断响应条件,并给出外部中断0的初始化和中断服务程序设计。通过实例展示了如何使用外部中断0控制LED和蜂鸣器,强调了中断使能和中断返回的过程。
摘要由CSDN通过智能技术生成

本讲任务:

      了解中断概念,以外部中断为例讲解中断程序的编写方法。

中断的概念:

      单片机处理某一事件A时,发生了另一事件B请求(中断求);单片机暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待单片机将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。

引起单片机中断的根源或原因: 

      中断源向单片机提出中断请求,中断发生的时刻不能事先确定。

中断优先级:      

      单片机的中断系统一般允许多个中断源,当几个中断源同时向单片机请求中断,要求为它服务的时候,这就存在单片机优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。单片机总是先响应优先级别最高的中断请求。

中断嵌套:     

      当单片机正在处理一个中断请求源的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。单片机暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。

中断优先级的三条原则:

      1:单片机同时接收到几个中断时,首先响应优先级别最高的中断请求。

      2:正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。

      3:正在进行的低优先级中断服务,能被高优先级中断请求所中断。

 中断系统相关寄存器:

 

 

 

中断源:

      8051的中断系统有5个中断源 ,2个优先级。

中断响应条件:

      中断源有中断请求;

      此中断源的中断允许位为1;

      开中断(即EA=1)。

      以上三条同时满足时,CPU才有可能响应中断。

一次中断过程的完整步骤:

      1、中断请求:中断事件一旦发生,中断源就提交中断请求(将中断标志位置1),欲请求单片机暂时放下目前的工作转向为该中断作专项服务。

      2、中断使能:虽然中断源提交了中断请求,但是,能否得到单片机的响应,还要取决于该中断请求能否通过若干关卡送达单片机(中断使能位等于1,关卡放行),这些关卡有以下两类:此中断源的中断允许位;全局中断允许位。

      3、中断响应:如果一路放行,则单片机响应该中断请求,记录断点,跳转到中断服务程序。对于外部中断和定时器中断,中断响应时中断标志位会被硬件自动清零。

      4、中断处理:对中断源进行有针对性的服务。

      5、中断返回:返回到主程序断点处,继续执行主程序。

      1、3、5由硬件自动完成。2、4是用户编程完成。中断响应条件为1、2同时满足。

中断服务程序设计:

例程:

/***********************外部中断0**************************     

*单片机型号:STC89C52RC

*开发环境:KEIL 

*功能:用外部中断的方式实现:按下S13,S14,S15,S16让D4和蜂鸣器点亮/发声或熄灭/不发声。   

*************************************************************/

#include<reg52.h>

sbit P1_0=P1^0;

sbit BEEP=P2^3;

void int0_init(void)

{

 IT0=1;

 EX0=1;                          //打开外部中断0  

 EA=1; 

}

void main()

{

 int0_init();

 P3=0x0f;          

 while(1);

}

void int0() interrupt 0

{

 P1_0=~P1_0;

 BEEP=~BEEP;

}

最后,求求看到的此文的小伙伴点赞关注支持一下下哦。毕竟,码字不容易哦,您的支持是我最大的动力呀!!!呜呜呜~~~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式硬件与代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值