51单片机之中断的实现过程

我们首先需要了解什么是中断?

中断是指cpu在执行某一过程中由于外界原因必须暂停现在的事情,处理别的事情,处理完了再回去执行暂停的事情。

中断的优点?

1.分时操作。
2.实时响应
3.可靠性高

中断中用到的寄存器:51单片机之中断的实现过程_第1张图片
IE寄存器:
1.单路开关:EX0 ET0 EX1 ET1 ES
EX0:外部中断0允许位
ET0:定时/计数器T0中断允许位
EX1:外部中断1允许位
ET1:定时/计数器T1中断允许位
ES:串行口中断允许位
2.总开关
EA:CPU中断允许位
EA=1打开
IP寄存器:
作用是选择优先级的,解决中断优先级问题。

IT0寄存器:选择低电平有效还是下降沿有效,上电默认电平触发方式,IT0=1是下降沿有效
T0 T1为定时器中断,RX TX为串行口中断

中断优先级顺序由高到低:
外部中断0(IE0)->定时/计数器0(TF0)->外部中断1(IE1)->定时/计数器1(TF1)->串行口(R1或T1)

首先响应的是优先级高的中断请求,正在中断的不会被新的中断请求打断,正在进行低优先级中断服务,能被高优先级中断请求中断。

中断函数一般形式:void 函数名() interrupt   n{}
n代表中断号,中断号是编译器识别不同中断的唯一编号

中断函数和普通函数的异同:
同:函数的形式非常类似,中断响应过程和普通函数调用过程也非常相似
异:中断函数不需要声明,普通函数需要声明

使用中断函数需要遵循以下规则:
(1)中断函数不能进行参数传递
(2)在任何情况下,都不能直接调用中断函数

简单中断程序:
#include 

void main()
{
	P1=0x55;//p1口初始值
	EA=1;//全局中断开
	EX0=1;//外部中断0开
	IT0=0;//电平触发,一般写1
	while(1)
	{}

}
//外部中断程序
void interves(void) interrupt 0 using 1
{

	P1=~P1//进入中断程序执行程序
	//此时可以通过EA = 0指令暂时关掉中断

}






你可能感兴趣的:(Linux)