时分秒数字钟程序代码.docx
- 文档编号:8958322
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:11
- 大小:15.99KB
时分秒数字钟程序代码.docx
《时分秒数字钟程序代码.docx》由会员分享,可在线阅读,更多相关《时分秒数字钟程序代码.docx(11页珍藏版)》请在冰豆网上搜索。
时分秒数字钟程序代码
2.源程序
ORG0000H
LJMPSTART
ORG000BH
LJMPTIME
;********初始化*********
START:
MOVSP,#50H
MOV20H,#00H;定义秒
MOV21H,#00H;定义分
MOV22H,#00H;定义时
MOV23H,#01H;定义闹钟分钟
MOV24H,#01H;定义闹钟小时
MOV25H,#00H
MOV26H,#01H
MOV30H,#00H;定义秒BCD
MOV31H,#00H
MOV32H,#00H;定义分BCD
MOV33H,#00H
MOV34H,#00H;定义小时BCD
MOV35H,#00H
MOV36H,#01H
MOV37H,#00H
MOV38H,#01H
MOV39H,#00H
MOV50H,#00H;按键次数
MOVTMOD,#01H;16位计数器
MOVTH0,#03CH;赋初值
MOVTL0,#0B0H
MOVIE,#87H;中断允许
SETBTR0;启动T0
MOVR2,#14H
MOVP2,#0FFH
;*********主程序**********
MAIN:
JBP1.4,GB
LCALLTIMEPRO;调用闹钟判断
GB:
LCALLDISPLAY1;调用时间显示
JBP1.3,M1;P1.3=1时转移S4没有按下LCALLSETTIME;调用SETTIME调时子程序
LJMPMAIN
M1:
JBP1.2,M2;P1g.2=1时转移S3
LCALLSETATIME;调用SETATIME子程序
LJMPMAIN
M2:
JBP1.0,M4;P1.0=1时转移S1
LCALLLOOKATIME;调用LOOKATIME显示闹钟子程序M4:
LJMPMAIN
;*********延时子程序********
DELAY:
MOVR4,#030H
DL00:
MOVR5,#0FFH
DL11:
MOVR6,#9H
DL12:
DJNZR6,DL12
DJNZR5,DL11
DJNZR4,DL00
RET
;***********时间调整*******
SETTIME:
;设置时间
L0:
LCALLDISPLAY1
MM1:
JBP1.3,L1;P1.3=1时转移
MOVC,P1.3
JCMM1
LCALLDELAY1;延时
JCMM1
MSTOP1:
MOVC,P1.3;P1.3为0时转移
JNCMSTOP1
LCALLDELAY1;延时
MOVA,50H
INC50H
CJNEA,#00H,HJ1
LJMPL0
HJ1:
MOVC,P1.3
JNCMSTOP1
INC22H;小时自加一
MOVA,22H
CJNEA,#18H,GO12;小时计数循环
MOV22H,#00H;复位
MOV34H,#00H
MOV35H,#00H
LJMPL0
L1:
JBP1.1,L2;P1.1=1时转移
MOVC,P1.1
JCL1
LCALLDELAY1;延时
JCL1
MSTOP2:
MOVC,P1.1;P1.1=0时转移
JNCMSTOP2
LCALLDELAY1;延时
MOVC,P1.1
JNCMSTOP2
INC21H;分钟加一
MOVA,21H
CJNEA,#3CH,GO11;分钟计数循环
MOV21H,#00H;复位
MOV32H,#00H
MOV33H,#00H
LJMPL0
GO11:
MOVB,#0AH
DIVAB
MOV32H,B;将A的低4位存入32单元MOV33H,A;将A的高4位存入33单元LJMPL0
GO12:
MOVB,#0AH
DIVAB
MOV34H,B;将A的低4位存入34单元
MOV35H,A;将A的高4位存入35单元LJMPL0
L2:
JBP1.0,L0;P1.0=1时转移
MOVC,P1.0
JCL2
LCALLDELAY1;延时
MOVC,P1.0
JCL2
STOP1:
MOVC,P1.0;P1.0=0时转移
JNCSTOP1
LCALLDELAY1;延时
MOVC,P1.0
JNCSTOP1
MOV50H,#00H
LJMPMAIN
;*******设置闹钟*******
SETATIME:
LCALLDISPLAY2;调用DISPLAY2显示闹钟
N0:
LCALLDISPLAY2
MM2:
JBP1.2,N1;P1.2=1时转移
MOVC,P1.2
JCMM2
LCALLDELAY1;延时
JCMM2
MSTOP3:
MOVC,P1.2;P1.2=0时转移
JNCMSTOP3
LCALLDELAY1;延时
MOVA,50H
INC50H
CJNEA,#00H,HJ2
HJ2:
MOVC,P1.2
JNCMSTOP3
INC24H;小时加一
MOVA,24H
CJNEA,#24,GO22;小时计数循环
MOV24H,#00H;复位
MOV38H,#00H
MOV39H,#00H
LJMPN0
N1:
JBP1.1,N2;P1.1=1时转移
MOVC,P1.1
JCN1
LCALLDELAY1;延时
JCN1
MSTOP4:
MOVC,P1.1;P1.1=0时转移
JNCMSTOP4
LCALLDELAY1;延时
MOVC,P1.1
JNCMSTOP4
INC23H;分钟加一
MOVA,23H
CJNEA,#60,GO21;分钟计数循环
MOV23H,#00H;复位
MOV36H,#00H
MOV37H,#00H
LJMPN0
GO21:
MOVB,#0AH
DIVAB
MOV36H,B;将A的低4位存入36单元MOV37H,A;将A的高4位存入37单元LJMPN0
GO22:
MOVB,#0AH
DIVAB
MOV38H,B;将A的低4位存入38单元MOV39H,A;将A的高4位存入39单元LJMPN0
N2:
JBP1.0,N0;P1.0=1时转移
MOVC,P1.0
JCN2
LCALLDELAY1;延时
MOVC,P1.0
JCN2
STOP2:
MOVC,P1.0
LCALLDELAY1
MOVC,P1.0
JNCSTOP2
MOV50H,#00H
LJMPMAIN
;*******闹钟判断*****************
TIMEPRO:
MOVA,21H
MOVB,23H
CJNEA,B,BK;判断定时闹钟的分钟MOVA,22H
MOVB,24H
CJNEA,B,BK;判断定时闹钟的小时SETB25H.0
MOVC,25H.0
LCALLTIMEOUT;调用TIMEOUT
BK:
RET
;**************喇叭报警*****************TIMEOUT:
X1:
LCALLBZ;调用喇叭响应程序
CLR25H.0;调用喇叭响应程序结束LCALLDELAY;延时
CLR25H.0
LJMPDISPLAY1
BZ:
MOVC,25H.1
MOVP1.6,C
CLRP1.7
MOVR7,#0FFH;喇叭响应时间
T2:
MOVR6,#0FFH
T3:
DJNZR6,T3
DJNZR7,T2
SETBP1.7
RET
;*************显示闹钟时间************LOOKATIME:
LCALLDISPLAY2
MM:
JNBP1.0,LOOKATIME
LCALLDELAY1
LJMPMAIN
DELAY1:
MOVR4,#14H;时间延时
DL001:
MOVR5,#0FFH
DL111:
DJNZR5,DL111
DJNZR4,DL001
RET
;***********定时**************
TIME:
PUSHACC;保护现场
PUSHPSW
MOVTH0,#03CH;初值
MOVTL0,#0B0H
DJNZR2,RET0
MOVR2,#14H
MOVA,20H
CPL25H.1
CLRC
INCA;秒自加一
CJNEA,#3CH,GO1;秒计数循环
MOV20H,#0;复位
MOV30H,#0
MOV31H,#0
MOVA,21H
INCA;分钟自加一
CJNEA,#3CH,GO2;分钟计数循环
MOV21H,#0H;复位
MOV32H,#0
MOV33H,#0
MOVA,22H
INCA;小时自加一
CJNEA,#18H,GO3;小时计数循环
MOV22H,#00H;复位
MOV34H,#0
MOV35H,#0
AJMPRET0
GO1:
MOV20H,A
MOVB,#0AH
DIVAB
MOV31H,A;将A的低4位存入31单元MOV30H,B;将A的高4位存入30单元AJMPRET0
GO2:
MOV21H,A
MOVB,#0AH
DIVAB
MOV33H,A;将A的低4位存入33单元MOV32H,B;将A的高4位存入32单元AJMPRET0
GO3:
MOV22H,A
MOVB,#0AH
DIVAB
MOV35H,A;将A的低4位存入35单元MOV34H,B;将A的高4位存入34单元
AJMPRET0
RET0:
POPPSW;恢复现场
POPACC
RETI
;********显示子程序**********
DISPLAY1:
MOVR0,#30H
MOVR3,#0FEH
MOVA,R3
PLAY1:
MOVP2,A
MOVA,@R0;取要显示的数据
MOVDPTR,#DSEG1;指向字形段码首地址MOVCA,@A+DPTR
CJNER0,#34H,PA
ORLA,#80H
PA:
CJNER0,#32H,PB
ORLA,#80H
PB:
CPLA;查表取字形段码
MOVP0,A;指向P0口
LCALLDL1
MOVP2,#0FFH
MOVA,R3;判断是否显示到最低位RLA;左移一位
JNBACC.6,LD1
INCR0;缓冲器地址加一
MOVR3,A
LJMPPLAY1
LD1:
RET
DISPLAY2:
PUSHACC;保护现场
PUSHPSW
MOVR0,#36H
MOVR3,#0FBH
MOVA,R3
PLAY2:
MOVP2,A
MOVA,@R0;取要显示的数据
MOVDPTR,#DSEG1;指向字形段码首地址
MOVCA,@A+DPTR
CJNER0,#38H,PP
ORLA,#80H
PP:
CPLA;查表取字形段码
MOVP0,A;指向P0口
LCALLDL1;调用DL1
MOVP2,#0FFH
MOVA,R3;判断是否显示到最低位
RLA;左移一位
JNBACC.6,LD2
INCR0;缓冲器地址加一MOVR3,A
LJMPPLAY2;调用PLAY2LD2:
POPPSW
POPACC;恢复现场
RET
;******DELAY*******
DL1:
MOVR7,#20H
DL:
MOVR6,#20H
DL6:
DJNZR6,$
DJNZR7,DL
RET
DSEG1:
DB3FH,06H,5BH,4FH,66H;七段码表
DB6DH,7DH,07H,7FH,6FH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时分 数字 程序代码
![提示](https://static.bdocx.com/images/bang_tan.gif)