信号中断CPU-starter使用手册
主程序只有一条指令,通过指令MAIN: SJMP MAIN,程序始终跳到当前位置,不做任何具体的事情。只是当P3.2脚出现中断信号时,才会去中断服务主程序执行一下,然后又回来继续停在此处。P3.2脚信号引发的中断程序会取反P0.7,改变P0.7引脚上接的LED小灯亮灭状态,从而实现LED小灯闪烁。执行RETI指令从P3.2引脚中断服务子程序中返回主程序。
那么程序到底是怎么从主程序跳到中断服务子程序的呢?其实,当P3.2引脚出现低电平中断信号时,CPU首先找到这个中断的“家”,即找到中断入口地址0003H处,在那又加了一条跳转指令,才来到了真正的中断服务子程序【点击了解更多详情】。
程序的流程如下:
ORG 0000H ;复位时程序从此开始
SJMP START ;跳到START进行初始化
ORG 0003H ;P3.2引脚信号中断入口
AJMP INTERRUPT0 ;跳转到标号INTERRUPT0处(P3.2中断服务子程序)
ORG 0030H ;初始化程序从30H开始
初始化部分:
START:
MOV SP, #60H ;给堆栈指针赋值60H
MOV P0, #0FFH ;让P0口输出高电平,小灯熄灭
CLR IT0 ;设置P3.2引脚低电平信号可以引发中断
SETB EX0 ;开外中断0,即允许P3.2信号中断CPU
SETB EA ;开总中断允许
主程序部分:
MAIN:
SJMP MAIN ;程序跳转到MAIN处
P3.2脚引发的中断服务子程序:
INTERRUPT0:
CPL P0.7 ;取反P0.7口状态
RETI ;从中断服务子程序返回
通过这个简单的程序,我们可以看到当P3.2引脚出现中断信号时,如何通过中断服务子程序来控制LED小灯的闪烁。如果你还想了解更多关于中断信号处理的细节,可以参考这篇详细的中断信号处理文章。
以上的代码和解释为我们揭示了中断机制的基本原理和应用。如果你对中断程序有更深入的兴趣,可以参考这份中断程序代码,里面有更多的实例和详细的注释。XINT中断程序的实现也可以在这篇文章中找到。
这些资源将帮助你更好地理解和应用中断技术,使你的程序更加高效和灵活。
下载地址
用户评论