📄 1302yybsz.asm
字号:
ORG 0000H
AJMP MA
ORG 0013H
AJMP DT
ORG 0030H
BTT DATA 50H
BYT DATA 51H
COM DATA 52H
RCV DATA 30H
XMT DATA 38H
IO BIT P1.5
DCLK BIT P1.6
RST BIT P1.4
K1 BIT P1.0 ;定义按键K1
K2 BIT P1.1 ;定义按键K2
K3 BIT P1.2
K4 BIT P1.3
K5 BIT P1.7
K6 BIT P3.0
K7 BIT P3.1
K8 BIT P3.5
;/////////////////////////////////////////////////
MA:MOV P2,#0FFH
MOV P0,#0FFH
MOV P1,#0FFH ;端口初始化
SETB EA
SETB EX1
CLR IT1
CLR A
MOV R0,#20H
DD:MOV @R0,A
INC R0
CJNE R0,#5FH,DD
YZ:MOV COM,#0BEh ;命令字节为BEh
MOV BYT,#8 ;多字节写入模式此模块为8 个
MOV R0,#Xmt; 数据地址覆给R0
MOV Xmt,#26h; 秒单元内容为59h
MOV XMT+1,#55h; 分单元内容为59h
MOV XMT+2,#19h; 时单元内容为13h
MOV XMT+3,#11h; 日期单元内容为21h
MOV XMT+4,#05h ;月单元内容为06h
MOV XMT+5,#03h; 星期单元内容为03h
MOV XMT+6,#1 ;年单元内容为00h
MOV XMT+7,#2 ;写保护单元内容为00h
LCALL XIE ; 调用写入数据子程序
MOV COM,#90h ;命令字节为BEh
MOV BYT,#1 ;多字节写入模式此模块为8 个
MOV R0,#XMT; 数据地址覆给R0
MOV XMT,#0A8H
LCALL XIE ; 调用写入数据子程序
HH:MOV P0,#0FFH
MOV P2,#0FFH
JB K1,KK2
LCALL KFS
KK2:JB K2,KK3
LCALL KRY
KK3:JB K3,HH
LCALL KNI
CLR F0
LCALL SX
LCALL BM
AJMP HH
KFS:JB K1,HH ;检测按键K1
ACALL YY ;调用20ms延时消抖动
JB K1,HH ;如果K1为高电平,则是抖动
CLR F0
K1DD:JNB K1,K1DD ;等待K1按键释放
JB F0,TZ1
LCALL TTY
CPL F0
KK4:LCALL XIANSHI
JB K4,KK5 ;SHII
LCALL SHII
KK5:JB K5,KKA ;FEN
LCALL FEN
KKA:JNB K1,K1DD
LCALL SX
LCALL BM
AJMP KK4
TZ1:LCALL TZ
AJMP HH
FEN:LCALL YY
JB K5,KK5
TQ1:JNB K5,TQ1
INC 43H
MOV A,43H
CJNE A,#10,VB2
MOV 43H,#00H
INC 42H
VB1:MOV A,42H
CJNE A,#06,VB2
MOV 42H,#00H
VB2:MOV A,42H
LCALL YXX
ADD A,43H
MOV 31H,A
LCALL XX1
RET
SHII:LCALL YY
JB K4,KK4
TQ2:JNB K4,TQ2
INC 45H
MOV A,45H
CJNE A,#10,VB4
MOV 45H,#00H
INC 44H
VB3:MOV A,44H
CJNE A,#03,VB4
MOV 44H,#00H
VB4:MOV A,44H
LCALL YXX
ADD A,45H
CJNE A,#36,TTV
CLR A
TTV:MOV 32H,A
LCALL XX2
RET
KRY:JB K2,TMD ;检测按键K1
ACALL YY ;调用20ms延时消抖动
JB K2,TMD ;如果K1为高电平,则是抖动
CLR F0
K2DD:JNB K2,K2DD ;等待K1按键释放
JB F0,TZ2
LCALL TTY
CPL F0
KK6:LCALL XIANYUE
JB K6,KK7 ;RRI
LCALL RRI
KK7:JB K7,KKB ;YUE
LCALL YUE
KKB:JNB K2,K2DD
LCALL SX
LCALL BM
AJMP KK6
TZ2:LCALL TZ
TMD:AJMP HH
RRI:LCALL YY
JB K6,KK6
TQ3:JNB K6,TQ3
INC 47H
MOV A,47H
CJNE A,#10,VB6
MOV 47H,#00H
INC 46H
VB5:MOV A,46H
CJNE A,#04,VB6
MOV 46H,#00H
VB6:MOV A,46H
LCALL YXX
ADD A,47H
MOV 33H,A
LCALL XX3
RET
YUE:LCALL YY
JB K7,KK7
TQ4:JNB K7,TQ4
INC 49H
MOV A,49H
CJNE A,#10,VB8
MOV 49H,#00H
INC 48H
MOV A,48H
CJNE A,#02,VB8
MOV 48H,#00H
VB8:MOV A,48H
LCALL YXX
ADD A,49H
MOV 34H,A
LCALL XX4
RET
KNI:JB K3,KNM ;检测按键K1
ACALL YY ;调用20ms延时消抖动
JB K3,KNI ;如果K1为高电平,则是抖动
CLR F0
K3DD:JNB K3,K3DD ;等待K1按键释放
JB F0,TZ3
LCALL TTY
CPL F0
KK8:LCALL XIANNIAN
JB K8,KKC ;NIAN
LCALL YY
LCALL NIANN
KKC:JNB K3,K3DD
LCALL SX
LCALL BM
AJMP KK8
TZ3:LCALL TZ
KNM:AJMP HH
NIANN:LCALL YY
JB K8,KK8
INC 35H
MOV COM,#8Ch ;命令字节为BEh
MOV BYT,#1 ;多字节写入模式此模块为8 个
MOV R0,#XMT; 数据地址覆给R0
MOV XMT,35H
LCALL XIE ; 调用写入数据子程序
RET
XIANSHI:MOV P0,31H
MOV P2,32H
RET
XIANYUE:MOV P0,33H
MOV P2,34H
RET
XIANNIAN:MOV P0,35H
RET
TTY:MOV COM,#80h ;命令字节为BEh
MOV BYT,#1 ;多字节写入模式此模块为8 个
MOV R0,#XMT; 数据地址覆给R0
MOV XMT,#80H
LCALL XIE ; 调用写入数据子程序
RET
YXX:RL A
RL A
RL A
RL A
RET
TZ:MOV COM,#80h ;命令字节为BEh
MOV BYT,#1 ;多字节写入模式此模块为8 个
MOV R0,#XMT; 数据地址覆给R0
MOV XMT,#00H
LCALL XIE ; 调用写入数据子程序
MOV P0,#0FFH
MOV P2,#0FFH
CLR F0
RET
XX1:MOV COM,#82h ;命令字节为BEh
MOV BYT,#1 ;多字节写入模式此模块为8 个
MOV R0,#XMT; 数据地址覆给R0
MOV XMT,31H
LCALL XIE ; 调用写入数据子程序
LCALL YY
RET
XX2:MOV COM,#84h ;命令字节为BEh
MOV BYT,#1 ;多字节写入模式此模块为8 个
MOV R0,#XMT; 数据地址覆给R0
MOV XMT,32H
LCALL XIE ; 调用写入数据子程序
LCALL YY
RET
XX3:MOV COM,#86h ;命令字节为BEh
MOV BYT,#1 ;多字节写入模式此模块为8 个
MOV R0,#XMT; 数据地址覆给R0
MOV XMT,33H
LCALL XIE ; 调用写入数据子程序
LCALL YY
RET
XX4:MOV COM,#88h ;命令字节为BEh
MOV BYT,#1 ;多字节写入模式此模块为8 个
MOV R0,#XMT; 数据地址覆给R0
MOV XMT,34H
LCALL XIE ; 调用写入数据子程序
LCALL YY
RET
SUAN:MOV A,34H
CJNE A,#5,SS1
MOV A,33H
CJNE A,#49,RET_B ;在编码中31在16进制中10进制49
SETB 20H.1 ;20H.1 SHENRI
RET
SS1:CJNE A,#8,RET_B
MOV A,33H
CJNE A,#5,SS2
SETB 20H.2 ;20H.2 ZHOUNINA
RET
SS2:CJNE A,#7,RET_B
SETB 20H.3 ;20H.3 QIXI
RET_B:RET
;////////////////////////////////////////
DT:LCALL SX
LCALL BM
LCALL SUAN
JB 20H.1,SHEN
JB 20H.2,ZHOU
JB 20H.3,QIXI
LCALL MAIN
MOV 3DH,#00H
MOV 3EH,#00H
MOV 3FH,#00H
RETI
SHEN:JB 20H.4,V1
LCALL SX
LCALL BM
LCALL MAIN
INC 21H
MOV A,21H
CJNE A,#0EH,RET_A
SETB 20H.4
V1:LCALL DDF
INC 21H
MOV A,21H
CJNE A,#1BH,RET_A
MOV 21H,#00H
MOV 20H,#00H
RET_A:RETI
ZHOU:JB 20H.5,V2
LCALL SX
LCALL BM
LCALL MAIN
INC 21H
MOV A,21H
CJNE A,#0EH,RET_V
SETB 20H.5
V2:MOV DPTR,#NIAN
LCALL XSDF
MOV DPTR,#WOKAO
LCALL XSDF
MOV DPTR,#SAN
LCALL XSDF
MOV DPTR,#SHI
LCALL XSDF
MOV DPTR,#XIANG
LCALL XSDF
INC 21H
MOV A,21H
CJNE A,#1CH,RET_V
MOV 21H,#00H
MOV 20H,#00H
RET_V:RETI
QIXI:JB 20H.4,V3
LCALL SX
LCALL BM
LCALL MAIN
INC 21H
MOV A,21H
CJNE A,#0EH,RET_C
SETB 20H.4
V3:MOV DPTR,#LEE
LCALL XSDF
MOV DPTR,#KUAI
LCALL XSDF
MOV DPTR,#XI
LCALL XSDF
MOV DPTR,#QI
LCALL XSDF
INC 21H
MOV A,21H
CJNE A,#1BH,RET_C
MOV 21H,#00H
MOV 20H,#00H
RET_C:RETI
;/////////////////////////////////
DDF:MOV R2,#00H
MOV R3,#00H
WGQ_A:MOV A,R2
MOV DPTR,#HB
MOVC A,@A+DPTR
MOV 22H,A
INC R2
WGQ_B:MOV A,R3
MOV DPTR,#HB1
MOVC A,@A+DPTR
MOV 24H,A
INC R3
LCALL XIAN
CJNE R3,#56,WGQ_A
RET
DDFF:MOV R2,#00H
MOV R3,#00H
WGQ_A1:MOV A,R2
MOV DPTR,#TA
MOVC A,@A+DPTR
MOV 22H,A
INC R2
MOV A,R3
MOV DPTR,#TA1
MOVC A,@A+DPTR
MOV 24H,A
INC R3
LCALL XIAN
CJNE R3,#56,WGQ_A1
RET
MAIN:MOV R0,#40H
MOV R1,#46H
MOV R7,#06H
WA:MOV 3FH,@R0
MOV 3EH,@R1
LCALL SZ
INC R0
INC R1
DJNZ R7,WA
RET
SZ:MOV A,3FH
MOV DPTR,#CB
MOVC A,@A+DPTR
MOV R3,A
MOV A,3EH
MOV DPTR,#CB
MOVC A,@A+DPTR
MOV R2,A
MOV R4,#05H
ETA:MOV A,R3
MOV DPTR,#SZQ
MOVC A,@A+DPTR
MOV 22H,A
INC R3
MOV A,R2
MOV DPTR,#SZQ
MOVC A,@A+DPTR
MOV 24H,A
INC R2
LCALL XIAN
DJNZ R4,ETA
LCALL K
RET
BM:MOV R0,#40H
MOV R1,#41H
MOV A,30H
LCALL BXB
MOV A,31H
LCALL BXB
MOV A,32H
LCALL BXB
MOV A,33H
LCALL BXB
MOV A,34H
LCALL BXB
MOV 35H,36H
MOV A,35H
LCALL BXB
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -