📄 at89c2051日期闹钟.asm
字号:
ML8:CJNE A,#0AH,ML9
LJMP MLL
ML9:CJNE A,#0BH,INT
LJMP MHL
INT:JMP INTT1OUT
MLL:MOV 72H,7AH
MOV 73H,7AH ;显示单元(72-73H),将不显示分数据
MOV 74H,78H
MOV 75H,79H
AJMP INTT1OUT
MHL:MOV 72H,76H
MOV 73H,77H
MOV 74H,7AH ;显示单元(74-75H),小时数据将不显示
MOV 75H,7AH
AJMP INTT1OUT
MNN1:MOV 72H,7AH
MOV 73H,7AH ;显示单元(72-73H),将不显示1闹钟分数据
MOV 74H,7DH
MOV 75H,7EH
AJMP INTT1OUT
MNN11:MOV 72H,7BH ;显示单元(74-75H),将不显示1闹钟时数据
MOV 73H,7CH
MOV 74H,7AH
MOV 75H,7AH
AJMP INTT1OUT
MNN2:MOV 72H,7AH ;显示单元(72-73H),将不显示2闹钟分数据
MOV 73H,7AH
MOV 74H,52H
MOV 75H,53H
AJMP INTT1OUT
MNN22:MOV 72H,50H ;显示单元(74-75H),将不显示2闹钟时数据
MOV 73H,51H
MOV 74H,7AH
MOV 75H,7AH
AJMP INTT1OUT
MNN3:MOV 72H,7AH ;显示单元(72-73H),将不显示3闹钟分数据
MOV 73H,7AH
MOV 74H,56H
MOV 75H,57H
AJMP INTT1OUT
MNN33:MOV 72H,54H ;显示单元(74-75H),将不显示3闹钟时数据
MOV 73H,55H
MOV 74H,7AH
MOV 75H,7AH
AJMP INTT1OUT
MNN4:MOV 70H,7AH;
MOV 71H,7AH; ;显示单元(70H-71H),将不显示日数据
MOV 72H,43H;
MOV 73H,44H ;
mov 74h,45H;
mov 75h,46H;
AJMP INTT1OUT;
MNN44:MOV 70H,41H;
MOV 71H,42H; ;显示单元(72H-73H),将不显示月数据
MOV 72H,7aH;
MOV 73H,7aH ;
mov 74h,45H;
mov 75h,46H;
AJMP INTT1OUT;
MNN444:MOV 70H,41H;
MOV 71H,42H; ;显示单元(74H-75H),将不显示年数据
MOV 72H,43H;
MOV 73H,44H ;
mov 74h,7ah;
mov 75h,7ah;
AJMP INTT1OUT;
;-------------------------显示-------------------------------;
DISPLAY:MOV DPTR,#DISDATA
MOV A,31H;
CJNE A,#01H,RQ;31H=1时显示时间,30H=0时显示日期
JMP SJ
RQ: MOV R1,#41H ;年月日显示
JMP XS
SJ: MOV R1,#70H
XS: MOV a,@R1
MOVC A,@A+DPTR
MOV P1,A
CLR P3.0
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB P3.0
INC R1
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
CLR P3.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB P3.1
INC R1
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
CLR P3.2
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB P3.2
INC R1
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
CLR P3.3
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB P3.3
INC R1
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
CLR P3.4
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB P3.4
INC R1
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
CLR P3.5
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB P3.5
outa: RET
;;;;;;;;;;;;;;;;;;;;;;;;;查询闹钟;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BEEP: MOV A,68H ;查询标志
CJNE A,#1,BEERE
MOV A,78H ;查询闹钟时个位
CJNE A,7DH,BEEP1
MOV A,79H ;查询闹钟时十位
CJNE A,7EH,BEEP1
MOV A,76H ;查询闹钟分个位
CJNE A,7BH,BEEP1
MOV A,77H ;查询闹钟分十位
CJNE A,7CH,BEEP1
CLR P3.7
LCALL DDL
SETB P3.7
LCALL DDL
JNB P1.7,BEERR
BEEP1: MOV A,68H ;查询标志
CJNE A,#1,BEERE ;不是1返回
mov a,78h ;查询2闹钟时个位不相等返回相等往下
cjne a,52h,BEEP2
mov a,79h ;查询2闹钟时十位不相等返回相等往下
cjne a,53h,BEEP2
mov a,76h ;查询2闹钟分个位不相等返回相等往下
cjne a,50h,BEEP2
mov a,77h ;查询2闹钟分十位不相等返回相等往下
cjne a,51h,BEEP2
CLR P3.7 ;闹钟输出
LCALL DDL
SETB P3.7 ;闹钟关闭
LCALL DDL
JNB P1.7,BEERR
BEEP2:MOV A,68H ;查询标志
CJNE A,#1,BEERE ;不是1返回
MOV A,78H ;查询3闹钟时个位不相等返回相等往下
CJNE A,56H,BEERE
MOV A,79H ;查询3闹钟时十位不相等返回相等往下
CJNE A,57H,BEERE
MOV A,76H ;查询3闹钟分个位不相等返回相等往下
CJNE A,54H,BEERE
MOV A,77H ;查询3闹钟分十位不相等返回相等往下
CJNE A,55H,BEERE
CLR P3.7 ;闹钟输出
LCALL DDL
SETB P3.7 ;闹钟关闭
LCALL DDL
JNB P1.7,BEERR
BEERE:RET
BEERR:SETB P3.7
MOV 68H,#0
LCALL DISPLAY
JNB P1.7,BEERR
JMP BEERE
;;;;;;;;;;;;;;;;;;;显示时间或日期判断 ;;;;;;;;;;;;;;;;;;;
BJ: MOV A,30H;
CJNE A,#12,bj1;前12秒显示时间
MOV A,31H;
Clr ACC.0;
mov 31h,a;
ret;
bj1: cjne a,#13,bj2;前13-15秒显示日期
ret;
bj2: cjne a,#14,bj3;
ret;
bj3: cjne a,#15,bjret;
MOV 30H,#00;
MOV A,31H;
setb ACC.0;
mov 31h,a;
BJRET: RET;
DISDATA:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,80H
;0123456789空白
;;;;;;;;;;;;;;;;;显示延时;;;;;;;;;;;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -