📄 main.asm
字号:
MOV A,@R1
MOV R2,#8
TOO:CLR SCLK
RRC A
MOV IO_DATA,C
NOP
SETB SCLK
DJNZ R2,TOO
RET
GET_KEYDATA3:
CLR TR1
MOV TIME_COUNTER,#0
CALL KEY_SCANF
MOV P1,#0C3H
KPt:MOV A,P3
JNB ACC.2,KPt
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
RET
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
movx A,@dptr
CLR ACC.7
MOV AC_ADD,A
XRL A,#05
JZ GO_6
MOV A,AC_ADD
XRL A,#06
JZ GO_8
MOV A,AC_ADD
XRL A,#08
JZ GO_9
MOV A,AC_ADD
XRL A,#9
JZ GO_13
MOV A,AC_ADD
XRL A,#13
JZ GO_14
MOV A,AC_ADD
XRL A,#14
JZ GO_16
MOV A,AC_ADD
XRL A,#16
JZ GO_17
MOV A,AC_ADD
XRL A,#17
JZ GO_69
MOV A,AC_ADD
XRL A,#69
JZ GO_70
MOV A,AC_ADD
XRL A,#70
JZ GO_72
MOV A,AC_ADD
XRL A,#72
JZ GO_73
MOV A,AC_ADD
XRL A,#73
JZ GO_77
MOV A,AC_ADD
XRL A,#77
JZ GO_78
MOV A,AC_ADD
XRL A,#78
JZ GO_80
MOV A,AC_ADD
XRL A,#80
JZ GO_81
MOV A,AC_ADD
XRL A,#81
JZ GO_5
GO_5:
MOV A,#LCD_SETDDADDR+5
CALL WRCMD
RET
GO_6:
MOV A,#LCD_SETDDADDR+6
CALL WRCMD
RET
GO_8:
MOV A,#LCD_SETDDADDR+8
CALL WRCMD
RET
GO_9:
MOV A,#LCD_SETDDADDR+9
CALL WRCMD
RET
GO_13:
MOV A,#LCD_SETDDADDR+13
CALL WRCMD
RET
GO_14:
MOV A,#LCD_SETDDADDR+14
CALL WRCMD
RET
GO_16:
MOV A,#LCD_SETDDADDR+16
CALL WRCMD
RET
GO_17:
MOV A,#LCD_SETDDADDR+17
CALL WRCMD
RET
GO_69:
MOV A,#LCD_SETDDADDR+69
CALL WRCMD
RET
GO_70:
MOV A,#LCD_SETDDADDR+70
CALL WRCMD
RET
GO_72:
MOV A,#LCD_SETDDADDR+72
CALL WRCMD
RET
GO_73:
MOV A,#LCD_SETDDADDR+73
CALL WRCMD
RET
GO_77:
MOV A,#LCD_SETDDADDR+77
CALL WRCMD
RET
GO_78:
MOV A,#LCD_SETDDADDR+78
CALL WRCMD
RET
GO_80:
MOV A,#LCD_SETDDADDR+80
CALL WRCMD
RET
GO_81:
MOV A,#LCD_SETDDADDR+81
CALL WRCMD
RET
LIFT:
mov dptr,#LCD_BUSY_RD
movx A,@dptr
CLR ACC.7
MOV AC_ADD,A
XRL A,#05
JZ GO_81
MOV A,AC_ADD
XRL A,#06
JZ GO_5
MOV A,AC_ADD
XRL A,#08
JZ GO_6
MOV A,AC_ADD
XRL A,#9
JZ GO_8
MOV A,AC_ADD
XRL A,#13
JZ GO_9
MOV A,AC_ADD
XRL A,#14
JZ GO_13
MOV A,AC_ADD
XRL A,#16
JZ GO_14
MOV A,AC_ADD
XRL A,#17
JZ GO_16
MOV A,AC_ADD
XRL A,#69
JZ GO_17
MOV A,AC_ADD
XRL A,#70
JZ GO_69
MOV A,AC_ADD
XRL A,#72
JZ GO_70
MOV A,AC_ADD
XRL A,#73
JZ GO_72
MOV A,AC_ADD
XRL A,#77
JZ GO_73
MOV A,AC_ADD
XRL A,#78
JZ GO_77
MOV A,AC_ADD
XRL A,#80
JZ GO_78
MOV A,AC_ADD
XRL A,#81
JZ GO_80
INCD:
call inc_
ret
DECD:
call dec_
ret
RD_WORK_TIME:
mov A,#LCD_SETVISIBLE+4
call wrcmd
MOV R1,#WORK_DATA
MOV R2,#5
CALL GET_DATA
CLR C
CJNE A,#24H,TTA
TTA:JC Y1
JMP UESLESS_DATA
Y1:MOV @R1,A
INC R1
MOV R2,#8
CALL GET_DATA
CLR C
CJNE A,#60H,TTB
TTB:JC Y2
JMP UESLESS_DATA
Y2:MOV @R1,A
INC R1
MOV R2,#13
CALL GET_DATA
CLR C
CJNE A,#24H,TTC
TTC:JC Y3
JMP UESLESS_DATA
Y3:MOV @R1,A
INC R1
MOV R2,#16
CALL GET_DATA
CLR C
CJNE A,#60H,TTD
TTD:JC Y4
JMP UESLESS_DATA
Y4:MOV @R1,A
INC R1
MOV R2,#69
CALL GET_DATA
CLR C
CJNE A,#24H,TTE
TTE:JC Y5
JMP UESLESS_DATA
Y5:MOV @R1,A
INC R1
MOV R2,#72
CALL GET_DATA
CLR C
CJNE A,#60H,TTF
TTF:JC Y6
JMP UESLESS_DATA
Y6:MOV @R1,A
INC R1
MOV R2,#77
CALL GET_DATA
CLR C
CJNE A,#24H,TTG
TTG:JC Y7
JMP UESLESS_DATA
Y7:MOV @R1,A
INC R1
MOV R2,#80
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 'please 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,#4
LP:MOV R7,#200
DJNZ R7,$
DJNZ R6,LP
RET
RET
NOP
NOP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -