80c51day06中断概念与为外部中断

中断

CPU正在在执行一个程序,突然接到中断请求,然后就放下手中的工作取执行中断程序,然后再回来继续手头的工作。
在这里插入图片描述
框前面的数字是中断向量号
这个图并不完整,比如计时器/定时器的功能设置没画出来
看外部中断
在这里插入图片描述
串口中断的标志位必须通过软件置0,其他好像是自动的,不嫌麻烦就都用软件置0

外部中断代码

低电平触发

#include <reg52.h>

#define uint unsigned int
#define uchar unsigned char

sbit key_s2 = P3^0;//独立按键S2
sbit flag = P3^7; //外部中断信号产生脚

/*====================================
函数	: delay(uint z)
参数	:z 延时毫秒设定,取值范围0-65535
返回值	:无
描述	:12T/Fosc11.0592M毫秒级延时
====================================*/
void delay(uint z)
{
	uint x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--); 		
} 
//外部中断0初始化
void int0Init()
{
	EA = 1;	//开总中断
	EX0 = 1;//开外部中断0
	IT0 = 0;//外部中断0低电平触发	
}

void main()//main函数自身会循环
{
	int0Init();//外部中断0初始化	
	while(1)
	{
		if(key_s2 == 0)//判断S2是否被按下
		{
			delay(20);//按键消抖
			if(key_s2 == 0)
			{
				flag = 0;
				flag = 0;//产生低电平,CPU会采样2次P3.2的状态,两次都为低才触发
				flag = 1;//结束低电平
				while(!key_s2);//松手检测
			}	
		}

	}	
}

//外部中断1中断服务程序,加interrupt 和中断向量号
void int0() interrupt 0
{
	P1 = ~P1;//P1的状态按位取反
}  

这个就是一直检测按键有无按下,有的话就改变引脚来触发中断,其实直接将对应引脚置搞,然后将引脚与开关连在一起会更好,但是开发板它已经固定死了,没办法连接。
再看一下下降沿触发的:

#include <reg52.h>

#define uint unsigned int
#define uchar unsigned char

sbit key_s2 = P3^0;//独立按键S2
sbit flag = P3^7; //外部中断信号产生脚

/*====================================
函数	: delay(uint z)
参数	:z 延时毫秒设定,取值范围0-65535
返回值	:无
描述	:12T/Fosc11.0592M毫秒级延时
====================================*/
void delay(uint z)
{
	uint x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--); 		
} 
//外部中断1初始化
void int1Init()
{
	EA = 1;	//开总中断
	EX1 = 1;//开外部中断1
	IT1 = 1;//外部中断1下降沿触发	
}

void main()//main函数自身会循环
{
	int1Init();//外部中断1初始化	
	while(1)
	{
		if(key_s2 == 0)//判断S2是否被按下
		{
			delay(20);//按键消抖
			if(key_s2 == 0)
			{
				flag = 1;
				flag = 0;//产生下降沿
				while(!key_s2);//松手检测
			}	
		}

	}	
}

//外部中断1中断服务程序
void int1() interrupt 2
{
	P1 = ~P1;
}  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值