📄 oo.asm
字号:
NOP
ACALL DSPDEL ;延时
MOV C,P3.7 ;读S4按键状态
JC NP1
MOV KEYCODE,#08H ;S4按下,键盘值=8
NP1: MOV P1,#0FFH ;消隐
NOP
NOP
MOV A,B ;显示秒的个位
SWAP A
ORL A,#0FH
MOV P1,A
MOV A,P3
ANL A,#07H
ORL A,#DPS0
MOV P3,A
ACALL DSPDEL
MOV C,P3.7
JC SS5
MOV KEYCODE,#0AH ;S5按下,键值=#0AH
SS5: MOV P1,#0FFH ;消隐
NOP
INC R1
MOV A,@R1 ;调入分值
MOV B,#0AH
DIV AB
SWAP A ;显示分的十位
ORL A,#0FH
MOV P1,A
MOV A,P3
ANL A,#07H
ORL A,#DPM1
MOV P3,A
ACALL DSPDEL
MOV C,P3.7 ;检测S2是否按下
JC NP2
MOV KEYCODE,#04H ;S2按下,键盘值=4
NOP
NP2: MOV P1,#0FFH ;消隐
NOP
NOP
MOV A,B
SWAP A ;显示分的个位
ORL A,#07H
MOV P1,A
MOV A,P3
ANL A,#07H
ORL A,#DPM0
MOV P3,A
ACALL DSPDEL
MOV C,P3.7 ;判断S3是否按下
JC NP3
MOV KEYCODE,#06H ;若S3按下,键盘值=6
NOP
NP3: MOV P1,#0F7H ;消隐
NOP
INC R1
MOV A,@R1 ;调入时值
MOV B,#0AH
DIV AB
SWAP A ;显示时的十位
JNZ DISPLY1
MOV A,#0FFH
DISPLY1: ORL A,#0FH
MOV P1,A
MOV A,P3
ANL A,#07H
ORL A,#DPH1
MOV P3,A
ACALL DSPDEL
NOP
MOV A,B
SWAP A ;显示时的个位
ORL A,#07H
MOV P1,A
MOV A,P3
ANL A,#07H
ORL A,#DPH0
MOV P3,A
ACALL DSPDEL
MOV C,P3.7 ;判断S1是否按下
JC NP4
MOV KEYCODE,#02H ;S1按下,键盘值=2
NOP
NP4: MOV P1,#0F7H ;消隐
NOP
RET
DSPDEL: MOV R7,#0FFH ;延时程序0.5ms
DJNZ R7,$
RET
;************ 比较设定值 *****************
COMP: NOP
YY1_1: CLR C
MOV R0,#K1ON
NOP
NOP
ACALL COMP1
MOV A,CCB
JZ YY1_2 ;CBB标志为0则转移('时间到'标志)
MOV A,P3 ;取P3口原值
ORL A,#01H ;置位P1.0
MOV P3,A
YY1_2: CLR C
MOV R0,#K1OFF
NOP
NOP
ACALL COMP1
MOV A,CCB
JZ YY2_1 ;CBB标志为0则转移
MOV A,P3
ANL A,#0FEH ;P1.0清0
MOV P3,A
YY2_1: CLR C
MOV R0,#K2ON
NOP
NOP
ACALL COMP1
MOV A,CCB
JZ YY2_2 ;CBB标志为0则转移
MOV A,P3
ORL A,#02H ;P1.1置位
MOV P3,A
YY2_2: CLR C
MOV R0,#K2OFF
NOP
NOP
ACALL COMP1
MOV A,CCB
JZ YY3_1 ;CBB标志为0则转移
MOV A,P3
ANL A,#0FDH ;P1.1清0
MOV P3,A
YY3_1: CLR C
MOV R0,#K3ON
NOP
NOP
ACALL COMP1
MOV A,CCB
JZ YY3_2 ;CBB标志为0则转移
MOV A,P3
ORL A,#04H ;P1.2置位
MOV P3,A
YY3_2: CLR C
MOV R0,#K3OFF
NOP
NOP
ACALL COMP1
MOV A,CCB
JZ YY4 ;CBB标志为0则转移
MOV A,P3
ANL A,#0FBH ;P1.2置位
MOV P3,A
NOP
NOP
YY4: RET
COMP1: CLR C
MOV A,R0
ADD A,#02H ;先比较小时值,相等再看分钟,秒钟值是否相等
MOV R0,A ;R0为比较器的入口地址,指向设定值的小时值
MOV A,TH
SUBB A,@R0
JNZ COMP2 ;不相等,停止比较
CLR C
MOV A,TM
DEC R0 ;指向分钟值
SUBB A,@R0
JNZ COMP2 ;不相等,停止比较
CLR C
MOV A,TS
DEC R0 ;指向秒钟值
SUBB A,@R0
JNZ COMP2 ;不相等,停止比较
MOV CCB,#01H ;'时间到'标志置位
MOV @R0,#OFF ;如全部相等则将该预设置复位
INC R0
MOV @R0,#OFF
INC R0
MOV @R0,#OFF
SJMP COMP3
COMP2: MOV CCB,#00H ;'时间到'标志清0
COMP3: RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -