外部中断
一、原理
1、中断响应条件:
(1)中断有中断请求;
(2)此中断源的中断允许位为1;
(3)CPU开中断(即EA=1)
以上三条件同时满足时,CPU才有可能响应中断
2、
二、实现功能:按下K3,使LED进行状态翻转,让D1(下图)的值进行状态翻转 【即通过外部中断,使led进行状态翻转】
三、编程(黑色字体为外部中断0,红色字体为外部中断1)
#include "reg52.h" typedef unsigned char u8; typedef unsigned int u16; sbit led=P2^0; sbit K3=P3^2; // 由原理图知,K3接P30口 sbit K4=P3^3; void Int0Init() //设置外部中断0 ,该中断源符号为 Int0 { IT0=1; // P32 管脚即按键默认高电平,当K3按下,低电平进入管脚,因此设置外部中断的触发方式为下降沿 //IT1=1; EX0=1;//打开外部中断的允许位 EX1=1; EA=1;//CPU中断总允许位 } void delay(u16 i) { while(i--); } void main() { Int0Init(); while(1); } void Int0() interrupt 0 // 中断服务函数 外部中断0的中断号为0 void Int1() interrupt 1 { delay(1000); //延时,使按键消抖 if(K3==0) //判断按键是否按下 K4 { led=~led; //led接P20口,默认高电平,所以最初灯熄灭 } }