SEC EQU 40H ;秒 实时时钟
MIN EQU 39H ;分
HOUR EQU 38H ;时
DAY EQU 43H ;日
MON EQU 42H ;月
YEAR1 EQU 41H ;年的后两位
YEAR2 EQU 50H;年的前两位
MIN_1 EQU 44H ; 闹铃
HOUR_1 EQU 45H ;
DAY_1 EQU 46H ;
MON_1 EQU 47H ;
YEAR1_1 EQU 48H ;
YEAR2_1 EQU 51H;
MIN_2 EQU 49H ;提醒
HOUR_2 EQU 4AH ;时
DAY_2 EQU 4BH ;日
MON_2 EQU 4CH ;月
YEAR1_2 EQU 4DH ;年
YEAR2_2 EQU 52H
SIGNAL EQU 4EH;标志位
SIGNAL2 EQU 53H
SIGNAL3 EQU 3FH
SIGNAL4 EQU 3EH
SIGNAL5 EQU 4FH
KEY_NUM EQU 54H
ORG 0000H;
AJMP MAIN;
ORG 000BH;
AJMP TIME;
ORG 0030H;
MAIN:
MOV YEAR1 , #09
MOV YEAR2,#20
MOV MON , #03
MOV DAY , #01
MOV HOUR , #00
MOV MIN , #00
MOV SEC , #00
MOV MIN_1,#00 ; 闹铃
MOV HOUR_1,#12;
MOV DAY_1,#01;
MOV MON_1,#03;
MOV YEAR1_1,#09;
MOV YEAR2_1,#20;
MOV MIN_2,#30; 闹铃
MOV HOUR_2,#12;
MOV DAY_2,#01;
MOV MON_2,#03;
MOV YEAR1_2,#09;
MOV YEAR2_2,#20
MOV SIGNAL4,#00H
;初始化
MOV SP,#60H;
SETB 08H
LCALL DINGSHI;定时器设置,启动中断
LOOP:
MOV SIGNAL3,#00H;实现显示闹铃、提醒时秒钟不动
LCALL DISPLAY1;显示1,显示实时时钟
LCALL KEYSCAN;键盘扫描
LCALL PRO_SET;实现功能
MOV SIGNAL3,#00H;实现显示闹铃、提醒时秒钟不动
LCALL COMPEAR1;比较,实现闹铃和提醒功能
LCALL LOOP_1
AJMP LOOP;
DINGSHI:
MOV TMOD , #01H ;计数、模式1、T0
MOV TL0, #0BH ;50MS 计数定时
MOV TH0, #3CH ;
MOV 20H, #14H ;20次*50MS
SETB TR0 ;允许计数
SETB ET0 ;允许T0 中断
SETB EA ;开总中断
RET
PRO_SET:
MOV SIGNAL,#00H;
MOV R2,KEY_NUM
CJNE R2,#0,KEY2;0键功能为调整实时时钟,若第一次按键不为0则跳转;到KEY2(闹铃功能)
AJMP KEY4_H;第一次按0键调整小时
KEY2:
MOV R2,KEY_NUM
CJNE R2,#01,KEY3;若第一次按键不为1则跳转到KEY3(提醒功能)
PUSH HOUR
PUSH MIN
PUSH DAY
PUSH MON
PUSH YEAR1
PUSH YEAR2
INC SIGNAL;控制实现闹铃提醒设置
MOV HOUR,HOUR_1;
MOV MIN,MIN_1;
MOV DAY,DAY_1;
MOV MON,MON_1;
MOV YEAR1,YEAR1_1;
MOV YEAR2,YEAR2_1;
MOV SIGNAL3,#01H
MOV SIGNAL5,#00H
AJMP KEY4_H;
KEY3:
MOV R2,KEY_NUM
CJNE R2,#02,KEY4;若第一次按键不为2则跳转到KEY4(显示日期)
PUSH HOUR
PUSH MIN
PUSH DAY
PUSH MON
PUSH YEAR1
PUSH YEAR2
INC SIGNAL;
MOV HOUR,HOUR_2;
MOV MIN,MIN_2;
MOV DAY,DAY_2;
MOV MON,MON_2;
MOV YEAR1,YEAR1_2;
MOV YEAR2,YEAR2_2;
MOV SIGNAL3,#01H
MOV SIGNAL5,#01H
AJMP KEY4_H;
KEY4:
MOV R2,KEY_NUM
CJNE R2,#03,RETURN;其余按键无效
MOV 30H,YEAR2
MOV 32H,YEAR1
MOV 35H,MON
MOV 37H,DAY
MOV 58H,HOUR
MOV 5BH,MIN
MOV 5EH,SEC
INC SIGNAL4
LCALL DISPLAY2;显示2,滚动显示日期
KEY4_H:
LCALL DISPLAY1;
LCALL KAP;
CJNE A,#0,JIXU1;
AJMP KEY4_H;键盘扫描,无键按下返回KEY4_H
JIXU1:
LCALL KEYSCAN
MOV R2,KEY_NUM
CJNE R2,#00,NEXT_1;再次按0键调整分钟
AJMP KEY4_M;
NEXT_1:
MOV R2,KEY_NUM
CJNE R2,#04,RETURN;实现小时增加功能,否则返回
INC HOUR;
;LCALL DISPLAY1
MOV R6 , HOUR;
CJNE R6 , #24, KEY4_H;
Mov HOUR,#00H;
AJMP KEY4_H;
KEY4_M:
LCALL DISPLAY1;
LCALL KAP;
CJNE A,#00,JIXU2; 键盘扫描,无键按下返回
AJMP KEY4_M;
JIXU2:
LCALL KEYSCAN
MOV R2,KEY_NUM
CJNE R2,#00,NEXT_2;再次按0键调整年
AJMP KEY4_Y1;
NEXT_2:
MOV R2,KEY_NUM
CJNE R2,#04,RETURN;实现分钟增加功能,否则返回
INC MIN;
MOV R6 , MIN
CJNE R6 , #60, KEY4_M;
MOV MIN,#00H;
AJMP KEY4_M;
RETURN:
MOV R2,SIGNAL
CJNE R2,#00,OUT;标志位置0直接返回,置1出栈后返回
RET
OUT:
MOV SIGNAL,#00H;
MOV A,SIGNAL5
CJNE A,#00H,OUT_9
MOV YEAR1_1,YEAR1
MOV YEAR2_1,YEAR2
MOV MON_1,MON
MOV DAY_1,DAY
MOV HOUR_1,HOUR
MOV MIN_1,MIN
POP YEAR2
POP YEAR1
POP MON
POP DAY
POP MIN
POP HOUR
RET
OUT_9:
MOV YEAR1_2,YEAR1
MOV YEAR2_2,YEAR2
MOV MON_2,MON
MOV DAY_2,DAY
MOV HOUR_2,HOUR
MOV MIN_2,MIN
MOV SIGNAL4,#00H
POP YEAR2
POP YEAR1
POP MON
POP DAY
POP MIN
POP HOUR
RET
KEY4_Y1:
LCALL DISPLAY3;显示3,显示调整状态的日期
LCALL KAP;键盘扫描,无键按下返回
CJNE A,#00,JIXU3
AJMP KEY4_Y1;
JIXU3:
LCALL KEYSCAN
MOV R2,KEY_NUM
CJNE R2,#00,NEXT_3;再次按0键调整月
AJMP KEY4_MO;
NEXT_3:
MOV R2,KEY_NUM
CJNE R2,#04,RETURN;实现年增加功能,否则返回
INC YEAR1;
MOV R6 , YEAR1
CJNE R6 , #100, KEY4_Y1;
Mov YEAR1,#00h;
INC YEAR2;
MOV R7 , YEAR2
CJNE R7 , #100, KEY4_Y1;
Mov YEAR2,#00h;
AJMP KEY4_Y1;
KEY4_MO:
LCALL DISPLAY3;
LCALL KAP;键盘扫描,无键按下返回
CJNE A,#00,JUXU4
AJMP KEY4_MO;
JUXU4:
LCALL KEYSCAN
MOV R2,KEY_NUM
CJNE R2,#00,NEXT_4;再次按0键调整日
AJMP KEY4_D;
NEXT_4:
MOV R2,KEY_NUM
CJNE R2,#04, RETURN1;
INC MON;
MOV R6 , MON
CJNE R6 , #13, KEY4_MO;
MOV MON,#01H;
AJMP KEY4_MO
KEY4_D:
LCALL DISPLAY3;
LCALL KAP;键盘扫描,无键按下返回
CJNE A,#00,JIXU5;
AJMP KEY4_D;
JIXU5:
LCALL KEYSCAN
MOV R2,KEY_NUM
CJNE R2,#00,NEXT_5;再次按0键调整日
AJMP RETURN;
RETURN1:AJMP RETURN
NEXT_5:
MOV R2,KEY_NUM
CJNE R2,#04,RETURN1;
INC DAY
MOV R5, MON
CJNE R5, #1, MON_22;是否1 月、不是转2 月
MOV R5, DAY
CJNE R5, #32, KEY4_D ; 本月是否益出
MOV DAY,#1
AJMP KEY4_D
MON_22:
MOV R5, MON
CJNE R5 , #2 , MON_33;是否2 月、不是转3 月
MOV A,YEAR1;判断是否瑞年
MOV B, #4
DIV AB
MOV A , B
JNZ OUT_1;不是则转(A 不为零则转)
MOV R5 ,DAY
CJNE R5,#30, KEY4_D;如是瑞年、判断是否到29 天
MOV DAY ,#1;
AJMP KEY4_D;
OUT_1:
MOV R5, DAY
CJNE R5, #29, KEY4_D ;平年二月判断
MOV DAY , #1;
AJMP KEY4_D;
MON_33:
MOV R5, MON
CJNE R5, #3 , MON_44
MOV R5, DAY
CJNE R5 , #32, KEY4_D
MOV DAY , #1
AJMP KEY4_D;
MON_44:
MOV R5, MON
CJNE R5,#4, MON_55
MOV R5, DAY
CJNE R5 ,#31, KEY4_D
MOV DAY , #1
AJMP KEY4_D;
MON_55:
MOV R5,MON
CJNE R5,#5, MON_66
MOV R5,DAY
CJNE R5,#32, KEY4_D
MOV DAY,#1
AJMP KEY4_D;
MON_66:
MOV R5, MON
CJNE R5,#6, MON_77
MOV R5, DAY
CJNE R5 ,#31, KEY4_D1
MOV DAY , #1
AJMP KEY4_D;
MON_77:
MOV R5, MON
CJNE R5,#7, MON_88
MOV R5, DAY
CJNE R5,#32, KEY4_D1
MOV DAY , #1
AJMP KEY4_D;
KEY4_D1:AJMP KEY4_D;跳转到KEY4_D
MON_88:
MOV R5, MON
CJNE R5,#8, MON_99
MOV R5, DAY
CJNE R5 ,#32, KEY4_D1
MOV DAY , #1
AJMP KEY4_D;
MON_99:
MOV R5, MON
CJNE R5,#9, MON_00
MOV R5,DAY
CJNE R5 ,#31, KEY4_D1
MOV DAY , #1
AJMP KEY4_D;
MON_00:
MOV R5, MON
CJNE R5,#10, MON_AA
MOV R5, DAY
CJNE R5 ,#32, KEY4_D1
MOV DAY , #1
AJMP KEY4_D;
MON_AA:
MOV R5, MON
CJNE R5,#11, MON_BB
MOV R5,DAY
CJNE R5,#31, KEY4_D1
MOV DAY , #1
AJMP KEY4_D;
MON_BB:
MOV R5, DAY
CJNE R5 ,#32, KEY4_D1
MOV DAY , #1
AJMP KEY4_D;
COMPEAR1:
MOV A, HOUR;闹铃
CJNE A, HOUR_1,LOOP_2
MOV A, MIN
CJNE A, MIN_1, LOOP_2
MOV SIGNAL2,#00H
AJMP FENGMING1
LOOP_1:
MOV A, YEAR1
CJNE A, YEAR1_2, LOOP_2;年比较,提醒功能
MOV A,YEAR2;
CJNE A,YEAR2_2,LOOP_2;
MOV A, MON
CJNE A, MON_2, LOOP_2
MOV A, DAY
CJNE A , DAY_2,LOOP_2
MOV A, HOUR
CJNE A, HOUR_2,LOOP_2
MOV A, MIN
CJNE A, MIN_2, LOOP_2
MOV 30H,YEAR2_2
MOV 32H,YEAR1_2
MOV 35H,MON_2
MOV 37H,DAY_2
MOV 58H,HOUR_2
MOV 5BH,MIN_2
MOV 5EH,#00H
AJMP DISPLAY2
LOOP_2:
RET;
TIME:
PUSH PSW
PUSH ACC
MOV TH0 , #3CH;重装计数
MOV TL0 , #0BH;
DJNZ 20H, OUT_21 ;转到中断跳出pop 程序
MOV 20H, #14H ; 重装:50*20=1000
SETB 08H
INC SEC;
MOV R6, SEC ;
CJNE R6, #60, OUT_21;比较
MOV SEC , #00 ;
INC MIN
MOV R6, MIN
CJNE R6, #60, OUT_21
MOV MIN , #00
INC HOUR
MOV R6 , HOUR
CJNE R6 , #25 , OUT_21
MOV HOUR ,#00
INC DAY
MOV R5, MON
CJNE R5, #1, MON1_22;是否1 月、不是转2 月
MOV R5, DAY
CJNE R5, #32, OUT_21 ; 本月是否益出
INC MON
MOV DAY,#1
AJMP OUT_2
OUT_21:AJMP OUT_2
MON1_22:
MOV R5, MON
CJNE R5 , #2 , MON1_33;是否2 月、不是转3 月
MOV A, YEAR1 ;判断是否瑞年
MOV B, #4
DIV AB
MOV A , B
JNZ OUT_3;不是则转(A 不为零则转)
MOV R5 ,DAY
CJNE R5,#30, OUT_2;如是瑞年、判断是否到29 天
INC MON
MOV DAY ,#1
LJMP OUT_2
OUT_3:
MOV R5, DAY
CJNE R5, #29, OUT_2 ;平年二月判断
INC MON
MOV DAY , #1
LJMP OUT_2
MON1_33:
MOV R5, MON
CJNE R5, #3 , MON1_44
MOV R5, DAY
CJNE R5 , #32, OUT_2
INC MON
MOV DAY , #1
AJMP OUT_2
MON1_44:
MOV R5, MON
CJNE R5,#4, MON1_55
MOV R5, DAY
CJNE R5 ,#31,OUT_2
INC MON
MOV DAY , #1
LJMP OUT_2
MON1_55:
MOV R5,MON
CJNE R5,#5, MON1_66
MOV R5,DAY
CJNE R5,#32,OUT_2
INC MON
MOV DAY,#1
LJMP OUT_2
MON1_66:
MOV R5, MON
CJNE R5,#6, MON1_77
MOV R5, DAY
CJNE R5,#31,OUT_2
INC MON
MOV DAY , #1
AJMP OUT_2
OUT_2:
POP ACC
POP PSW
RETI
MON
shizhong.rar_alarm beep_时间日期
版权申诉
136 浏览量
2022-09-20
15:53:03
上传
评论
收藏 4KB RAR 举报
小贝德罗
- 粉丝: 71
- 资源: 1万+
最新资源
- 基于Python的新能源承载力计算及界面设计源码 - HAINING-DG
- 基于Java的本科探索学习项目设计源码 - 本科探索
- 基于Javascript和Python的微商城项目设计源码 - MicroMall
- 基于Java的网上订餐系统设计源码 - online ordering system
- 基于Javascript的超级美眉网络资源管理应用模块设计源码
- 基于Typescript和PHP的编程知识储备库设计源码 - study-php
- Screenshot_2024-05-28-11-40-58-177_com.tencent.mm.jpg
- 基于Dart的Flutter小提琴调音器APP设计源码 - violinhelper
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈