外部中断0或1,实质是一样的,仅改变EX、IT为0或为1。
Q;那么问题来了:为什么要有两个极相似的外部中断0或1呢?
A:当外部有两个中断时,如果只有一个外部中断,
那么一个中断处理外面的两个中断时,其CPU处理就不够精确了,
所以得开通多一个处理外部中断的通道。
Q:当有三个外部中断的时候呢?
A;这就是单片机的局限。哈哈~~不过飞控有很多中断
#include
/*
*外部中断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
/*
*外部中断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的亮和灭都是因为每次中断产生的
}
相关文章