当前位置:文档之家› 51单片机每个外部中断和定时器中断 应用模版

51单片机每个外部中断和定时器中断 应用模版

第一步,中断配置
/************************************************************
函数名:INT0_Config
功能:配置单片机与中断相关的硬件,让单片机能够正常检测中断和执行中断代码。

输入参数:
输出参数:
************************************************************/
void INT0_Config(void)
{
IT0=1; //中断触发方式,IT0=0,低电平触发,INT0=1下降沿触发(下降沿就是由高电平向低电平的跳变);
EX0=1; //外部中断0的中断开关,每个中断源都有自己的中断开关。

EA=1; //打开总中断,如果总中断不打开,就是其他中断开关被打开,单片机也不能执行中断。

}
第二步,中断服务,也就是cpu被中断后所要做的事。

/************************************************************
函数名:Isr_INT0
功能:中断服务
输入参数:
输出参数:
************************************************************/
void Isr_INT0() interrupt 0 //interrupt表明该函数是中断函数,后面的标号表示是哪个中断源产生的中断。

{ //(INT0)为0, Timer0为1,INT1为2,Timer3,串口中断为4。

// Add your code here //自己想要中断后发生的程序
}
第三部主函数
/************************************************************
函数名:main
功能:主函数
输入参数:
输出参数:
************************************************************/
void main()
{
INT0_Config();//调用这个函数来配置外部中断
while(1)
{
//Add your code here
//CPU一直在这里循环的执行代码,一旦发生中断,就停下来去执行中断函数Isr_INT0() interrupt 0,
//执行完成后,返回从断点处继续往下执行原来的代码。

}
}
外部中断INT0:
void INT0_Config(void)
{
EA=1; //开总中断
EX0=1; //开外部中断INT0
IT0=1; //1为下降沿触发,0为低电平触发}
Void Isr_INT0() interrupt 0
{
// Add your code here
}
Void main()
{
INT0_Config();
While(1)
{
/Add your code here
//CPU一直在这里循环的执行代码,
//一旦发生中断,就停下来去执行中断函数Isr_INT0() interrupt 0,
//执行完成后,返回从断点处继续往下执行原来的代码。

}
}
外部中断INT1:void INT1_Config(void)
{
EA=1; //开总中断
EX1=1; //开外部中断INT0
IT0=1; //1为下降沿触发,0为低电平触发}
Void Isr_INT1() interrupt 2
{
// Add your code here
}
Void main()
{
INT0_Config();
While(1)
{
/Add your code here
//CPU一直在这里循环的执行代码,
//一旦发生中断,就停下来去执行中断函数Isr_INT0() interrupt 0,
//执行完成后,返回从断点处继续往下执行原来的代码。

}
}。

相关主题