C51单片机外部中断(学习笔记3)

          上一节讲到,C51单片机存在5种中断源,分别依次为:INT0(外部中断0),INT1(外部中断1),T0(定时器0),T1(定时器1),RXD和TXD(串口中断)。这节讲解外部中断,完成LED亮灭的操控。

一、什么是中断

中断就是指CPU正在执行一项任务1,然后突然有紧急任务2,于是停止任务1,去执行紧急任务2,执行完紧急任务2,再回来继续执行任务1的过程。

再比如:你正在看电影,然后门铃响了,于是,你按下暂停播放,跑去开门,开完门回来继续看电影。这个过程叫中断。

中断跟硬件有关。可以说是硬件来让单片机中断。


二、原理图

在这里插入图片描述

从图中看,外部中断的引脚为 P3.2口的外部中断0(INT0)  和  P3.3口的外部中断1(INT1).

2.1、中断相关的特殊寄存器:

(1)中断允许控制寄存器(IE)--------控制各中断的开放和屏蔽

(2)定时器/计数器控制寄存器(TCON)-------定时器和外部中断的控制

(3)串行口控制寄存器(SCON)-------串行中断的控制

(4)中断优先级控制寄存器(IP)-------设置各中断的优先级


三、中断优先级

在默认下、优先级从高到低:INT0 > T0 > INT1 > T1 > 串行中断。(谁级别高,谁先执行)

1).高优先级的中断可以打断低优先级的中断。

2).正在响应的中断,不能被同级或者低级的中断打断。

3).同时发生几个中断,先响应优先级高的中断

         中断格式:void  变量名()  interrupt  中断号


               比如:  void   interruptINT0() interrupt  0

四、外部中断流程

      从图片的方框上看,我想使用外部中断,需要预先设置什么,以选择外部中断0为例子

        1)设置IT0=0(低电平触发)    或者      IT0=1(下降沿触发)

        2)设置IE0=0(解析:当IE0=1时,告诉CPU中断,CPU响应此中断请求时,IE0被硬件置0)

             (跟上一节  定时器IF0使用是一样的)

        3)设置EX0=1 (解析:当EX0=1,即打开外部中断开关)

        4)设置EA=1 (解析:打开总中断)

                连线时,需要把外部中断0即P3.2,用杜邦线与GND相连。

什么是低电平触发,什么是下降沿触发?

         本例子选择低电平触发即:设置IT0=0,当中断的时候,把原先LED=1,变为LED=0;中断结果,LED变为1.完成LED亮灭的操作。

五、代码如下

#include<reg51.h>

sbit LED =P0^4;

void main()
{
	IT0=0;  //中断触发方式为低电平触发
  //IE0=0;  //可省略
	EX0=1;  //打开外部中断0
	EA=1;    //打开中断总开关
	while(1)
	{
       LED=1;   //在没有中断发生时,LED关闭
	}
}
 
void interruptINT0() interrupt 0
{
	LED=0;//有中断发生时,LED亮起
}

               注意:连线时,需要把外部中断0即P3.2,用杜邦线与GND相连。 

你学会了吗!!!

 

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值