📄 带02的密码验证修改.asm
字号:
;周 1-7 6CH 45H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
YEAR: ;年的限制00-99,所以不用限制
JNB 28H,YEARL
MOV 60H,5EH
MOV 3EH,5DH
YEARL: MOV 61H,5EH ;年的低位
MOV 3FH,5DH
MOV A,3EH
SWAP A
ANL A, 3FH
MOV 46H, A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
YUE: ;月的限制,月份为1-12
JNB 28H,YUEL
MOV 3EH,5DH
mov A,3EH
CJNE A,#00H,YUE1
MOV 62H,5EH
YUE1: CJNE A,#01H,TUI0
MOV 62H,5EH
YUEL: ;月低位的限制
MOV 3FH,5DH
MOV A,3EH
SWAP A
ANL A,3FH
JZ TUI0
CLR C
SUBB A,#0DH
JNC TUI0
MOV 63H,5EH
MOV 44H,A
TUI0: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATE: ;日期限制01-31
JNB 28H,DATEL
MOV 3EH,5DH
mov A,3EH
CJNE A,#00H,DATE1
MOV 64H,5EH
DATE1: CJNE A,#01H,DATE2
MOV 64H,5EH
DATE2: CJNE A,#02H,DATE3
MOV 64H,5EH
DATE3: CJNE A,#03H,TUI1
MOV 64H,5EH
DATEL: ;日低位的限制
MOV 3FH,5DH
MOV A,3EH
SWAP A
ANL A,3FH
JZ TUI1
CLR C
SUBB A,#20H
JNC TUI1
MOV 65H,5EH
MOV 43H,A
TUI1: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HOUR: ;小时限制00-23
JNB 28H,HOURL
MOV 3EH,5DH
mov A,3EH
CJNE A,#00H,HOUR1
MOV 66H,5EH
HOUR1: CJNE A,#01H,HOUR2
MOV 66H,5EH
HOUR2: CJNE A,#02H,TUI2
MOV 66H,5EH
HOURL: ;小时低位的限制
MOV 3FH,5DH
MOV A,3EH
SWAP A
ANL A,3FH
CLR C
SUBB A,#18H
JNC TUI2
MOV 67H,5EH
MOV 42H,A
TUI2: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FEN: ;分钟限制00-59
JNB 28H,FENL
MOV 3EH,5DH
mov A,3EH
CJNE A,#00H,FEN1
MOV 68H,5EH
FEN1: CJNE A,#01H,FEN2
MOV 68H,5EH
FEN2: CJNE A,#02H,FEN3
MOV 68H,5EH
FEN3: CJNE A,#03H,FEN4
MOV 68H,5EH
FEN4: CJNE A,#04H,FEN5
MOV 68H,5EH
FEN5: CJNE A,#05H,TUI3
MOV 68H,5EH
FENL: ;分钟低位的限制
MOV 3FH,5DH
MOV A,3EH
SWAP A
ANL A,3FH
CLR C
SUBB A,#3cH
JNC TUI3
MOV 69H,5EH
MOV 41H,A
TUI3: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MIAO: ;秒限制00-59
JNB 28H,MIAOL
MOV 3EH,5DH
mov A,3EH
CJNE A,#00H,MIAO1
MOV 6AH,5EH
MIAO1: CJNE A,#01H,MIAO2
MOV 6AH,5EH
MIAO2: CJNE A,#02H,MIAO3
MOV 6AH,5EH
MIAO3: CJNE A,#03H,MIAO4
MOV 6AH,5EH
MIAO4: CJNE A,#04H,MIAO5
MOV 6AH,5EH
MIAO5: CJNE A,#05H,TUI4
MOV 6AH,5EH
MIAOL: ;秒低位的限制
MOV 3FH,5DH
MOV A,3EH
SWAP A
ANL A,3FH
CLR C
SUBB A,#3cH
JNC TUI4
MOV 6BH,5EH
MOV 40H,A
TUI4: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ZHOU: ;01-07
mov 3EH,5DH
MOV A,3EH
JZ TUI5
CLR C
SUBB A,#08
JNC TUI5
MOV 6CH,5EH
MOV 45H,5DH
TUI5: RET
;/////////////////////////////////////////////////////////////////
;********************************************************
NEWTIME:
MOV 60H,#2AH
MOV 61H,#2AH
MOV 62H,#2AH
MOV 63H,#2AH
MOV 64H,#2AH
MOV 65H,#2AH
MOV 66H,#2AH
MOV 67H,#2AH
MOV 68H,#2AH
MOV 69H,#2AH
MOV 6AH,#2AH
MOV 6BH,#2AH
MOV 6CH,#2AH
MOV COM,#01H ;清除屏幕显示
LCALL WRI
LCALL DELAY10
MOV COM,#81H ;从第2行开始显示
LCALL WRI
MOV DATT,#0D0H ;显示"修"
LCALL WRD
MOV DATT,#0DEH
LCALL WRD
MOV COM,#82H
LCALL WRI
MOV DATT,#0B8H ;显示"改"
LCALL WRD
MOV DATT,#0C4H
LCALL WRD
MOV COM,#83H
LCALL WRI
MOV DATT,#0CAH ;显示"时"
LCALL WRD
MOV DATT,#0B1H
LCALL WRD
MOV COM,#84H
LCALL WRI
MOV DATT,#0BCH ;显示"间"
LCALL WRD
MOV DATT,#0E4H
LCALL WRD
MOV COM,#85H
LCALL WRI
MOV DATT,#0C4H ;显示"模"
LCALL WRD
MOV DATT,#0A3H
LCALL WRD
MOV COM,#86H
LCALL WRI
MOV DATT,#0CAH ;显示"式"
LCALL WRD
MOV DATT,#0BDH
LCALL WRD
MOV COM,#89H ;由89H地址开始显示,99H
LCALL WRI
MOV DATT,60H
LCALL WRD
MOV DATT,61H
LCALL WRD
MOV COM,#8AH ;由8AH地址开始显示,9AH
LCALL WRI
MOV DATT,#0C4H ;显示 "年'
LCALL WRD
MOV DATT,#0EAH
LCALL WRD
MOV COM,#8BH ;由8BH地址开始显示,9BH
LCALL WRI
MOV DATT,62H
LCALL WRD
MOV DATT,63H
LCALL WRD
MOV COM,#8CH ;由8CH地址开始显示,9CH
LCALL WRI
MOV DATT,#0D4H ;显示"月"
LCALL WRD
MOV DATT,#0C2H
LCALL WRD
MOV COM,#8DH ;由8DH地址开始显示,9DH
LCALL WRI
MOV DATT,64H
LCALL WRD
MOV DATT,65H
LCALL WRD
MOV COM,#8EH ;由8EH地址开始显示,9EH
LCALL WRI
MOV DATT,#0C8H ;显示"日"
LCALL WRD
MOV DATT,#0D5H
LCALL WRD
MOV COM,#91H ;由89H地址开始显示,99H
LCALL WRI
MOV DATT,66H
LCALL WRD
MOV DATT,67H
LCALL WRD
MOV COM,#92H ;由8AH地址开始显示,9AH
LCALL WRI
MOV DATT,#0CAH ;显示 "时'
LCALL WRD
MOV DATT,#0B1H
LCALL WRD
MOV COM,#93H ;由8BH地址开始显示,9BH
LCALL WRI
MOV DATT,68H
LCALL WRD
MOV DATT,69H
LCALL WRD
MOV COM,#94H ;由8CH地址开始显示,9CH
LCALL WRI
MOV DATT,#0B7H ;显示"分"
LCALL WRD
MOV DATT,#0D6H
LCALL WRD
MOV COM,#95H ;由8DH地址开始显示,9DH
LCALL WRI
MOV DATT,6AH
LCALL WRD
MOV DATT,6BH
LCALL WRD
MOV COM,#96H ;由8EH地址开始显示,9EH
LCALL WRI
MOV DATT,#0C3H ;显示"秒"
LCALL WRD
MOV DATT,#0EBH
LCALL WRD
MOV COM,#9AH
LCALL WRI
MOV DATT,#0D0H ;显示"星"
LCALL WRD
MOV DATT,#0C7H
LCALL WRD
MOV COM,#9BH ;由8EH地址开始显示,9EH
LCALL WRI
MOV DATT,#0C3H ;显示"期"
LCALL WRD
MOV DATT,#0EBH
LCALL WRD
MOV COM,#9CH
LCALL WRI
MOV DATT,6cH
LCALL WRD
MOV DATT,#20H
LCALL WRD
LCALL TIMEINX
LCALL TIMEBITX
RET
;***********************************************************
;显示修改时间模式,显示数字
TIMEINX:
MOV COM,#91H
LCALL WRI
MOV DATT,60H
LCALL WRD
MOV DATT,61H ;可以显示输入的数字,或者显示"*",有光标移动指示
LCALL WRD
MOV COM,#93H
LCALL WRI
MOV DATT,62H
LCALL WRD
MOV DATT,63H
LCALL WRD
MOV COM,#95H
LCALL WRI
MOV DATT,64H
LCALL WRD
MOV DATT,65H
LCALL WRD
MOV COM,#89H
LCALL WRI
MOV DATT,66H
LCALL WRD
MOV DATT,67H
LCALL WRD
MOV COM,#8BH
LCALL WRI
MOV DATT,68H
LCALL WRD
MOV DATT,69H
LCALL WRD
MOV COM,#8DH
LCALL WRI
MOV DATT,6AH
LCALL WRD
MOV DATT,6BH
LCALL WRD
MOV COM,#9CH
LCALL WRI
MOV DATT,6CH
LCALL WRD
MOV DATT,#20H
LCALL WRD
RET
;修改时间输入光标闪烁子程序,输入一个数字,光标移动一位,并在该位闪烁
;处理光标在此位置闪烁子程序,在调整数据时应该加入闪烁,才可知道调整项目
;增加的项目由此闪烁指示
TIMEBITX: JB 20H,TB1X
MOV COM,#0DH ;由91H地址开始显示
LCALL WRI ;实质上是让光标在此位置闪烁
MOV COM,#91H
LCALL WRI
MOV COM,#0DH
LCALL WRI
LJMP EXTBX
TB1X: JB 21H,TB2X
MOV COM,#0DH ;由93H地址开始显示
LCALL WRI ;实质上是让光标在此位置闪烁
MOV COM,#93H
LCALL WRI
MOV COM,#0DH
LCALL WRI
LJMP EXTBX
TB2X: JB 22H,TB3X
MOV COM,#0DH ;由95H地址开始显示
LCALL WRI ;实质上是让光标在此位置闪烁
MOV COM,#95H
LCALL WRI
MOV COM,#0DH
LCALL WRI
LJMP EXTBX
TB3X: JB 23H,TB4X
MOV COM,#0DH ;由89H地址开始显示
LCALL WRI ;实质上是让光标在此位置闪烁
MOV COM,#89H
LCALL WRI
MOV COM,#0DH
LCALL WRI
LJMP EXTBX
TB4X: JB 24H,TB5X
MOV COM,#0DH ;由8bH地址开始显示
LCALL WRI ;实质上是让光标在此位置闪烁
MOV COM,#8BH
LCALL WRI
MOV COM,#0DH
LCALL WRI
LJMP EXTBX
TB5X: JB 25H,TB6X
MOV COM,#0DH ;由8dH地址开始显示
LCALL WRI ;实质上是让光标在此位置闪烁
MOV COM,#8DH
LCALL WRI
MOV COM,#0DH
LCALL WRI
LJMP EXTBX
TB6X: JB 26H,TB7X
MOV COM,#0DH ;由9cH地址开始显示
LCALL WRI ;实质上是让光标在此位置闪烁
MOV COM,#9CH
LCALL WRI
MOV COM,#0DH
LCALL WRI
LJMP EXTBX
TB7X: CLR 32H ;指示修改密码数据输入完毕,等待"确认键"
EXTBX: RET
NEWT0:
lcall set1302 ;调用初值设定子程序
LCALL DELAY10
LCALL DELAY10
CLR 06H ;允许正常显示
CLR 07H
RET
;//////////////////////////////////////////////////////////
;将单字节BCD码分解开来,然后送RAM
;将40-46H 转换为30-3DH,依次选择相应的RAM 送相应的位置显示
DIGBCD:
MOV A,46H
ANL A,#0F0H
SWAP A
ORL A,#30H
MOV 30H,A ;分解"年"的高位, 30H
MOV A,46H
ANL A,#0FH
ORL A,#30H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -