需要操作的寄存器TCON: ITx EXx
编程步骤:
(1)选触发方式
(2)开外部中断
(3)开总中断
IT0=1; //IT0=1,下降沿触发外部中断0,IT0=0边沿触发
EX0=1;//使用外部中断0
EA=1;
外部中断引脚如上图,对应独立按键S5 S4,外部中断号:0(EX0)/2(EX1)
附:init.c
void cls_buzz(void)
{
P2 = (P2&0x1F|0xA0);
P0 = 0x00;
P2 &= 0x1F;
}
void ex0_init()
{
IT0=1; //IT0=1,下降沿触发外部中断0,IT0=0边沿触发
EX0=1;//使用外部中断0
EA=1;
}
main.c
#include <reg52.h>
#include "init.h"
sbit L1=P0^0;
int main(){
cls_buzz();
ex0_init();
while(1){}
}
void Ex_int0() interrupt 0 //外部中断优先级最高
{
P2=((P2&0x1f)|0x80);
L1=~L1;
P2=(P2&0x1f);
}