中断系统
一、基本知识
1、中断的意义—解决突发事件和多任务
2
3、优点
①分时操作:分时对多个外设进行服务
②实时响应:通过硬件来实施中断的周期,准确
③可靠性高:具有处理故障和掉电的突发事件的能力
4
一次完整步骤:
1中断请求 2中断使能 3中断响应 4中断处理 5中断返回
135是硬件在完成的
2是软件完成,即在 寄存器上修改值
响应中断时,中断标志都会被硬件清零
5
中断系统的硬件
①外部中断
②内部定时器
③内部串行口
6
中断系统的流程:
IE寄存器(各单路开关)–EA位(总开关)–IP寄存器–中断源标志位–中断入口
中断允许控制位=0,断开,禁止;=1,接通,允许
使用中断前要先把 EA置于1位 ,大门打开
7 具体的中断操作
①串口:P3^3=INT0 外部中断0,优先级最高
P3^4=INT1 ( ^ 3 - ^ 7 都是与中断有关的串口)
IT0=1表示INT0这个串口为下降沿触发,IT0=0表示INT0为低电平触发
(在最开始要根据自己的需求,赋值好,确定为 什么情况下触发)
IE0=1表示INT0有中断产生
②中断允许控制: 由中断允许寄存器IE 控制
EA是总开关,
③中断优先级控制: IP寄存器控制
④中断响应条件: 有中断请求;中断源中断允许位是1;CPU开中断(EA=1)
中断服务函数,不需要声明,该函数不是被调用的,是被硬件触发的
void 函数名 () interrupt n //interrupt是中断函数的标志; n为中断编号
{
;
}
中断的嵌套:在执行中断服务程序期间,又有一个新的中断源提出中断请求;如果是同级,则不响应;如果优先级高 ,就会发生嵌套
//简单中断的实现 (一、下降沿触发中断)
#include <reg52.h>
void main()
{
P1=0x0f; //0000 1111
P3=0x0f;
EA=1;//全局中断 打开
EX0=1;//外部中断允许位
IT0=1;//使用下降沿触发 ,使用P3的按键来实现 ,高低电平切换时,会碰到下降沿,来触发
while(1)
{
; //保证单片机在空跑,即有在运行
}
}
void key() interrupt 0 //中断函数,触发到中断函数时,P1取反,
{ //让LED灯亮灯位置改变,以此显示该函数被触发
P1=~P1;
}
//简单中断的实现 (二、低电平触发中断)
#include <reg52.h>
void main()
{
P1=0x0f;
P3=0x0f;
EA=1;//大门
EX0=1;//小门
IT0=0;//=0是低电平触发
while(1)
{
; //保证单片机在空跑,即有在运行
}
}
void key() interrupt 0//中断函数
{
P1=~P1;
}