MCS-51系统中断优先级的软扩展
ti=0x32; //32H为RETI的机器码
《MCS-51系统中断优先级的软扩展(第5页)》
本文链接地址:http://www.oyaya.net/fanwen/view/167048.html
(((void)(code*)(void))(&reti))();//将reti的地址强制转化为函数指针
}
使用时,只需将ExtIntPri.H头文件用#include加入相应源文件(当然,应将ExtIntPri.C的目标文件<*.Obj>、库文件<*.lib>或汇编源文件<*.src>加入当前工程)。不妨以定时器0(T0)为例,其中断号为1,故优先级亦应为1,如下所示:
////Test.C
#include "ExtIntPri.H"
//…
void T0_ISR(void)interrupt 1 using 2{
SetPriority(1);
//…
ResetPriority();
}
如此,T0即有了次最高优先级——1。
结语
使用本文所述的“软扩展”方法,可以将MCS-51系统的中断优先级扩展到5级。如果所用51系统的中断源个数为N(N≤8),只须对上述方法稍作修改即可将其优先级扩展到N级。该方法不需增加任何硬件,且所需的额外资源消耗很小,使用也非常简单,不会给用户增加编程负担。实际应用表明,这种方法是可行的和有效的。
《MCS-51系统中断优先级的软扩展(第5页)》