首页 > 其他分享 >51单片机的中断系统 && 外部中断

51单片机的中断系统 && 外部中断

时间:2022-11-12 11:24:08浏览次数:47  
标签:P3 中断 51 中断请求 单片机 TCON CPU 外部

51单片机的中断系统 && 外部中断

中断系统是为使CPU具有外界紧急事件的实时处理能力而设置的。

一、中断概念

对于单片机来说,中断是指CPU在处理某一事件A时,发生另外一事件B,请求CPU迅速取处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一完整过程被称为中断。

二、中断结构及相关的寄存器

51单片机开发板(主控芯片:STC89C52RC)提供8个中断请求源,分别是:

◼ 外部中断0(INT0)

◼ 外部中断1(INT1)

◼ 外部中断2(INT2)

◼ 外部中断3(INT3)

◼ 定时器0中断

◼ 定时器1中断

◼ 定时器2中断

◼ 串口(UART)中断

一般的51单片机都会拥有至少5个中断请求源,中断的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的中断资源,例如中断源个数不同、中断优先级个数不同等等

2-1 51单片机中断引脚以及中断控制

  • INT0对应的是P3^2口的附加功能,可由IT0(TCON^0)选择其为低电平有效,还是下降沿有效。

    当CPU检测到P3^2引脚上出现有效的中断信号时,中断标志位IE0(TCON^1)置1,向CPU申请中断。

  • INT1对应的是P3^3口的附加功能,可由IT1(TCON^2)选择其为低电平有效,还是下降沿有效。

    当CPU检测到P3^3引脚上出现有效的中断信号时,中断标志位IE1(TCON^3)置1,向CPU申请中断。

  • T0对应的是P3^4口的附加功能,TF0(TCON^5)是片内定时器/计数器T0溢出中断请求标志。

    当定时/计数器T0发生溢出时,TF0置为1,并向CPU申请中断。

  • T1对应的是P3^5口的附加功能,TF1(TCON^7)是片内定时器/计数器T1溢出中断请求标志。

    当定时/计数器T1发生溢出时,TF1置为1,并向CPU申请中断。

  • RXDTXD对应的是P3^0P3^1口的附加功能,RI(SCON^0)TI(SCON^1)是串行口中断请求标志位。

    当串行口接收完一帧串行数据时,RI置为1,向CPU申请中断;或当串行口发送完一帧串行数据时,TI置为1,向CPU申请中断。

2-2 中断相关的寄存器

中断允许控制寄存器IE

CPU对终端系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

EX0(IE^0):外部中断0允许位

ET0(IE^1):定时/计数器T0中断允许位

EX1(IE^2):外部中断1允许位

ET1(IE^3):定时/计数器T1中断允许位

ES(IE^4):串行口中断允许位

EA(IE^7):CPU中断允许位(即总允许位)

中断请求标志寄存器TCON

  • IT0(TCON^0),外部中断0触发方式控制位

    当IT0=0时,为电平触发方式

    当IT0=1时,为边沿触发方式(下降沿有效)

  • IE0(TCON^1),外部中断0中断请求标志位

  • IT1(TCON^2),外部中断1触发方式控制位

    当IT0=0时,为电平触发方式

    当IT0=1时,为边沿触发方式(下降沿有效)

  • IE1(TCON^3),外部中断1中断请求标志位

  • TF0(TCON^5),定时/计数器T0溢出中断请求标志位

  • TF1(TCON^7),定时/计数器T1溢出中断请求标志位

中断优先级(多个中断源需要)

中断号(中断函数需要)

中断响应条件

1.中断源有中断请求(触发标志位)

2.此中断源的中断允许位为1

3.CPU开中断(即总允许位EA为1)

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

中断服务函数

int function_name(形参列表) interrupt 中断号
{
	//函数实现的功能语句
	return 0;
}

三、外部中断实验

❤ 实验目的:使用外部中断0控制编号:D1的LED灯的亮灭

❤ 思路:

外部中断0的引脚:P3^2,然后P3^2也连接到独立按键模块的第三个按键K3

因为独立按键一端是共地的,当按键按下后,对应单片机的I/O口电平被拉低,而默认单片机的I/O口是高电平,这样就有一个下降沿过程,因此通常使用外部中断都是设置下降沿触发,即IT0=1或IT1=1

❤ 实验代码:

#include<REG52.h>

//定义LED模块编号D1的LED灯(即第一个LED灯)
sbit LED1=P2^0;

//定义独立按键模块编号K3的按键(即第三个按键)
//独立按键K3连接的IO口也是外部中断0
sbit K3=P3^2;

//延时函数,单位:10us
int delay_10us(unsigned int i)
{
	while(i--);
	return 0;
}

//外部中断0函数
void light_led_of_int0() interrupt 0
{
	delay_10us(1000);
	if(K3 == 0)
		LED1=~LED1;
}

// 外部中断INT0初始化
void int0_init()
{
	IT0=1;  //外部中断0采用边沿触发,下降沿有效
	EX0=1;  //开启外部中断0
	EA=1;   //开启总中断
}

int main(void)
{
	int0_init();
	while(1)
	{
					
	}
	return 0;
}

❤ 实验结果

按下开发板上独立按键模块K3按键

再次按下K3按键

标签:P3,中断,51,中断请求,单片机,TCON,CPU,外部
From: https://www.cnblogs.com/caojun97/p/16863497.html

相关文章

  • Keil51单片机解决数字显示不稳的问题
    Keil51单片机解决数字显示不稳的问题数字显示不稳,就是我们人眼的特点决定的,0.1秒的残留现象,低于这个值人眼发现不了其中变化,大于这个值就会出现同一个数字闪烁的现象。解......
  • Keil51单片机数码管鬼影显示问题
    Keil51单片机数码管鬼影显示问题所为的鬼影就是程序逻辑正确,但电路逻辑有问题。就是按程序逻辑,前一个数字显示后,直接显示下一组数字,因为没清干净,导致瞬间残留;处理的办法,......
  • 【单片机/嵌入式】复位中断服务函数与main函数
    一、复位中断服务函数调用main函数在GD32F450ZGT6的启动文件startuup_gd32f450_470.s中可以发现,复位中断服务函数调用了main函数。【疑问】为什么复位中断服务程序里面直......
  • arm 实现mdio 读写 88X5113 寄存器
    88X5113芯片说明该芯片和平常的phy芯片不同,以下为芯片采用MDIO接口实现读写寄存器的说明配置说明寄存器分为基地址和扩展地址,每次读写扩展地址的数据,需要先......
  • stm32单片机:使用串口下载程序。
    ①连接开发板USB转串口接口并上电。②通过MCUISP选定所下载的程序文件。③通过调帽连接p9—RXD,p10—TXD,Boot0=1(接3.3v),Boot1=0(接地GND)。④在mcuisp设置DTR低电平复位,RTS......
  • ed25519加密签名算法及应用
    刷知乎时看到一篇文章,很感兴趣,来学习一下!转载文章:ed25519加密签名算法及应用初次使用Github时都需上传本地的公钥,这时需要提前在本地生成密钥对,使用的是ssh-keygen命令......
  • [Bug0051]idea插件jrebel 运行报错JRebel-JVMTI [FATAL] Couldn‘t write to C:\User
    1、问题idea插件jrebel运行报错JRebel-JVMTI[FATAL]Couldn‘twritetoC:\Users\报错JRebel:Couldnotcreatelogfile:C:\Users\22611\.jrebel\jrebel.log(系......
  • HDU 3518 Boring counting
    Description035nowfacedatoughproblem,hisenglishteachergiveshimastring,whichconsistswithnlowercaseletter,hemustfigureouthowmanysub......
  • URAL 1517 Freedom of Choice
    DescriptionBackgroundBeforeAlbanianpeoplecouldbearwiththefreedomofspeech(thisstoryisfullydescribedintheproblem "Freedomofsp......
  • HDU 4651 Partition
    ProblemDescriptionHowmanywayscanthenumbers1to15beaddedtogethertomake15?Thetechnicaltermforwhatyouareaskingisthe"numberofpart......