第三章-51单片机外部中断


简述

本文主要介绍了单片机的外部中断,总共有四个外部中断,本次讲解中用到了外部中断0和外部中断1。要使用外部中断,首先要在主函数中初始化,所以要写初始化函数,和中断服务函数。(视频中有一个错误,在下文外部中断初始化中指出来啦

1 外部中断初始化

外部中断0初始化

void Int0_Init(void)
{
EA = 1; //打开总中断
EX0 = 1; //允许外部中断0触发中断
IT0 = 1; //设置外部中断0触发方式 方式为下降沿触发
}

外部中断1初始化(这里IT1是等于0的,因为是低电平触发,视频中没有把1改为0

void Int1_Init(void)
{
	EA = 1;								//打开总中断
	EX1 = 1;							//允许外部中断1触发中断
	IT1 = 0;							//设置外部中断1触发方式   方式为低电平触发
}

把初始化函数在写main.c的主函数中

void main()
{
	Int0_Init();												//外部中断0初始化
	Int1_Init();												//外部中断1初始化

	while(1)
	{
		Key_function();										//按键函数
		Monitor_function();								//监测函数
		Display_function();								//显示函数
		Manage_function();								//处理函数
	}
}

2 外部中断服务函数,注意中断号是不一样的

外部中断0服务函数,现象是按次按键灯的状态会反转

void Int0_IRQHandler(void) interrupt 0
{
	LED = ~LED;
}

外部中断1服务函数,现象是按下按键不松手,灯会闪烁,不加延时也会反转,不过太快了人眼看不出来,

void Int1_IRQHandler(void) interrupt 2
{
LED = ~LED;
Delay_function(500);      //延时0.5秒
}

3 外部中断的引脚和现象

外部中断0的引脚是P3.2        外部中断1的引脚是P3.3

因为是用按键控制LED灯的,所以按键的引脚要对应外部中断的引脚

若按下第一个按键,灯亮,再按一次,灯灭

若长按第二个按键,灯以0.5秒的频率闪烁。

发表回复

登录... 后才能评论

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

如果您已经成功付款但是网站没有弹出成功提示,请联系售后客服QQ:1711381267 提供付款信息为您处理,为您处理事宜。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件和阿里云盘下载。 若排除这种情况,可在对应资源底部留言,或联系我们。

本站素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源。