中断:电脑暂停正在进行的任务转而去执行更紧急任务,完成紧急任务后,再回到原来暂停的地方,这个过程叫做中断。
外部中断0 的使用有两步
一、配置外部中断(外部中断0的初始化函数),主要设置以下几个参数:
IT0:中断0的触发方式,1下降沿触发,0低电平触发。
EX0:中断0的允许位,1中断0开启,0中断0关。
EA:总中断控制位,1总中断开,0总中断关。
二、中断处理函数编写,注意函数头有规定格式(注意标红字)
/INT0:void Int0() interrupt 0
{
}
/INT1:void Int1() interrupt 2
{
}
电路图:
程序:
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit key = P3^2; //定义端口
sbit led = P2^0;
sbit led1 = P2^1;
void delay(u16 i) //延时函数
{
while(i--);
}
void Int0Init() //中断0初始化函数
{
IT0 = 1; //下降沿触发
EX0 = 1; //开外部中断0中断允许
EA = 1; //开总中断
}
void main()
{
Int0Init(); //初始化Int0
led = 0; //上电后两个led亮一下。
delay(50000);
led1 = 0;
while(1)
{
led = 1;
delay(50000);
led = 0;
delay(50000);
}
}
void Int0()interrupt 0 //外部中断0的中断函数
{
delay(1000); //延时消抖
if(key==0)
{
led1=~led1;
}
}
仿真实图:
补充内容:
在C51单片机中有五个中断源;外部中断0(/INT0),定时器中断0(T0),外部中断1(/INT1),定时器中断1(T1),串口(UART)中断;它们的中断优先级按上由高(/INT0)到低(UART)。
中断结构(主要看外部中断0(/INT0)和外部中断1(/INT1)):
在使用中断前,我们需要先设定中断的一些参数:
一、中断初始化
1、中断触发方式(主要看外部中断0(/INT0)和外部中断1(/INT1)):
2、开启相应的中断号和总中断:
二、中断处理内容
3、中断处理函数的命名要求: