本人初学单片机,关于中断和延时求助!
时间:10-02
整理:3721RD
点击:
初学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
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
有没有高手啊,你们有什么看法都说一下吧,麻烦了
用了中断,不要判断按键是否按下
汇编 ,不懂呢.