外部中断0/1

时间:2022-08-15 23:28:51
外部中断0或1,实质是一样的,仅改变EX、IT为0或为1。
Q;那么问题来了:为什么要有两个极相似的外部中断0或1呢?
A:当外部有两个中断时,如果只有一个外部中断,
那么一个中断处理外面的两个中断时,其CPU处理就不够精确了,
所以得开通多一个处理外部中断的通道。
Q:当有三个外部中断的时候呢?
A;这就是单片机的局限。哈哈~~不过飞控有很多中断


#include <reg52.h> /* *外部中断0 */ sbit LED = P2^0;//位声明 //寄存器初始化函数 void kinson() { EX0 = 1;//外部中断0开关 EA = 1;//中断总开关 IT0 = 1;//外部中断0出发方式:0为电平、1为下降沿 //定时器的是要启动 } //主函数 void main(void) { kinson();//寄存器初始化函数的调用 while(1);//让程序在这里死循环 } //中断 void xjx() interrupt 0 //外部中断0的中断号为0,外部中断1的中断号2 { LED = ~LED;//LED的亮和灭都是因为每次中断产生的 }

 

 

#include <reg52.h>
/* *外部中断1 */ sbit LED = P2^0;//位声明 //寄存器初始化函数
void kinson() { EX1 = 1;//外部中断0开关
    EA = 1;//中断总开关
    IT1 = 1;//外部中断0出发方式:0为电平、1为下降沿 //定时器的是要启动
} //主函数
void main(void) { kinson();//寄存器初始化函数的调用
    while(1);//让程序在这里死循环
} //中断
void xjx() interrupt 2 //外部中断0的中断号为0,外部中断1的中断号2
{ LED = ~LED;//LED的亮和灭都是因为每次中断产生的
}

 

外部中断0/1