首页 理论教育 示例:中断应用举例-单片机原理与接口技术:设计与实训

示例:中断应用举例-单片机原理与接口技术:设计与实训

时间:2023-11-16 理论教育 版权反馈
【摘要】:图4-7 P1口发光二极管点亮电路图由于每次按键或放开可能会有弹跳现象(抖动),因而会引发多次中断,解决的方法有两种:一种是利用软件DELAY延时的方法去抖动;另一种是利用图4-7中所示的按键电路,采用RC电路硬件去抖动。

示例:中断应用举例-单片机原理与接口技术:设计与实训

例4-2:在图4-7中,正常情况下P1口所接的发光二极管依次循环点亮(每次只有一个亮)。当S0按下时,产生中断,此时8只发光管“全亮—全灭”交替出现8次,然后恢复正常。

978-7-111-54295-7-Chapter04-31.jpg

图4-7 P1口发光二极管点亮电路图

由于每次按键或放开可能会有弹跳现象(抖动),因而会引发多次中断,解决的方法有两种:一种是利用软件DELAY延时的方法去抖动;另一种是利用图4-7中所示的按键电路,采用RC电路硬件去抖动。

解:汇编语言程序如下:

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP INT0

ORG 0030H

MAIN:MOV SP,#60H;设定堆栈为61H~7FH

SETB EA;开CPU中断

CLR IT0;设定INT0低电平触发

SETB EX0;开INT0中断

MOV A,#0FEH;点亮一个LED

AGAIN:MOV P1,A

ACALL DELAY

RL A;循环左移1位

SJMP AGAIN

DELAY:MOV R3,#100;延时程序(www.xing528.com)

MOV R4,#0

DELAY1:DJNZ R4,$

DJNZ R3,DELAY1

RET

ORG 0300H

INT0:PUSH PSW;外部0中断处理程序,保护现场

PUSH ACC

SETB RS0;选择工作寄存器1

CLR RS1

MOV R0,#08

AGAIN1:MOV P1,#0;点亮所有的LED

ACALL DELAY

MOV P1,#0FFH;熄灭所有的LED

ACALL DELAY

DJNZ R0,AGAIN1;没闪烁8次,则继续

POP ACC;恢复现场

POP PSW

RETI;中断返回

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈