51单片机入门—中断系统和外部中断的基本使用

中断系统的基本概念

在这里插入图片描述
在这里插入图片描述

五个中断源及其基本结构

51单片机一共有五个中断源
按优先级从上到下
在这里插入图片描述
中断系统的结构 中断向量就是中断号,就是下图最左边的标号(在写中断服务函数的时候有用)
在这里插入图片描述

中断的处理函数

一般情况下,中断的处理函数有两个,其一为中断初始化函数,其二为中断服务函数
中断服务函数的结构
在这里插入图片描述

中断相关的4个寄存器

写程序的时候会用到

分为两个控制寄存器和两个中断请求标志

在这里插入图片描述
在这里插入图片描述

一个例题

在这里插入图片描述
代码如下:
方式一:

#include <reg52,h>
sbit L1=P0^0;
sbit L2=P0^7;
//中断系统的基本使用 
void Delay(unsigned int t)//延时函数
{
	while(t--);
}
void SelectHC573()//
{
	P2=(P2&0x1f)|0x80;
}

void Working()
{
	SelectHC573();
	L1=0;
	Delay(60000);
	L1=1;
	Delay(60000);
}

//***********************
 
void Init_INT0()//中断初始化函数 
{
	IT0=1;//外部中断0的触发方式
	EX0=1;//中断使能打开 
	EA=1;//总中断开关打开 
}

void ServiceINT0() interrupt 0//中断服务函数  这里面是中断后应该执行的代码
{
	L8=0;
	Delay(60000);
	Delay(60000);
	Delay(60000);
	Delay(60000);
	Delay(60000);
	Delay(60000);
	L8=1;
}
void  main()//
{
	void Init_INT0()
	while(1){
		Working();
	}
}

方式二:

#include <reg52,h>
sbit L1=P0^0;
sbit L2=P0^7;
//中断系统的基本使用 把中断服务函数之中的行为放在函数外面 用一个变量来标识有没有发生中断 
void Delay(unsigned int t)
{
	while(t--);
}
void SelectHC573()
{
	P2=(P2&0x1f)|0x80;
}

void Working()
{
	SelectHC573();
	L1=0;
	Delay(60000);
	L1=1;
	Delay(60000);
}

//***********************
 
void Init_INT0()//中断初始化函数 
{
	IT0=1;//外部中断0的触发方式
	EX0=1;//中断使能打开 
	EA=1;//总中断开关打开 
}

unsigned char stat_int=0;//判断有没有发生中断响应 
void ServiceINT0() interrupt 0//中断服务函数 
{
   stat_int=1;
}

void LEDINT()//中断产生的时候去执行 
{
	if(stat_int=1)
	{
	L8=0;
	Delay(60000);
	Delay(60000);
	Delay(60000);
	Delay(60000);
	Delay(60000);
	Delay(60000);
	L8=1;
    }
    stat_int=0;
}
//********************************* 
void  main()
{
	void Init_INT0()
	while(1){
		Working();//在LEDINT函数之前发生 
		LEDINT();
	}
}

注意事项

方法一中,当满足中断条件后,中断服务函数会自动调用,不需要写在主函数里
方法二中,是把中断服务函数之中的行为放在函数外面 用一个变量来标识有没有发生中断
最后,最好不要将要执行的代码放在中断服务函数中(我也不知为什么,视频里讲的,我也没百度到,以后会讲清楚,如果有大佬知道,麻烦评论一下)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值