11中断系统
中断是基础
中断:是解决突发事件和多任务实时处理的最佳方法。
引入原因:减少运行时间,可以处理多个任务。
优点:分时性,实时性,可靠性高。
其运行原理如下图所示
80c51有5个中断源80c52有六个中断源,两个优先级,可实现二级中断嵌套。
优先级
!!
原则
1.CPU同时接受几个中断时,首先响应级别最高的。
2.正在进行的中断过程不能被新的同级或者低优先级的中断请求中断但是可以被高优先级中断
条件
1.中断源有请求
2.此中断源的中断允许位为1
3.CPU开中断,(EA=1)
一般形式
void 函数名()interrupt n//1.不能进行参数传递,2.不能直接调用中断函数
控制灯LED.H
#ifndef _LED_H_
#define _LED_H_
#define LED0 P1_0 //用LED0直接代替P2_4,也就是程序中写LED0实际上就等同于写了P2_4
#define LED1 P1_1 //用LED1直接代替P2_3,也就是程序中写LED0实际上就等同于写了P2_3
#define LED2 P1_2 //用LED2直接代替P2_0,也就是程序中写LED0实际上就等同于写了P2_0
#define LED3 P1_3 //用LED3直接代替P3_3,也就是程序中写LED0实际上就等同于写了P3_3
#endif
咣,然后就是主函数了,这里我们也可以说是中断函数了学习的时候要注意是那一类开发板,真心觉得重要!
#include <AT89X51.H> #include <LED.H> void main(void) { IT0=0;//外部中断0低电平触发 EX0=1; //允许外部中断0进入中断 EA=1; //打开中断允许总开关 while(1) { LED0=1; //如果没中断产生,单片机会一直执行这句,LED0灭。 } } void INT_0(void) interrupt 0 { LED0=0; //如果引脚P1.0等于1,单片机会进入这个中断0服务程序,执行这句,令LED0点亮 }
效果是在关的那一瞬间亮