转到loop处执行
实现走时功能的子程序
INIT_TIME
MOVTMOD00000001B设置定时器T0工作模式1
MOVIE10000010B启用定时器T0中断产生
SETBET0
MOVTL078H加载初始值
MOVTH00ECH
SETBTR0启动定时器T0开始计时
RET
f中断服务程序
TO_SRV定时器T0计时中断程序每隔5秒中断一次PUSHACC将a压入堆栈
MOVTL078H重加载初始值
MOVTH00ECH
INCDEDA加1
秒述出
MOVADEDA
CJNEA200TT1是否1秒到了
MOVDEDA0计数器清零
CPLWLEDLED灯亮灭变化
INCSEC秒计数加1
MOVASEC
CJNEA60TT1是否1分钟到了
分输出
INCMIN分加1
MOVSEC0秒清零
MOVAMIN
CJNEA60TT1是否1h到了
INCHOUR时加1
MOVMIN0分清零
MOVAHOUR
CJNEA24TT1是否24h到了
MOVSEC0时分秒全部清零
MOVMIN0
MOVHOUR0
TT1
POPACC将a由堆栈取出
RETI
实现显示功能子程序
CONV转化小时数据
MOVAHOUR
MOVB10
DIVAB
MOVDPTRTABLE查表转换
MOVCAADPTR
MOVBUFA
MOVAB
MOVCAADPTR
MOVBUF1A
MOVAMIN
MOVB10
DIVAB
MOVDPTRTABLE查表转换
fMOVCAADPTR
MOVBUF2A
MOVAB
MOVCAADPTR
MOVBUF3A
RET
TABLE字符型数据编码表DB3FH06H5BH4FH
DB66H6DH7DH07H
DB7FH6FH77H7CH
DB39H5EH79H71H
扫描显示DISP
MOVA33H
MOVP0A
CLRP27
MOVR52
ACALLDELAY
SETBP27
MOVA32H
MOVP0A
CLRP26
MOVR52
ACALLDELAY
SETBP26
MOVA31H
MOVP0A
CLRP25
MOVR52
ACALLDELAY
SETBP25
MOVA30H
MOVP0A
CLRP24
MOVR52
ACALLDELAY
SETBP24
RET
实现调时功能的子程序SET_TIME设置目前时间
CLRTR0定时器工作暂停
MOVSEC0秒钟变量清楚为0
fL0
ACALLDISP扫描显示
JBK2L1未按下k2键则继续扫描
JNBK2按下则等待放开
K2小时调整
INCHOUR小时加1
MOVAHOUR
CJNEA24L11是否到了24h
MOVHOUR0小时变量清零
L11
ACALLCONV转换小时数据
ACALLDISP扫描显示
JMPL0继续程序执行
L1
JBK3L2
JNBK3
K3分调整
INCMIN
MOVAMIN
CJNEA60L21
MOVMIN0
L21
ACALLCONV
ACALLDISP
JMPL0跳转到L0处执行
L2
JBK4L0未按下k4则继续扫描
JNBK4按下则等待放开
ACALLBZ蜂鸣器响一声
ACALLLED_BLLED闪动
SETBTR0启动定时器
RET
蜂鸣器和指示灯等其它程序INIT计时单元清0
MOVDEDA05ms计时器清零
MOVSEC0秒分小时清零
MOVMIN0
MOVHOUR0
RET
蜂鸣器
BZ蜂鸣器响一声
MOVR6250
B1
ACALLDEX
fCPLSPK
DJNZR6B1
MOVR550
ACALLDELAY
RET
工作指示
LED_BL工作指示灯闪烁
MOVR46
LE1
CPLWLED位反向
MOVR525
ACALLDELAY
DJNZR4LE1延时50ms
RET
延时子程序DELAY总延时时间2ms×R5
MOVR610
D1
MOVR7100
DJNZR7
DJNZR6D1
DJNZR5DELAY
RET
蜂鸣器短暂延时子程序DEX
r