作息时间控制器程序
程序如下:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP CTCO
MAIN :MOV TMOD,#11H
MOV TH0,#30H
显示子程序: MOV TL0,#0B0H MOV 50H,#00H MOV 51H,#00H MOV 52H,#00H MOV 47H,#00H MOV P3,#00H MOV R7,#20 ORL IE,#82H SETB PT0 SETB TR0 W1:LCALL TIME LCALL PTDS LCALL DISPLAY LCALL ANJIAN LJMP W1
DISPLAY :MOV R0,#30H
MOV R3,#01H
MOV DPTR,#TAB
N1:MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV P1,R3
LCALL DEALY
MOV A,R3
JB ACC.5,BACK1
RL A
MOV R3,A
INC R0
LJMP N1
BACK1:RET
送数子程序:
PTDS :MOV R0,#30H
MOV R1,#50H MOV R2
NEXT
ANL A
MOV @R0
INC R0
MOV A
SWAP A
ANL A
MOV @R0
INC R1
INC R0
DJNZ R2
RET
延时子程序:
LOOP2: MOV R6
DJNZ R6
DJNZ R5
RET
TAB
DB 6DH
中断服务程序:
PUSH PSW
DJNZ R7
MOV R7
LCALL DSH ,#03H :MOV A,@R1 ,#0FH ,A ,@R1 ,#0FH ,A ,NEXT DEALY :MOV R5,#05 ,#00H ,$ ,LOOP2 :DB 3FH,06H ,5BH ,4FH ,66H ,7DH ,07H ,7FH ,6FH CTCO :PUSH ACC ,BACK ,#20
MOV R1,#50H NEXT1:MOV A,@R1
ADD A,#01H DA A
MOV @R1,A
CJNE R1,#52H,NEXT2 CJNE A,#24H,BACK MOV @R1
LJMP BACK
NEXT2
MOV @R1
INC R1
LJMP NEXT1
BACK
POP PSW
POP ACC
RETI
查定时子程序:
DSH
MOV 46H
MOV R4
MOV A
MOV A
JNZ L6
MOV 47H
L6
CJNE A
LJMP L4
L3
MOV R1
L2
MOV 40H
ADD A,#00H :CJNE A,#60H,BACK ,#00H :MOV TH0,#3CH MOV TL0,#0B0H : MOV 45H,#02H ,#00H ,#00H ,R4 ,50H ,#00H :MOV A,47H ,#14H,L3 :MOV 60H,A (R4) ,#51H :MOV A,R4 ,@R1 ,#113H
MOVC A,@A+PC CJNE A,40H ,L1 INC R1
INC R4
DJNZ 45H,L2 INC 47H
LJMP L4
L1
MOV A
ADD A
MOV R4
DJNZ 46H
L4
DB 3FH
DB 6DH
TIME
JZ BACK2
CJNE A
CLR P3.0
LJMP BACK2 L5
MOV TL1
SETB TR1
JNB TF1
CLR TF1
BACK2
按键程序:
ANJIAN
LCALL DEALY JB P3.1
WWW
CPL TR0
LJMP ANJIAN :MOV 45H,#02H ,60H ,#02H ,A ,L3 :RET ,06H ,5BH ,4FH ,66H ,7DH ,07H ,7FH ,6FH :MOV A,47H ,#14H,L5 :MOV TH1,#0EEH ,#0EEH ,$ CPL P3.0 :RET :JB P3.1,LL2 ,ANJIAN : JNB P3.1,WWW
LL2: JB P3.2,LL3 LCALL DEALY JB P3.2,LL2 NNN: JNB P3.2,NNN INC 51H
MOV A,51H
CJNE A,#60H,ANJIAN MOV 51H,#00H LL3: JB P3.3,LL1 LCALL DEALY JB P3.2,LL2 NNN1:JNB P3.2,NNN1 INC 52
MOV A,52
CJNE A,#24ANJIAN MOV 52,#00H LL1:RET