本人初学单片机,关于中断和延时求助!!!

2019-07-16 03:38发布

初学51单片机,我现在要做一个走道灯,要用汇编语言,一个按钮开关控制一盏灯,第一次按下开关后灯亮,进入延时程序,到规定时间后灯自动灭。在灯亮延时的过程中我想灭灯,就是再按一次开关,灯就立刻灭掉(即中断程序),第三次按下开关后,灯亮,进入延时程序。。。以此类推。程序代码如下,但在protues仿真不理想,按钮无法精确控制灯的亮灭,望高人指点,如何改善,实现精确控制
LIGHT BIT P1.0
KEY   BIT P3.2
      ORG 0000H
      SJMP START
      ORG 0003H
      AJMP INTO
      ORG 0030H

START:CLR LIGHT
      JB  KEY,START
      SETB EA
      SETB EX0
      LCALL DELAY
      SETB  LIGHT
      LCALL DELAY
      AJMP $
DELAY:MOV R1,#50
LOOP4:MOV R2,#170
LOOP3:MOV R3,#100
LOOP2:MOV R4,#50
LOOP1:DJNZ R4,LOOP1
      DJNZ R3,LOOP2
      DJNZ R2,LOOP3
      DJNZ R1,LOOP4
INTO:CPL  P1.0
     REti
     END

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。