Email:ascii@xinhuanet.com
;*************以下为为伪指令定义*******************8
S_KEY EQU P1.6
M_KEY EQU P1.7
H_KEY EQU P3.2
JDQ EQU P1.5
S_DATA DATA 50H
M_DATA DATA 51H
H_DATA DATA 52H
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP CLOCK
ORG 0100H
;***********************主程序开始*****************
MAIN:MOV SP,#70H
MOV 6EH,#00h
MOV 6DH,#00h
MOV 6CH,#00h
MOV 6BH,#00h
MOV 6AH,#00h
MOV 69H,#00h
MOV S_DATA,#0
MOV M_DATA,#0
MOV H_DATA,#0
;
MOV DPTR,#0FB00H
MOV A,#03H
MOVX @DPTR,A
;
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB EA
SETB ET0
SETB TR0
;************循环程序开始*******************?
START:
MOV A,S_DATA
LCALL HEX_BCD
MOV 6AH,A
MOV 69H,B
;
MOV A,M_DATA
LCALL HEX_BCD
MOV 6CH,A
MOV 6BH,B
;
MOV A,H_DATA
LCALL HEX_BCD
MOV 6EH,A
MOV 6DH,B
;
LCALL DIS
LCALL KEY
LCALL CONTROL
AJMP START
;***********显示子程序*****************888
DIS:PUSH ACC
MOV DPTR,#0FB00H
MOV A,#03H
MOVX @DPTR,A
YLED:MOV R0,#6eH
MOV R3,#01H
MOV A,R3
YB:MOV DPTR,#0FB01H
MOVX @DPTR,A
INC DPTR
MOV A,@R0
ADD A,#11H
MOVC A,@A+PC
MOVX @DPTR,A
LCALL DELL
DEC R0
MOV A,R3
JB ACC.5,EEND
RL A
MOV R3,A
SJMP YB
NOP
NOP
EEND:AJMP S_END
BD: DB 3FH,06H,5BH,4FH,66H,6DH
BD1: DB 7DH,07H,7FH,6FH,77H,7CH
BD2: DB 39H,5EH,79H,71H,73H,3EH
BD3: DB 31H,6EH,1CH,23H,40H,03H
S_END:POP ACC
RET
;**********end display*********************
;***********delay program******************
DELL:MOV R7,#04H
DEL:MOV R6,#0E7H
NN:DJNZ R6,NN
DJNZ R7,DEL
RET
;******************************************
;***************key(键盘子程序) program ***************
KEY:
JB S_KEY,M_SET
LCALL DELL
JB S_KEY,M_SET
INC S_DATA
MOV A,S_DATA
CJNE A,#60,S_DIS
MOV S_DATA,#00H
S_DIS:MOV A,S_DATA
LCALL HEX_BCD
MOV 69H,A
MOV 6AH,B
S_REP:LCALL DIS
JNB S_KEY,S_REP
;
M_SET:
JB M_KEY,H_SET
LCALL DELL
JB M_KEY,H_SET
INC M_DATA
MOV A,M_DATA
CJNE A,#60,M_DIS
MOV M_DATA,#00H
M_DIS:MOV A,M_DATA
LCALL HEX_BCD
MOV 6BH,A
MOV 6CH,B
M_REP:LCALL DIS
JNB M_KEY,M_REP
;
H_SET:
JB H_KEY,SET_END
LCALL DELL
JB H_KEY,SET_END
INC H_DATA
MOV A,H_DATA
CJNE A,#60,H_DIS
MOV H_DATA,#00H
H_DIS:MOV A,H_DATA
LCALL HEX_BCD
MOV 6DH,A
MOV 6EH,B
H_REP:LCALL DIS
JNB H_KEY,H_REP
;
SET_END:RET
;******************控制继电器子程序CONTROL JDQ*********8
CONTROL:
MOV A,H_DATA
XRL A,#12
JZ M_CONT
AJMP C_END
M_CONT:
MOV A,M_DATA
XRL A,#30
JZ OPEN_JDQ
AJMP OVER_JDQ
OPEN_JDQ:CLR JDQ
AJMP C_END
OVER_JDQ:MOV A,M_DATA
XRL A,#40
JNZ C_END
SETB JDQ
C_END:RET
;***********CONTROL JDQ END*************8
;*******时钟定时中断子程序clock interrupt program*******
CLOCK:PUSH ACC
PUSH PSW
CLR TR0
MOV TL0,#0B0H
MOV TH0,#03CH
SETB TR0
INC 5FH
MOV A,5FH
CJNE A,#0AH,D0
MOV 5FH,#00H
MOV A,S_DATA
ADD A,#01H
MOV S_DATA,A
CJNE A,#60,D0
MOV S_DATA,#00H
MOV A,M_DATA
ADD A,#01H
MOV M_DATA,A
CJNE A,#60,D0
MOV M_DATA,#00H
MOV A,H_DATA
ADD A,#01H
MOV H_DATA,A
CJNE A,#24,D0
MOV H_DATA,#00H
D0: POP PSW
POP ACC
RETI
;************HEX_BCD 转换子程序*******8
HEX_BCD:MOV B,#10
DIV AB
RET
END