51单片机中断控制灯的开关

51单片机中断控制灯的开关

1.概述

这篇文章介绍单片机的中断使用方式,通过一个小实验体验中断的应用。

2.中断

中断处理业务的优点就是不占用CPU资源,只有当硬件发出中断处理信号,CPU才会去处理中断请求。

3.中断控制灯开关

3.1.硬件原理

下面图是电路原理图,在7个LED灯中只需要将单片机19引脚的P1.7接上LED即可,其他的LED灯可不接,因为下面程序中只定义了P1.7引脚的LED灯;
如果希望7个LED灯都可控制,只需在程序中定义其他引脚的LED灯即可。

在这里插入图片描述

3.2.中断方式控制灯的开关

程序中在INT_init中断初始化函数中设置打开了总中断和外部中断,按下按键会触发INT_0INT_1中断函数,在该函数中写代码控制灯的状态。实现按键通过中断控制灯的开关。

/*************************************************************
* 程序名:外部中断控制LED灯开和关
* 编写人:bruce
* 日  期:2023-11-26
* 修改日志:开始编写
/*************************************************************/

#include<STC12C2052AD.H>
sbit LED = P1^7;

/*********************************************************************************************
函数名:外部中断INT初始化函数
调  用:INT_init();
参  数:无
返回值:无
结  果:启动外部中断INT1、INT0中断,设置中断方式
备  注:
/**********************************************************************************************/
void INT_init (void){
    
    
	EA = 1;	//中断总开关
	EX1 = 1; //允许外部中断1中断    
	EX0 = 1; //允许外部中断0中断
	IT1 = 1; //1:下沿触发  0:低电平触发
	IT0 = 1; //1:下沿触发  0:低电平触发
}

/*********************************************************************************************
函数名:外部中断INT0中断处理程序
调  用:[外部引脚INT0中断处理]
参  数:无
返回值:无
结  果:用户处理外部中断信号
备  注:
/**********************************************************************************************/
void INT_0 (void) interrupt 0  using 2{
    
     //切换寄存器组到2

	//用户函数内容
	LED = 0;

}

/*********************************************************************************************
函数名:外部中断INT1中断处理程序
调  用:[外部引脚INT1中断处理]
参  数:无
返回值:无
结  果:用户处理外部中断信号
备  注:
/**********************************************************************************************/
void INT_1 (void) interrupt 2  using 2{
    
     //切换寄存器组到2

	//用户函数内容
	LED = 1;
}	

void main(void){
    
    
	INT_init();
	LED = 1;
	while(1){
    
    };
}

猜你喜欢

转载自blog.csdn.net/m0_38039437/article/details/134649512