SBL EQU P1.7
RLED EQU P1.3
RLED EQU P1.4
GLED EQU P1.5
KMM EQU P1.0
KMY EQU P1.1
KM EQU P1.2
ORG 0000H
MAIN:CLR IEO;主程序入口
SETB EA;开中断
SETB EXO;开中断0
SETB ITO;为低电平触发'
MOV P2,#3FH;显示00
CLR P0.1
CLR P0.2
MOV P1,#00H;切进所有断电器.
MOV SP,#65H;修改堆栈区
MOV P1,#88H;红灯亮.置P1.7为输入
AL:SETB SBL ; 等待输入
JB SBL,AL
LCALL DELAY ;适时去抖
SETB KMM. ;开KMM
SETB KMY;开KMY
CLR RLED;关红灯
SETB YLED;开黄灯
LCALL DISP;调显示程序
MOV P2,#3FH;显示00
CLR P0.1
CLR P0.2
CLR YLED
CLR KMY
SETB GLED
SETB KM
D:JB IEO,MAIN;等待SB2按下
SJMP D
DEAY:MOV R5,#4
A4:MOV R6,#245
DJNZ R6,S
DJNZ R5,A4
RET
DISP:MOV R3,#9;30秒倒计时显示子程序
MOV R2,#80
MOV R4,#2
MOV DPTR,#TAB
GW:MOV A,R3
MOVC A,@A+DPTR;取个位
MOV P2,A
;送P1显示
SETB P0.1
CLR P0.2
ACALL DELAY
MOV A,R4;取十位
MOVC A,@A+DPTR
MOV P2,A
SETB P0.2
CLR P0.1
JB IE0,MAIN;SB2按下转
ACALL DELAY
DJNZ R2,GW
DEC R3
;个位减
CJNE R3,#0,GW
DEC R4
MOV R3,#9
CJNE R4#OFFH,GW
RET
TAB:3FH,06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH
END
这个程序有几处错误的地方 本人菜鸟一个,不懂,请高手指点一下。。。
|