外部中断0/1

发布时间: 2024-08-15
来源: 电子工程世界

外部中断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的亮和灭都是因为每次中断产生的

}


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。