📄 计时.txt
字号:
ANJIAN3:
CJNE A,#04H,BACK3 ;是否是减一键,返回
LCALL JIANJIAN ;是,调减一子程序
BACK3:
MOV KEYB, #07FH
RET
*****************功能键GONGNENG*****************
GONGNENG:
JB MB,AA2 ;是否为菜单态,否转AA2
AA1:
LCALL DISPLAY ;等待按键松开
JNB P1.1,AA1
SETB MB ;设菜单标识
MOV QUEDB,#00H ;显示菜单
MOV MENUB,#30H
LCALL WWW
AJMP BACK5
AA2:
LCALL PLAY ;等待按键送开返回
JNB P1.1,AA2
CLR MB
BACK5:
RET
***************加一键JIAJIAN**************
JIAJIAN:
JNB MB,BACK6 ;是否为菜单键,否返回
BB1:
LCALL PLAY ;等待按键送开
JNB P1.2,BB1
MOV A,QUEDB ;是否为初始菜单,否转BB2
CJNE A,#00H,BB2
MOV A,MENUB ;是,显示下一级菜单
CJNE A,#3FH,BB11
MOV MENUB,#30H
SJMP BB12
BB11:
ADD A,#05H
MOV MENUB,A
BB12:
LCALL WWW
AJMP BACK6
BB2:
CJNE A,#03H,BB3 ;是否为取消闹钟菜单,否转BB3
BB20:
MOV A,NAOB ;显示下一个存储的闹钟
CJNE A,#62H,BB21
MOV A,#50H
SJMP BB22
BB21:
ADD A,#02H
BB22:
MOV NAOB,A
MOV R0,NAOB
MOV A,@R0
CJNE A,#0FFH,BB23
SJMP BB20
BB23:
MOV R0,NAOB
CLR SI
LCALL DISPLAY1
AJMP BACK6
BB3:
JB SB,BB31 ;是否为调分钟位?是转BB31
JNB HB,BB300 ;否,小时位加一显示
LCALL HUANWEI
CLR HB
BB300:
MOV A,0BH
CJNE A,#02H,BB30
INC 0CH
MOV A,0CH
CJNE A,#05H,BACK6
MOV 0BH,#00H
MOV 0CH,#00H
SJMP BACK6
BB30:
INC 0CH
MOV A,0CH
CJNE A,#0AH,BACK6
MOV 0CH,#00H
INC 0BH
BACK6:
RET
BB31:
JNB HB,BB311 ;分钟位加一显示
LCALL HUANWEI
CLR HB
BB311:
INC 0FH
MOV A,0FH
CJNE A,#0AH,BACK6
MOV 0FH,#00H
INC 0EH
MOV A,0EH
CJNE A,#06H,BACK6
MOV 0EH,#00H
RET
*********************减一键JIANIAN********************
JIANJIAN:
JNB MB,BACK7 ;是否菜单态,否返回
CC1:
LCALL PLAY ;是,等待按键松开
JNB P1.4,CC1
MOV A,QUEDB
CJNE A,#00H,CC2 ;是否为初始菜单,否转CC2
MOV A,MENUB ;是,显示下一级菜单
CJNE A,#30H,CC11
MOV MENUB,#3FH
SJMP CC12
CC11:
MOV A,MENUB
SUBB A,#05H
MOV MENUB,A
CC12:
LCALL WWW
LJMP BACK7
CC2:
CJNE A,#03H,CC3 ;是否为取消闹钟菜单,否转CC3
CC20:
MOV A,NAOB ;显示下一个存储的闹钟
CJNE A,#50H,CC21
MOV A,#62H
SJMP CC22
CC21:
SUBB A,#02H
CC22:
MOV NAOB,A
MOV R0,NAOB
MOV A,@R0
CJNE A,#0FFH,CC23
SJMP CC20
CC23:
MOV R0,NAOB
CLR SI
LCALL DISPLAY1
LJMP BACK7
CC3:
JB SB,CC32 ;是否为调分钟位?是转CC32
JNB HB,CC30 ;否,小时位加一显示
LCALL HUANWEI
CLR HB
CC30:
MOV A,0CH
CJNE A,#00H,CC300
MOV A,0BH
CJNE A,#00H,CC31
MOV 0BH,#02H
MOV 0CH,#04H
SJMP BACK7
CC300:
DEC 0CH
SJMP BACK7
CC31:
MOV 0CH,#09H
DEC 0BH
BACK7:
RET
CC32:
JNB HB,CC320 ;分钟位加一显示
LCALL HUANWEI
CLR HB
CC320:
MOV A,0FH
CJNE A,#00H,CC33
MOV A,0EH
CJNE A,#00H,CC34
MOV 0EH,#05H
MOV 0FH,#09H
RET
CC33:
DEC 0FH
RET
CC34:
MOV 0FH,#09H
DEC 0EH
RET
****************确定键QUEDING****************
QUEDING:
JNB MB,BACK8 ;是否为菜单态,否返回
DD1:
LCALL PLAY ;等待按键送开
JNB P1.3,DD1
MOV A,QUEDB ;是否为初始菜单,否转DD2
CJNE A,#00H,DD2
MOV A,MENUB ;是,是否进入设时钟功能
CJNE A,#30H,DD11 ;转DD11
MOV QUEDB,#01H ;是,进入时钟功能
CLR SB
CLR SI
LCALL DISPLAY ;显示当前时钟,准备调时
LJMP BACK8
DD11:
CJNE A,#35H,DD12 ;是否进入闹钟设定功能
MOV QUEDB,#02H ;否转DD12
CLR SB ;是,进入闹钟设定功能
MOV 0BH,#00H ;显示“00-00”,准备调时
MOV 0CH,#00H
MOV 0DH,#10H
MOV 0EH,#00H
MOV 0FH,#00H
LJMP BACK8
DD12:
CJNE A,#3AH,DD13 ;是否进入闹钟取消功能
MOV QUEDB,#03H ;否,转DD13
MOV R0,#4EH ;是,进入闹钟取消功能
MOV R1,#0AH ;显示存储的一个闹钟
DD121:
INC R0
INC R0
MOV A,@R0
CJNE A,#0FFH,PPP
DJNZ R1,DD121
MOV 0BH,#11H ;如果没有存储闹钟,显示“NULL”
MOV 0CH,#14H
MOV 0DH,#15H
MOV 0EH,#13H
MOV 0FH,#13H
LCALL DL2S ;显示两秒,返回
CLR MB
LJMP BACK8
PPP:
MOV NAOB,R0 ;有存储,显示存储的一个闹钟
CLR SI
LCALL DISPLAY1
BACK8:
RET
DD13:
CJNE A,#3FH,BACK8 ;是否进入秒表计时功能,否返回
MOV QUEDB,#04H ;是,设标识,显示“00-00”
MOV 0BH,#00H
MOV 0CH,#00H
MOV 0DH,#10H
MOV 0EH,#00H
MOV 0FH,#00H
LJMP BACK8
DD2:
CJNE A,#01H,DD3 ;是否是设时钟中,否转DD3
JB SB,DD21 ;是,是否是分调,是转DD21
JNB HB,DD20 ;否,进入分调状态
LCALL HUANWEI
CLR HB
DD20:
SETB SB
RET
DD21:
JNB HB,DD211 ;保存设定的时间
LCALL HUANWEI
CLR HB
MOV 16H,#11H
MOV 17H,#11H
DD211:
MOV A,0BH
MOV B,#0AH
MUL AB
ADD A,0CH
MOV HOUR,A
MOV A,0EH
MOV B,#0AH
MUL AB
ADD A,0FH
MOV MIN,A
CLR TR0 ;重设定时器,开始显示
MOV MSEC,#00H
MOV TL0,#0F0H
MOV TH0,#0D8H
MOV SEC,#00H
SETB TR0
CLR MB
MOV 16H,#11H
MOV 17H,#11H
RET
DD3:
CJNE A,#02H,DD4 ;是否在闹钟设置功能中,否转DD4
JB SB,DD31 ;是,是否为分调,是转DD31
SETB SB ;否,开始进入分调
RET
DD31:
MOV R1,#4EH ;寻找空位,存储设定的闹钟
MOV R3,#0BH
DD311: DJNZ R3,DD32 ;没有空位,显示“ FULL”,返回
MOV 0BH,#11H
MOV 0CH,#0FH
MOV 0DH,#15H
MOV 0EH,#13H
MOV 0FH,#13H
LCALL DL2S
SJMP DD33
DD32:
INC R1
INC R1
MOV A,@R1
CJNE A,#0FFH,DD311
MOV A,0BH ;找到空位转换存储
MOV B,#0AH
MUL AB
ADD A,0CH
MOV @R1,A
MOV A,0EH
MUL AB
ADD A,0FH
INC R1
MOV @R1,A
DD33:
CLR MB
LJMP BACK81
DD4:
CJNE A,#03H,DD5 ;是否为取消闹钟态,否转DD5
MOV R1,NAOB ;把当前设定闹钟单元清空
MOV @R1,#0FFH
LNC R1
MOV @R1,#0FFH
CLR MB
LJMP BACK81
DD5:
CJNE A,#04H,DD6 ;是否为秒表功能,否转DD6
MOV QUEDB,#05H ;设定秒表计时开始标志
SETB PB
LJMP BACK81
DD6:
CJNE A,#05H,DD7 ;是否为秒表计时中,否转DD7
CLR PB ;是,停止秒表计时,显示数据
LJMP BACK81
DD7:
CLR MB ;退出秒表功能,返回
BACK81:
RET
***************菜单显示WWW******************
WWW:
MOV R2,#05H ;菜单显示
MOV R0,MENUB
MOV R1,#0BH
WW:
MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R2,WW
RET
****************闪烁HUANWEI **************
HUANWEI:
JB SB,HUANWEI1 ;时钟设定闪烁
MOV A,16H
XCH A,0BH
MOV 16H,A
MOV A,17H
XCH A,0CH
MOV 17H,A
SJMP BACK9
HUANWEI1:
MOV A,16H
XCH A,0EH
MOV 16H,A
MOV A,17H
XCH A,0FH
MOV 17H,A
BACK9:
RET
**********闹钟子程序NAOZHONG *************
NAOZHONG: CLR P1.7
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -