📄 lcd1602定时控制.asm
字号:
RS EQU P2.0
RW EQU P2.1
E EQU P2.2
D0_D7 EQU P0
BEEP BIT P3.7
ORG 0000H
AJMP READY
ORG 000BH
AJMP INT_0
ORG 001BH
AJMP INT_1
;30H-37H 循环显示
;3AH键值 3BH是否已进入设置状态
;40H-47H TIME0
;48H-4FH TIME1
;50H-57H TIME2
;58H-5FH TIME3
INT_READY:MOV IE,#8AH
MOV TMOD,#11H
MOV TH0,#4CH
MOV TL0,#00H
MOV TH1,#00H
MOV TL1,#00H
SETB TR0
SETB TR1
RET
INT_0:MOV TH0,#4CH
MOV TL0,#00H
PUSH ACC
INC 38H
MOV A,38H
CJNE A,#20D,INT_0_EXIT
MOV 38H,#00H
AJMP TIME_0
;************************************
INT_0_EXIT:
POP ACC
RETI
;*************************************
TIME_0: MOV A,44H
CJNE A,#01H,TIME_1
DEC 45H
MOV A,45H
CJNE A,#0FFH,CHECK0
MOV 45H,#59D
DEC 43H
MOV A,43H
CJNE A,#0FFH,CHECK0
MOV 43H,#59D
DEC 42H
MOV A,42H
CJNE A,#0FFH,CHECK0
MOV 42H,#99D
CHECK0: MOV A,#00H
ADD A,45H
ADD A,43H
ADD A,42H
CJNE A,#00H,TIME_0_EXIT
MOV 44H,#00H
MOV C,00H
CPL C
MOV 00H,C
MOV P2.7,C
MOV A,41H
CJNE A,#01H,NO_BEEP0
MOV 64H,#01H
AJMP TIME_0_EXIT
NO_BEEP0:MOV 64H,#00H
TIME_0_EXIT:MOV A,3EH
CJNE A,#01H,TIME_1
MOV R1,#40H
LCALL DISP_DATA_LOOP
;************************************
TIME_1: MOV A,4CH
CJNE A,#01H,TIME_2
DEC 4DH
MOV A,4DH
CJNE A,#0FFH,CHECK1
MOV 4DH,#59D
DEC 4BH
MOV A,4BH
CJNE A,#0FFH,CHECK1
MOV 4BH,#59D
DEC 4AH
MOV A,4AH
CJNE A,#0FFH,CHECK1
MOV 4AH,#99D
CHECK1: MOV A,#00H
ADD A,4DH
ADD A,4BH
ADD A,4AH
CJNE A,#00H,TIME_1_EXIT
MOV 4CH,#00H
MOV C,01H
CPL C
MOV 01H,C
MOV P2.6,C
MOV A,49H
CJNE A,#01H,NO_BEEP1
MOV 64H,#01H
AJMP TIME_1_EXIT
NO_BEEP1:MOV 64H,#00H
TIME_1_EXIT:MOV A,3EH
CJNE A,#02H,TIME_2
MOV R1,#48H
LCALL DISP_DATA_LOOP
AJMP TIME_2
;************************************
TIME_2: MOV A,54H
CJNE A,#01H,TIME_3
DEC 55H
MOV A,55H
CJNE A,#0FFH,CHECK2
MOV 55H,#59D
DEC 53H
MOV A,53H
CJNE A,#0FFH,CHECK2
MOV 53H,#59D
DEC 52H
MOV A,52H
CJNE A,#0FFH,CHECK2
MOV 52H,#99D
CHECK2: MOV A,#00H
ADD A,55H
ADD A,53H
ADD A,52H
CJNE A,#00H,TIME_2_EXIT
MOV 54H,#00H
MOV C,02H
CPL C
MOV 02H,C
MOV P2.5,C
MOV A,51H
CJNE A,#01H,NO_BEEP2
MOV 64H,#01H
AJMP TIME_2_EXIT
NO_BEEP2:MOV 64H,#00H
TIME_2_EXIT:MOV A,3EH
CJNE A,#03H,TIME_3
MOV R1,#50H
LCALL DISP_DATA_LOOP
;************************************
TIME_3: MOV A,5CH
CJNE A,#01H,EXIT_INT_0
DEC 5DH
MOV A,5DH
CJNE A,#0FFH,CHECK3
MOV 5DH,#59D
DEC 5BH
MOV A,5BH
CJNE A,#0FFH,CHECK3
MOV 5BH,#59D
DEC 5AH
MOV A,5AH
CJNE A,#0FFH,CHECK3
MOV 5AH,#99D
CHECK3: MOV A,#00H
ADD A,5DH
ADD A,5BH
ADD A,5AH
CJNE A,#00H,TIME_3_EXIT
MOV 5CH,#00H
MOV C,03H
CPL C
MOV 03H,C
MOV P2.4,C
MOV A,59H
CJNE A,#01H,NO_BEEP3
MOV 64H,#01H
AJMP TIME_3_EXIT
NO_BEEP3:MOV 64H,#00H
TIME_3_EXIT:MOV A,3EH
CJNE A,#04H,EXIT_INT_0
MOV R1,#58H
LCALL DISP_DATA_LOOP
EXIT_INT_0: AJMP INT_0_EXIT
;********************************************************
INT_1:PUSH ACC
INC 3DH
MOV A,3DH
CJNE A,#50D,INT_1_EXIT
MOV 3DH,#00H
INC 3EH
MOV A,3EH
;****************************************
DISP_TIME0:CJNE A,#01H,DISP_TIME1
MOV R1,#40H
LCALL DISP_DATA_LOOP
AJMP INT_1_EXIT
;****************************************
DISP_TIME1:CJNE A,#02H,DISP_TIME2
MOV R1,#48H
LCALL DISP_DATA_LOOP
AJMP INT_1_EXIT
;****************************************
DISP_TIME2:CJNE A,#03H,DISP_TIME3
MOV R1,#50H
LCALL DISP_DATA_LOOP
AJMP INT_1_EXIT
;****************************************
DISP_TIME3:CJNE A,#04H,CLR_TIME
MOV R1,#58H
LCALL DISP_DATA_LOOP
AJMP INT_1_EXIT
;****************************************
CLR_TIME:MOV 3EH,#01H
MOV A,3EH
AJMP DISP_TIME0
;****************************************
INT_1_EXIT:POP ACC
MOV TH1,#00H
MOV TL1,#00H
RETI
;****************************************
DISP_DATA_LOOP:MOV R2,#8D
MOV R0,#30H
LOOP0: MOV A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,LOOP0
RET
;*****************************************************************
READY:MOV A,#00111000B ;功能设置指令,8位接口,显示2行,5×7字符
LCALL WriteIR ;调写指令寄存器子程序
MOV A,#00001100B ;显示开关控制指令,显示器开,光标开,光标闪烁
LCALL WriteIR
MOV A,#00000110B ;输入方式设置指令,字符不动,光标自动右移一格
LCALL WriteIR
MOV A,#00000001B ;清屏指令,将DDRAM数据全部填入"空白"
LCALL WriteIR
;**************** 显示make of pp,time Time Controller
MOV A,#10000000B
LCALL WRITEIR
MOV DPTR,#DATA3
LCALL LCD_DISP
MOV A,#11000000B
LCALL WRITEIR
MOV DPTR,#DATA0
LCALL LCD_DISP
;****************
MOV R4,#00H
LCALL DELAY
;****************
MOV 30H,#00H ;mode
MOV 31H,#00H ;beep
MOV 32H,#00H ;小时
MOV 33H,#00H ;分钟
MOV 34H,#00H ;是否已开启
MOV 35H,#00H ;秒
MOV 36H,#3AH ;冒号
MOV 37H,#01H ;序号
MOV 38H,#00H ;定时器0计时
MOV 39H,#01H ;循环显示状态还是设置状态
MOV 3CH,#00H ;按键
MOV 3DH,#00H ; 定时器1计时
MOV 3EH,#01H ;定时器1
MOV 3BH,#00H
MOV 60H,#40H
MOV SP,#70H
MOV R2,#32D
MOV R0,#40H
DATA_LOOP:MOV @R0,#00H
INC R0
DJNZ R2,DATA_LOOP
MOV 46H,#3AH
MOV 47H,#01H
MOV 4EH,#3AH
MOV 4FH,#02H
MOV 56H,#3AH
MOV 57H,#03H
MOV 5EH,#3AH
MOV 5FH,#04H
MOV A,#00000001B ;清屏指令,将DDRAM数据全部填入"空白"
LCALL WriteIR
LCALL INT_READY
;*************************
MAIN:LCALL DISP
LCALL KEY
LCALL KEY1
MOV A,64H
CJNE A,#01H,MAIN
MOV 64H,#00H
ACALL BEEP_BL
ACALL BEEP_BL
ACALL BEEP_BL
ACALL BEEP_BL
AJMP MAIN
;*************************
;----------------------------------------------
;蜂鸣器响一声子程序
;----------------------------------------------
BEEP_BL:
MOV R6,#50
BL1: CALL DEX1
CPL BEEP
DJNZ R6,BL1
MOV R5,#10
CALL DELAY2
RET
DEX1: MOV R7,#180
DEX2: NOP
DJNZ R7,DEX2
RET
DELAY2: ;延时R5×10MS
MOV R6,#50
DELAY1: MOV R7,#100
DJNZ R7,$
DJNZ R6,DELAY1
DJNZ R5,DELAY2
RET
;----------------------------------------------------
KEY1:MOV P1,#0FFH
MOV A,P1
ANL A,#00001111B
CJNE A,#00001111B,KEY1_PANDUAN
KEY1_EXIT: RET
KEY1_PANDUAN:MOV 3AH,A
MOV R4,#15D
LCALL DELAY
MOV A,P1
ANL A,#00001111B
CJNE A,3AH,KEY1_EXIT
LCALL KEY1_CHULI
LCALL BEEP_BL
RET
KEY1_CHULI:CJNE A,#00001110B,KEY1_2
MOV 44H,#00H
MOV C,00H
CPL C
MOV 00H,C
MOV P2.7,C
KEY1_2: CJNE A,#00001101B,KEY1_3
MOV 4CH,#00H
MOV C,01H
CPL C
MOV 01H,C
MOV P2.6,C
KEY1_3: CJNE A,#00001011B,KEY1_4
MOV 54H,#00H
MOV C,02H
CPL C
MOV 02H,C
MOV P2.5,C
KEY1_4: CJNE A,#00000111B,KEY1_CHULI_EXIT
MOV 5CH,#00H
MOV C,03H
CPL C
MOV 03H,C
MOV P2.4,C
KEY1_CHULI_EXIT: RET
;********************************************
DISP:
MOV A,#10000000B
LCALL WRITEIR
MOV A,37H
ADD A,#48D
LCALL WRITEDDR ;显示序号
MOV A,#10000010B
LCALL WriteIR
MOV DPTR,#DATA1
LCALL LCD_DISP
MOV A,30H
ADD A,#48D
LCALL WRITEDDR ;显示“mode:0/1"
MOV A,#10001001B
LCALL WriteIR
MOV DPTR,#DATA2
LCALL LCD_DISP
MOV A,31H
ADD A,#48D
LCALL WRITEDDR ;显示“beep:0/1"
MOV A,#11000010B
LCALL WRITEIR
MOV A,32H
MOV B,#10D
DIV AB
ADD A,#48D
LCALL WRITEDDR
MOV A,B
ADD A,#48D
LCALL WRITEDDR
MOV A,36H
LCALL WRITEDDR
MOV A,33H
MOV B,#10D
DIV AB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -