【摘要】:图4-7 P1口发光二极管点亮电路图由于每次按键或放开可能会有弹跳现象(抖动),因而会引发多次中断,解决的方法有两种:一种是利用软件DELAY延时的方法去抖动;另一种是利用图4-7中所示的按键电路,采用RC电路硬件去抖动。
例4-2:在图4-7中,正常情况下P1口所接的发光二极管依次循环点亮(每次只有一个亮)。当S0按下时,产生中断,此时8只发光管“全亮—全灭”交替出现8次,然后恢复正常。
图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;中断返回
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。