📄 main.asm
字号:
CLR SCLK
SETB RST
MOV A,R5
MOV R2,#8
WR_D:CLR SCLK
RRC A
MOV IO_DATA,C
NOP
SETB SCLK
DJNZ R2,WR_D
MOV A,@R1
MOV R2,#8
TOO:CLR SCLK
RRC A
MOV IO_DATA,C
NOP
SETB SCLK
DJNZ R2,TOO
CLR RST
RET
GET_KEYDATA3:
CLR TR1 ;;SP=50,IE=09,TR0=0,TR1=0
MOV TIME1_CN,#0
MOV A,KEY_DATA
XRL A,#2
JZ MOVE_LIFTw
MOV A,KEY_DATA
XRL A,#3
JZ MOVE_RIGHTw
MOV A,KEY_DATA
XRL A,#4
JZ INC_1w
MOV A,KEY_DATA
XRL A,#5
JZ DEC_1w
MOV A,KEY_DATA
XRL A,#6
JZ ENTERw
jmp back2
MOVE_RIGHTW:
CALL RIGHT
JMP BACK2
MOVE_LIFTW:
CALL LIFT
JMP BACK2
INC_1W:
CALL INCD
JMP BACK2
DEC_1W:
CALL DECD
JMP BACK2
ENTERW:
CALL RD_WORK_TIME
CALL WR_WORK_TIME_TO_DSRAM
mov A,#LCD_SETVISIBLE
call wrcmd
POP ACC
POP ACC
JMP GO_START
RIGHT:
mov dptr,#LCD_BUSY_RD ;SP=52
movx A,@dptr
JB ACC.7,RIGHT
MOV AC_ADD,A
XRL A,#04
JZ GO_5
MOV A,AC_ADD
XRL A,#05
JZ GO_7
MOV A,AC_ADD
XRL A,#07
JZ GO_8
MOV A,AC_ADD
XRL A,#8
JZ GO_11
MOV A,AC_ADD
XRL A,#11
JZ GO_12
MOV A,AC_ADD
XRL A,#12
JZ GO_14
MOV A,AC_ADD
XRL A,#14
JZ GO_15
MOV A,AC_ADD
XRL A,#15
JZ GO_68
MOV A,AC_ADD
XRL A,#68
JZ GO_69
MOV A,AC_ADD
XRL A,#69
JZ GO_71
MOV A,AC_ADD
XRL A,#71
JZ GO_72
MOV A,AC_ADD
XRL A,#72
JZ GO_75
MOV A,AC_ADD
XRL A,#75
JZ GO_76
MOV A,AC_ADD
XRL A,#76
JZ GO_78
MOV A,AC_ADD
XRL A,#78
JZ GO_79
MOV A,AC_ADD
XRL A,#79
JZ GO_4
GO_4:
MOV A,#LCD_SETDDADDR+4
CALL WRCMD
RET
GO_5:
MOV A,#LCD_SETDDADDR+5
CALL WRCMD
RET
GO_7:
MOV A,#LCD_SETDDADDR+7
CALL WRCMD
RET
GO_8:
MOV A,#LCD_SETDDADDR+8
CALL WRCMD
RET
GO_11:
MOV A,#LCD_SETDDADDR+11
CALL WRCMD
RET
GO_12:
MOV A,#LCD_SETDDADDR+12
CALL WRCMD
RET
GO_14:
MOV A,#LCD_SETDDADDR+14
CALL WRCMD
RET
GO_15:
MOV A,#LCD_SETDDADDR+15
CALL WRCMD
RET
GO_68:
MOV A,#LCD_SETDDADDR+68
CALL WRCMD
RET
GO_69:
MOV A,#LCD_SETDDADDR+69
CALL WRCMD
RET
GO_71:
MOV A,#LCD_SETDDADDR+71
CALL WRCMD
RET
GO_72:
MOV A,#LCD_SETDDADDR+72
CALL WRCMD
RET
GO_75:
MOV A,#LCD_SETDDADDR+75
CALL WRCMD
RET
GO_76:
MOV A,#LCD_SETDDADDR+76
CALL WRCMD
RET
GO_78:
MOV A,#LCD_SETDDADDR+78
CALL WRCMD
RET
GO_79:
MOV A,#LCD_SETDDADDR+79
CALL WRCMD
RET
LIFT:
mov dptr,#LCD_BUSY_RD
movx A,@dptr
JB ACC.7,LIFT
MOV AC_ADD,A
XRL A,#04
JZ GO_79
MOV A,AC_ADD
XRL A,#05
JZ GO_4
MOV A,AC_ADD
XRL A,#07
JZ GO_5
MOV A,AC_ADD
XRL A,#8
JZ GO_7
MOV A,AC_ADD
XRL A,#11
JZ GO_8
MOV A,AC_ADD
XRL A,#12
JZ GO_11
MOV A,AC_ADD
XRL A,#14
JZ GO_12
MOV A,AC_ADD
XRL A,#15
JZ GO_14
MOV A,AC_ADD
XRL A,#68
JZ GO_15
MOV A,AC_ADD
XRL A,#69
JZ GO_68
MOV A,AC_ADD
XRL A,#71
JZ GO_69
MOV A,AC_ADD
XRL A,#72
JZ GO_71
MOV A,AC_ADD
XRL A,#75
JZ GO_72
MOV A,AC_ADD
XRL A,#76
JZ GO_75
MOV A,AC_ADD
XRL A,#78
JZ GO_76
MOV A,AC_ADD
XRL A,#79
JZ GO_78
INCD:
call inc_
ret
DECD:
call dec_
ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
RD_WORK_TIME:
mov A,#LCD_SETVISIBLE+4
call wrcmd
MOV R1,#WORK_DATA
MOV R2,#4
CALL GET_DATA
CLR C
CJNE A,#24H,TTA
TTA:JC Y1
JMP UESLESS_DATA
Y1:MOV @R1,A
INC R1
MOV R2,#7
CALL GET_DATA
CLR C
CJNE A,#60H,TTB
TTB:JC Y2
JMP UESLESS_DATA
Y2:MOV @R1,A
INC R1
MOV R2,#11
CALL GET_DATA
CLR C
CJNE A,#24H,TTC
TTC:JC Y3
JMP UESLESS_DATA
Y3:MOV @R1,A
INC R1
MOV R2,#14
CALL GET_DATA
CLR C
CJNE A,#60H,TTD
TTD:JC Y4
JMP UESLESS_DATA
Y4:MOV @R1,A
INC R1
MOV R2,#68
CALL GET_DATA
CLR C
CJNE A,#24H,TTE
TTE:JC Y5
JMP UESLESS_DATA
Y5:MOV @R1,A
INC R1
MOV R2,#71
CALL GET_DATA
CLR C
CJNE A,#60H,TTF
TTF:JC Y6
JMP UESLESS_DATA
Y6:MOV @R1,A
INC R1
MOV R2,#75
CALL GET_DATA
CLR C
CJNE A,#24H,TTG
TTG:JC Y7
JMP UESLESS_DATA
Y7:MOV @R1,A
INC R1
MOV R2,#78
CALL GET_DATA
CLR C
CJNE A,#60H,TTH
TTH:JNC UESLESS_DATA
MOV @R1,A
RET
UESLESS_DATA:
SETB UESLESS_BIT
UESLESS_DISPLAY:
mov A,#LCD_SETVISIBLE
call wrcmd
MOV A,#LCD_SETDDADDR
CALL WRCMD
MOV DPTR,#UESLESS_STR1
CALL WRSTR2
MOV A,#LCD_SETDDADDR+64
CALL WRCMD
MOV DPTR,#UESLESS_STR2
CALL WRSTR2
MOV A,#LCD_SETVISIBLE+4
CALL WRCMD
MOV R5,#250
RE_CALL:CALL DELAY8MS
DJNZ R5,RE_CALL
POP ACC
POP ACC
JB UESLESS_BIT,TO_DUAN_PRESS
MOV LCD_STAT,#2
JMP GO_START
TO_DUAN_PRESS:JMP duan_press
;#############################
wrstr2:
clr a
movc a,@a+dptr
jz exit2
push dpl
push dph
mov dptr,#LCD_DATA_WR
movx @dptr,A
call wtbusy
pop dph
pop dpl
inc dptr
jmp wrstr2
exit2:ret
UESLESS_STR1:
DB ' Uesless time! '
db 0
UESLESS_STR2:
db ' Enter again!! '
db 0
GET_DATA:
MOV A,R2
ADD A,#80H
CALL WRCMD
CALL RD_DATA
CLR C
SUBB A,#48
SWAP A
MOV AC_DATA,A
CALL RD_DATA
CLR C
SUBB A,#48
ORL A,AC_DATA
RET
RD_DATA:MOV DPTR,#LCD_DATA_RD
MOVX A,@DPTR
RET
WR_WORK_TIME_TO_DSRAM:
MOV R5,#0CEH
MOV R1,#WORK_DATA
CALL WR_DATA_DS
MOV R5,#0CCH
MOV R1,#WORK_DATA+1
CALL WR_DATA_DS
MOV R5,#0CAH
MOV R1,#WORK_DATA+2
CALL WR_DATA_DS
MOV R5,#0C8H
MOV R1,#WORK_DATA+3
CALL WR_DATA_DS
MOV R5,#0C6H
MOV R1,#WORK_DATA+4
CALL WR_DATA_DS
MOV R5,#0C4H
MOV R1,#WORK_DATA+5
CALL WR_DATA_DS
MOV R5,#0C2H
MOV R1,#WORK_DATA+6
CALL WR_DATA_DS
MOV R5,#0C0H
MOV R1,#WORK_DATA+7
CALL WR_DATA_DS
MOV R5,#0D0H
MOV R1,#WORK_DATA+7
CALL WR_DATA_DS
CLR RST
RET
COMPAIR: NOP
com_work1: clr a
orl a,s1_hour_data
orl a,s1_minu_data
orl a,t1_hour_data
orl a,t1_minu_data
jz com_work2
mov a,hour
xrl a,s1_hour_data
jnz com_stop1_time
mov a,minu
xrl a,s1_minu_data
jnz com_stop1_time
clr p3.4
com_stop1_time:
mov a,hour
xrl a,t1_hour_data
jnz com_work2
mov a,minu
xrl a,t1_minu_data
jnz com_work2
setb p3.4
com_work2: clr a
orl a,s2_hour_data
orl a,s2_minu_data
orl a,t2_hour_data
orl a,t2_hour_data
jz quit_compair
mov a,hour
xrl a,s2_hour_data
jnz com_stop2_time
mov a,minu
xrl a,s2_minu_data
jnz com_stop2_time
clr p3.4
com_stop2_time:
mov a,hour
xrl a,t2_hour_data
jnz quit_compair
mov a,minu
xrl a,t2_minu_data
jnz quit_compair
setb p3.4
quit_compair:
ret
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8ms delay program
DELAY8MS:
MOV R6,#5
LP:MOV R7,#200
DJNZ R7,$
DJNZ R6,LP
RET
RET
NOP
NOP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -