4.编写中断服务程序
void external0_isr() interrupt 0
{
//外部中断0服务程序的代码
}
void timer0_isr() interrupt 1
{
//定时器0服务程序的代码
}
在中断服务程序中,需要根据实际需求编写对应的代码,实现对中断事件的响应。在中断服务程序的开头和结尾需要加上关中断和开中断的指示,确保中断服务程序执行过程中不会被其他中断打断。
5.关中断和开中断
void external0_isr() interrupt 0
{
EA = 0; //关总中断
//外部中断0服务程序的代码
EA = 1; //开总中断
}
void timer0_isr() interrupt 1
{
EA = 0; //关总中断
//定时器0服务程序的代码
EA = 1; //开总中断
}
在中断服务程序的开头和结尾,需要加上关中断和开中断的指示,以确保中断服务程序的执行过程中不会被其他中断打断。
在开头处关中断,可以避免在执行中断服务程序时,又发生同样的中断事件,造成重复执行;
在结尾处开中断,可以使得其他优先级更低的中断能够在该中断服务程序执行完毕后立即得到响应,提高单片机的实时性和响应速度。
总的来说,编写51单片机中断子程序需要注意以下几点:
定义中断服务程序的入口地址,包括中断类型、中断服务程序名称、中断类型号等。
设置中断向量表,包括开总中断、开外部中断、设置外部中断触发方式、开定时器中断、设置定时器初值、启动定时器等。
编写中断服务程序,根据实际需求编写对应的代码,确保中断服务程序执行过程中不会被其他中断打断。
在中断服务程序的开头和结尾加上关中断和开中断的指示,以确保中断服务程序的执行过程中不会被其他中断打断。
|