闭中断,使这样P3.2上的信号就不能频繁产生中断。参考下面的代码:
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:
NOP ;空操作指令
CLR EX0 ;关外中断0, CPU将对P3.2引脚的信号不理会
CALL DELAY ;调延时程序,不理P3.2的时间持续一段时间
SJMP MAIN ;程序跳转到MAIN处
INTERRUPT0:
CPL P0.7 ;取反P0.7口状态
RETI ;中断子程序结束返回到主程序
DELAY:
MOV R0, #250 ;给R0赋值250
D2:
MOV R1, #250 ;给R1赋值250
D1:
DJNZ R1, D1 ;R1减1不等于0跳到D1处
DJNZ R0, D2 ;R0减1不等于0跳到D2处
RET ;子程序结束返回
END ;程序结束
要想深入理解这一中断信号处理程序的运作机制,不妨参考异步信号下降沿检测和中断服务程序设计实验。这些资源不仅提供了代码示例,还详细解释了中断信号处理的原理和实现方法。
对于初学者来说,中断信号处理可能听起来像是一项复杂的任务,但通过实际操作和代码调试,您会发现其中的奥妙和乐趣。PLC上升沿和下降沿触发信号函数和获取电平或者时钟信号上升或者下降沿的程序这两篇文章就提供了不少实用的技巧和案例分析。
暂无评论