📄 f24timer1.asm
字号:
JZ PCUNLOCK0
MOV SO_HEAD_PC,#40H
RET
PCUNLOCK0:CLR BIT_HF
SETB BIT_JS
MOV TIMEJS,#0
clr JK2;lamp off
MOV SO_HEAD_PC,#40H
RET
;--------
PCYUANORR:MOV A,43H
JNZ PCYUANORR1
CLR JK2;lamp off
clr bit_yuanbj
MOV SO_HEAD_PC,#40H
RET
PCYUANORR1:SETB JK2;orr;lamp on
setb bit_yuanbj
MOV SO_HEAD_PC,#40H
RET
;--------
PCTIMERstop:CLR BIT_TDOWNSTAR
MOV DISPT1,#0
MOV DISPT2,#0
MOV DISPT4,#0
MOV DISPT5,#0
LCALL FATCH_DISPB
LCALL DISPTMB ;清显示
MOV SO_HEAD_PC,#40H
RET
;*****************************
;calculate time and display
;*****************************
CALCULATETM:JB BIT_TDOWNSTAR,_TDOWNSTAR
RET
_TDOWNSTAR:JB BIT_TIMECH,CALTMCHANGE
RET
CALTMCHANGE:CLR BIT_TIMECH
;MOV TIME60,#0
;JNB BIT_TIMEDOWN,CALTMCHANGEUP
;-----------
CALTMCHANGEDOWN:MOV A,TIMEH
JNZ CALTM_DOWN0
MOV A,TIMEL
JNZ CALTM_DOWN0
SETB BIT_SPK
SETB SPK_ST
MOV TIMESPK,#0
CLR BIT_TDOWNSTAR
RET
CALTM_DOWN0:MOV A,TIMEL
JZ CALTM_DOWN1
DEC TIMEL
MOV A,TIMEL
MOV B,#10
DIV AB
MOV DISPT4,A
MOV DISPT5,B
LCALL FATCH_DISPB
LCALL DISPTMB
RET
CALTM_DOWN1:MOV TIMEL,#59
MOV A,TIMEL
MOV B,#10
DIV AB
MOV DISPT4,A
MOV DISPT5,B
DEC TIMEH
MOV A,TIMEH
MOV B,#10
DIV AB
MOV DISPT1,A
MOV DISPT2,B
LCALL FATCH_DISPB
LCALL DISPTMB
RET
;----------
CALTMCHANGEUP:MOV A,TIMEL
CJNE A,#59,CALTM_UP0
CALTM_UP0:JNC CALTM_UP1
INC TIMEL
MOV A,TIMEL
MOV B,#10
DIV AB
MOV DISPT4,A
MOV DISPT5,B
LCALL FATCH_DISPB
LCALL DISPTMB
RET
CALTM_UP1:MOV TIMEL,#0
INC TIMEH
MOV A,TIMEH
CJNE A,#59,CALTM_UP2
CALTM_UP2:JNC CALTM_UP3
INC TIMEH
MOV A,TIMEH
MOV B,#10
DIV AB
MOV DISPT1,A
MOV DISPT2,B
LCALL FATCH_DISPB
LCALL DISPTMB
RET
CALTM_UP3:MOV TIMEH,#0
MOV TIMEL,#0
MOV DISPT1,#0
MOV DISPT2,#0
LCALL FATCH_DISPB
MOV DISPT4,#0
MOV DISPT5,#0
LCALL FATCH_DISPB
LCALL DISPTMB
RET
;--------------------------
;fatch dispma in dispb index dispt
;--------------------------
FATCH_DISPB:MOV R0,#DISPT1
MOV R1,#DISPB1
MOV R7,#5
FATCHDISPBL:MOV A,@R0
MOV DPTR,#DISPBMB
MOVC A,@A+DPTR
MOV @R1,A
INC R0
INC R1
DJNZ R7,FATCHDISPBL
RET
DISPBMb:;fdgeacbdp yang
DB 21H,0F9H,85H,91H,59H,
DB 13H,3H,0F1H,1H,11H,0DFH
;--------------------------
;display time in dispb1-5
;xx-xx
;--------------------------
DISPTMB: PUSH PSW
PUSH ACC
SETB RS1
CLR RS0
MOV R3,#5 ;4*8=32/2=16路继电器
MOV R1,#DISPB1 ;存放的起始地址
DISPTMB11:MOV A,@R1
MOV R2,#8 ;每字节8个数据位
DISPTMB12:RLC A
MOV DSPDATA,C
SETB DSPCLK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR DSPCLK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,DISPTMB12
INC R1
DJNZ R3,DISPTMB11
CLR DSPSTR ;加载位
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB DSPSTR ;加载位
POP ACC
POP PSW
RET
;*******************************
;DELAY SPEAKER HFLOCK
;*******************************
DELY:
DELY2: MOV B,#0F0H
DELY1: DJNZ B,DELY1
RET
;-------
SPEAKER:JB BIT_SPK,SPEAKER0
CLR spk
RET
SPEAKER0:;CLR BIT_SPK
SETB spk_ST
SETB spk
LCALL DELY
RET
;-------
HFLOCK:JNB BIT_HF,HFLOCKS
CLR JK1;P1.3 on
RET
HFLOCKS:SETB JK1;P1.3 off
RET
;-------
CHECK_BJ:;JB BIT_CHSTAR,CHECK_BJST
;RET
CHECK_BJST:MOV A,P0
MOV R0,A
LCALL DELAY10MS
LCALL DELAY10MS
LCALL DELAY10MS
LCALL DELAY10MS
MOV A,P0
XRL A,R0
JZ CHECKBJ
RET;CPL A
CHECKBJ:MOV A,R0
ANL A,#07H
JZ CHECK_BJ0
CHECK_BJ1:JB BIT_CT2DA,CHECK_BJ2
JNB ACC.0,CHECK_BJ2
SETB JK2;wrong lamp on
RET
CHECK_BJ2:JB BIT_CT2DB,CHECK_BJ3
JNB ACC.1,CHECK_BJ3
SETB JK2;wrong lamp on
RET
CHECK_BJ3:JB BIT_CT2DC,CHECK_BJ0
JNB ACC.2,CHECK_BJ0
SETB JK2;wrong lamp on
RET
CHECK_BJ0:jb bit_yuanbj,CHECK_BJ4
CLR JK2;lamp off
RET
CHECK_BJ4:SETB JK2;wrong lamp on
RET
;-------
S1DEALWITHTIME:MOV A,44H;S
JNZ DEALWITHTIME0
MOV A,43H;M
JNZ DEALWITHTIME1
RET
DEALWITHTIME0:MOV 30H,#01H
MOV 35H,44H
MOV R0,#30H
MOV R1,#35H
MOV R2,#1
LCALL BCDS;@R1-@R0->@R1
MOV 44H,35H
RET
DEALWITHTIME1:MOV 44H,#59H
MOV 30H,#01H
MOV 35H,43H
MOV R0,#30H
MOV R1,#35H
MOV R2,#1
LCALL BCDS;@R1-@R0->@R1
MOV 43H,35H
RET
;-----------------
BCDS:MOV A,R0;@R1-@R0->@R1
ADD A,R2
MOV R0,A
DEC R0
MOV A,R1
ADD A,R2
MOV R1,A
DEC R1
SETB C
BCDSL: CLR A
ADDC A,#99H
SUBB A,@R0
ADD A,@R1
DA A
MOV @R1,A
DEC R0
DEC R1
DJNZ R2,BCDSL
RET
;-----------------
DELAY10MS: MOV delbuf0,#0BH;
LL1: MOV delbuf1,#0E4H;
LL0: NOP
NOP;
DJNZ delbuf1,LL0;
DJNZ delbuf0,LL1;
RET;v
;-----------------
allkey:mov p0,#0ffh
nop
nop
mov a,p0
cpl a
anl a,#0e0h
jnz allkey0
ret
allkey0:lcall delay10ms
lcall delay10ms
mov a,p0
cpl a
anl a,#0e0h
jnz allkey1
ret
allkey1:mov a,p0
mov keybuf,a
jb acc.5,keyb
keya:jnb acc.0,keyret
clr BIT_CT2DA
CLR BIT_HF
SETB BIT_JS
MOV TIMEJS,#0
clr JK2;lamp off
ret
keyb:jb acc.6,keyc
keyb0:jnb acc.1,keyret
clr BIT_CT2DB
CLR BIT_HF
SETB BIT_JS
MOV TIMEJS,#0
clr JK2;lamp off
ret
keyc:jb acc.7,keyret
keyc0:jnb acc.2,keyret
clr BIT_CT2DC
CLR BIT_HF
SETB BIT_JS
MOV TIMEJS,#0
clr JK2;lamp off
keyret:ret
;*******************************
END
;*******************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -