内容发布更新时间 : 2025/4/14 9:08:58星期一 下面是文章的全部内容请认真阅读。
电子时钟实验报告
MOV A,MINUTE ;显示当前时间分位 MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P1,A CLR MIN_S ACALL D_1MS SETB MIN_S MOV A,B MOVC A,@A+DPTR MOV P1,A CLR MIN_G ACALL D_1MS SETB MIN_G
MOV A,HOUR ;MOV B,#10 DIV AB
MOV DPTR,#LEDTAB MOVC A,@A+DPTR MOV P1,A CLR HOU_S ACALL D_1MS SETB HOU_S MOV A,B MOVC A,@A+DPTR MOV P1,A CLR HOU_G ACALL D_1MS 显示当前时间时位 16
电子时钟实验报告
SETB HOU_G
MOV A,WEEK ;显示当前星期数 MOVC A,@A+DPTR MOV P1,A CLR Y_S ACALL D_1MS SETB Y_S OUT1: RET
日期的显示,秒表的显示,倒计时的显示,调闹铃,调定时的显示,闪烁的显示程序与以上的的扫描相似,有的以子程序的方式出现,通过子程序调用语句ACALL调用;有点直接嵌套在相应的程序里面,顺序执行,或者用调转语句AJMP调用。
B.2.5 调整程序
时钟包括很多调整,如时间,日期,闹铃,秒表等,本程序,设计了相应的调整程序段,通过对应的按键,程序跳入调整模式或功能模式。在此着重分析一下闹铃重响以及定时功能的实现过程,这两个功能都灵活运用了标志位。
1,定时功能运用了一个内存地址3CH为标志位,只有3CH中所存值非0时,在主程序中
才判断定时是否已到。3CH值初始化为0,程序开始运行时并不判断定时是否已到。当通过按键进入定时初值设置,并开始倒计时,3CH的值被赋为1,
当倒计时显示到0时,进入闪烁提示,提示结束后3CH又被赋值为0,程序回到主程序后,不必判断定时是否已到。
但当倒计时未完,按返回键回到主程序时,3CH的值为1,故在主程序判断未完成的定时任务,倒计时到0时调用同一个提示程序,最后仍可保证在主程序不再定时开启时去判断定时,从而节约资源。
17
电子时钟实验报告
2,重闹铃的精髓也是标志位的设计,以F0为标志位,其初值为0,正常响铃时判断重
响功能键,若重响功能关闭,则跳过重响设定程序;若重响功能开启,则判断标志位F0,为了更好的说明,将相关程序截取如下:
//闹铃重响功能是否判断// JNB P0.6,RERING
//重响定时,//
RERING: ;闹铃重响判断程序
JNB F0, RE ;标志位F0为0,不进行闹铃重响设定 CPL F0
MOV 3CH,#1 ;定时判断标志位赋1, 定时判断功能开启
JNB P0.7,M1 ;闹铃重响间隔时间选取 MOV R4,#0 ;闹铃重响间隔30秒 MOV R3,#30 AJMP MAIN
M1: ;闹铃重响间隔60秒