51单片机每个外部中断和定时器中断 应用模版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一步,中断配置
/************************************************************
函数名: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,
//执行完成后,返回从断点处继续往下执行原来的代码。
}
}