911单片机控制数字时钟.docx
- 文档编号:8805797
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:11
- 大小:20.34KB
911单片机控制数字时钟.docx
《911单片机控制数字时钟.docx》由会员分享,可在线阅读,更多相关《911单片机控制数字时钟.docx(11页珍藏版)》请在冰豆网上搜索。
911单片机控制数字时钟
原理图
;“源程序”
SCLKEQUP3.2
IOEQUP3.3
RSTEQUP3.4
JIA1EQUP3.6;"加一"口
TSHEQUP3.7;"调时间"口
HOURDATA62H
MINTUEDATA61H
SECONDDATA60H
DS1302_ADDRDATA32H
DS1302_DATADATA31H
ORG00H
MOVSP,#70H
LCALLDELY1
MOVDS1302_ADDR,#8EH;允许写1302
MOVDS1302_DATA,#00H
LCALLWRITE
MOVDS1302_ADDR,#81H;从1302读秒
LCALLREAD
ANLA,#7FH;启动1302振荡器
MOVDS1302_ADDR,#80H
MOVDS1302_DATA,A
LCALLWRITE
MOV20H,#00H;调整时标志单元
MOV21H,#0FH;调整时工作单元
MAIN1:
JBTSH,MAIN2F;按调时键往下执行
MOVDS1302_ADDR,#81H;从1302读秒
LCALLREAD
ORLA,#80H;停1302振荡器
MOVDS1302_ADDR,#80H
MOVDS1302_DATA,A
LCALLWRITE
SSS:
LCALLDISP;显示
JNBTSH,SSS;等待调键盘弹起
MOV20H,#8;设置调"时"标志
SSS3:
JNBTSH,FFF;按调时键转调"分"
LCALLDISP;显示
JBJIA1,SSS3;按"加一"键往下执行
SSS2:
LCALLDISP;显示
JNBJIA1,SSS2;等待"加一"键弹起
MOVR7,HOUR
LCALLJIAYI;"时"加一
MOVHOUR,A
CJNEA,#24H,SSS1;不等于24时转
MOVHOUR,#0;等于24时归零
SSS1:
MOVDS1302_ADDR,#84H;将"时"写入1302
MOVDS1302_DATA,HOUR
LCALLWRITE
MOVR0,HOUR;"时"分离
LCALLDIVIDE
MOV44H,R1
MOV45H,R2
SJMPSSS
MAIN2F:
LJMPMAIN2
FFF:
NOP;调"分"
LCALLDISP;显示
JNBTSH,FFF;等待调时键弹起
MOV20H,#4;置调"分"标志
FFF3:
JNBTSH,MMM;按调时键转调"秒"
LCALLDISP;显示
JBJIA1,FFF3;若按"加一"键往下执行
FFF2:
LCALLDISP;显示
JNBJIA1,FFF2;等待"加一"键弹起
MOVR7,MINTUE
LCALLJIAYI;"分"加一
MOVMINTUE,A
CJNEA,#60H,FFF1;不等于60转
MOVMINTUE,#00H;等于60则归零
FFF1:
MOVDS1302_ADDR,#82H;将"分"写入1302
MOVDS1302_DATA,MINTUE
LCALLWRITE
MOVR0,MINTUE
LCALLDIVIDE;"分"分离
MOV42H,R1
MOV43H,R2
SJMPFFF3
MMM:
LCALLDISP;显示
JNBTSH,MMM;若按调时键则转调"秒"
MOV20H,#2;置调"秒"标志
MMM3:
JNBTSH,MAIN3;按调时键退出调时
LCALLDISP;显示
JBJIA1,MMM3;按"加一"键往下执行
MMM2:
LCALLDISP;显示
JNBJIA1,MMM2;等待"加一"键弹起
MOVR7,SECOND
LCALLJIAYI;"秒"加一
MOVSECOND,A
CJNEA,#60H,MMM1;不等于60转
MOVSECOND,#00H
MMM1:
ORLSECOND,#80H
MOVDS1302_ADDR,#80H;写"秒"
MOVDS1302_DATA,SECOND
LCALLWRITE
ANLSECOND,#7FH
MOVR0,SECOND
LCALLDIVIDE;"秒"分离
MOV40H,R1
MOV41H,R2
SJMPMMM3
MAIN3:
LCALLDISP;显示
JNBTSH,MAIN3;等待调时键弹起
MOV20H,#00H
MOV21H,#0FH
MOVDS1302_ADDR,#81H;读"秒"
LCALLREAD
ANLA,#7FH;启动1302振荡器
MOVDS1302_ADDR,#80H
MOVDS1302_DATA,A
LCALLWRITE
LJMPMAIN1
MAIN2:
MOVP1,#0;读时分秒并显示
MOVDS1302_ADDR,#85H;读"时"
LCALLREAD
MOVHOUR,DS1302_DATA
MOVDS1302_ADDR,#83H;读"分"
LCALLREAD
MOVMINTUE,DS1302_DATA
MOVDS1302_ADDR,#81H;读"秒"
LCALLREAD
MOVSECOND,DS1302_DATA
MOVR0,HOUR;"时"分离
LCALLDIVIDE
MOV44H,R1
MOV45H,R2
MOVR0,MINTUE;"分"分离
LCALLDIVIDE
MOV42H,R1
MOV43H,R2
MOVR0,SECOND;"秒"分离
LCALLDIVIDE
MOV40H,R1
MOV41H,R2
LCALLDISP
LJMPMAIN1
DISP:
NOP
MOVP1,40H;显示"秒"低位
JNB01H,MIAOL
MOVA,21H
RLA
MOV21H,A
CJNEA,#78H,MIAO1
MIAO1:
JCMIAOL
CLRP2.4
CLRP2.5
SJMPFEN
MIAOL:
SETBP2.5
LCALLDELY1
CLRP2.5
LCALLDELY2
MOVP1,41H;显示"秒"高位
SETBP2.4
LCALLDELY1
CLRP2.4
LCALLDELY2
FEN:
MOVP1,42H;显示"分"低位
JNB02H,FENL
MOVA,21H
RLA
MOV21H,A
CJNEA,#78H,FEN1
FEN1:
JCFENL
CLRP2.2
CLRP2.3
SJMPSHI
FENL:
SETBP2.3
LCALLDELY1
CLRP2.3
LCALLDELY2
MOVP1,43H;显示"分"高位
SETBP2.2
LCALLDELY1
CLRP2.2
LCALLDELY2
SHI:
MOVP1,44H;显示"时"低位
JNB03H,SHIL
MOVA,21H
RLA
MOV21H,A
CJNEA,#78H,SHI1
SHI1:
JCSHIL
SJMPSHI2
SHIL:
SETBP2.1
LCALLDELY1
CLRP2.1
LCALLDELY2
MOVP1,45H;显示"时"高位
SETBP2.0
LCALLDELY1
CLRP2.0
LCALLDELY2
SJMPSFM
SHI2:
CLRP2.0
CLRP2.1
SFM:
RET
DELY1:
MOVR7,#5;痪д?
2MHz,延时2.58ms
DELY11:
MOVR6,#0
DJNZR6,$
DJNZR7,DELY11
RET
DELY2:
MOVR7,#1;痪д?
2MHz,延时0.52ms
DELY21:
MOVR6,#0
DJNZR6,$
DJNZR7,DElY21
RET
DElY3:
MOVR7,#40;痪д?
2MHz,延时8×2.58ms
DELY31:
MOVR6,#0
DJNZR6,$
DJNZR7,DELY31
RET
JIAYI:
MOVA,R7
ADDA,#1
DAA
RET
DIVIDE:
MOVA,R0;环掷胱映绦?
ANLA,#0FH
MOVR1,A
MOVA,R0
SWAPA
ANLA,#0FH
MOVR2,A
RET
;灰韵挛狣S1302在单片机晶振频率为4MHz时的串行通信子程序
WRITE:
CLRSCLK;?
302写子程序
SETBRST
MOVA,DS1302_ADDR
MOVR4,#8
WRITE1:
RRCA
CLRSCLK
MOVIO,C
SETBSCLK
DJNZR4,WRITE1
CLRSCLK
MOVA,DS1302_DATA
MOVR4,#8
WRITE2:
RRCA
CLRSCLK
MOVIO,C
SETBSCLK
DJNZR4,WRITE2
CLRRST
RET
READ:
CLRSCLK;1302读子程序
SETBRST
MOVA,DS1302_ADDR
MOVR4,#8
READ1:
RRCA
NOP
MOVIO,C
SETBSCLK
CLRSCLK
DJNZR4,READ1
MOVR4,#8
READ2:
CLRSCLK
MOVC,IO
RRCA
SETBSCLK
DJNZR4,READ2
MOVDS1302_DATA,A
CLRRST
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 911 单片机 控制数字 时钟