;本电子钟实现24小时制,8位数码管显示时分秒,可整点报时
;显示格式:00-00-00(设置小时十位为0时,不显示)
;通过3只按键来调整时间
;调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁
; 增加键ADD_KEY:P1.1;按一次使选中位加1
; 减少键DEC_KEY:P1.2;按一次使选中位减1
;如果长按ADD_KEY或DEC_KEY,可进行调时、调分快进快减,并停止闪烁
;如果选中位是秒,则按增加键或减少键可实现,但无调时快进和快减功能
;P0口输出数码管段选信号,P2口输出数码管位选信号;晶振11.0592M
;P3.1为蜂鸣器发声报时
;编程人:郑振凡 编写日期:2009年12月2日 修改日期(最终):2009年12月6日
;-------------------------------------------------------------------------
;-----------
;程序入口
;-----------
ORG 0000H ;程序入口地址
LJMP START
ORG 000BH ;定时器0中断入口地址
LJMP TIMET0
ORG 1000H
;----------------------------------
;显P.程序
;功能:可以在8个数码闪烁移位进行屏保
;----------------------------------
START: MOV R6, #2 ;闪烁次数
MOV A, #0FEH ;位选
TT: MOV P2, A
MOV P0, #0CH ;段码"P."
LCALL DELAY
MOV P2, #0FFH
DJNZ R6, TT
LCALL DELAY
LCALL DELAY1
RR A
JB P1.0, TT ;键是否按下,没按下则转移
LCALL DELAY ;延时去抖
JNB P1.0, KAI ;再次判断键是否按下
KAI: SETB P1.0
CLR A ;状态恢复
MOV P0, #0FFH
LCALL DELAY1
SETB 48H ;用于调时闪烁标志
SETB 47H ;用于产生脉冲用于调时快进的脉冲
MOV R1, #0 ;键功能标志:0计时、1调时、2调分、3调秒
;-------------------------------
;清16位寄存器及初始化
;50H 用于控制秒基准时钟源的产生
;51H 清零秒寄存器
;52H 清零分寄存器
;53H 清零时寄存器
;5FH 用于秒个位;5EH 用于秒十位
;5DH 用于分个位;5CH 用于分十位
;5BH 用于时个位;5AH 用于时十位
;54H 用于控制调时闪烁
;-------------------------------
MOV R0, #50H ;初始化
MOV R6, #10H
CLEARJCQ:
MOV @R0, #00H ;清寄存器
INC R0