DS1302程序.docx
- 文档编号:3919341
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:13
- 大小:17.35KB
DS1302程序.docx
《DS1302程序.docx》由会员分享,可在线阅读,更多相关《DS1302程序.docx(13页珍藏版)》请在冰豆网上搜索。
DS1302程序
;1.每次上电,必须把秒寄存器高位(第7位)设置为0,时钟才能走时。
;2.如果需要写入数据和时钟日历信息,必须把“写保护”寄存器设置成为0
;内存数据定义
BitCntdata30h;数据位计数器
ByteCntdata31h;数据字节计数器
Commanddata32h;命令字节地址
RcvDatDATA40H;接收数据缓冲区
XmtDatDATA50H;发送数据缓冲区
;端口位定义
IO_DATAbitP1.1;数据传送总线
SCLKbitP1.0;时钟控制总线
RSTbitP1.2;复位总线
RSEQUP1.3;确定具体硬件的连接方式
RWEQUP1.4;确定具体硬件的连接方式
EEQUP1.5;确定具体硬件的连接方式
ORG 0000H
LJMP START
;**************************** ;mainprogram
ORG 0030H
START:
CLR RST
MOV SP,#2AH
;------------------------------------初始化1302-------------------------
SET1302:
LCALLWrite_Multiplebyte;初始化1302,将我们要设定的数据写入
CG:
LCALLRead_Multiplebyte;将我们设定的数据读出来
MOVP3,#10000000B
LCALLENABLE
MOVP3,#00011100B
LCALLENABLE
MOVP3,#00110000B
LCALLENABLE
MOVP3,#01100000B
LCALLENABLE
MOVP3,#00000001B
LCALLENABLE
LCALLSTLCD
JNBP2.4,SETB_TIME
LCALLYS
LJMPCG
SETB_TIME:
LCALLYS
MOVP3,#11110000B;显示器开、光标开、光标允许闪烁
LCALLENABLE;调用写入命令子程序
MOVP3,#01110011B
LCALLENABLE;调用写入命令子程序
JNBP2.4,SETB_TIME1
JBP2.5,LJMP_ADD
INC45H
LJMP_ADD:
JBP2.6,LJMP_SUBB
DEC45H
LJMP_SUBB:
MOVA,45H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#10,CHULI
MOVA,45H
ADDA,#6
MOV45H,A
CHULI:
MOVA,45H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#15,ZAICHULI
MOVA,45H
SUBBA,#6
MOV45H,A
ZAICHULI:
LCALLSTLCD
MOVP3,#01110011B
LCALLENABLE;调用写入命令子程序
JNBP2.7,OUTPUTTTT
LJMPSETB_TIME
OUTPUTTTT:
LJMPOUTPUT
SETB_TIME1:
LCALLYS
MOVP3,#11110000B;显示器开、光标开、光标允许闪烁
LCALLENABLE;调用写入命令子程序
MOVP3,#11010011B
LCALLENABLE;调用写入命令子程序
JNBP2.4,SETB_TIME2
JBP2.5,LJMP_ADD1
INC43H
LJMP_ADD1:
JBP2.6,LJMP_SUBB1
DEC43H
LJMP_SUBB1:
MOVA,43H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#10,CHULI1
MOVA,43H
ADDA,#6
MOV43H,A
CHULI1:
MOVA,43H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#15,ZAICHULI1
MOVA,43H
SUBBA,#6
MOV43H,A
ZAICHULI1:
LCALLSTLCD
MOVP3,#11010011B
LCALLENABLE;调用写入命令子程序
JNBP2.7,OUTPUT
LJMPSETB_TIME1
SETB_TIME2:
LCALLYS
MOVP3,#11110000B;显示器开、光标开、光标允许闪烁
LCALLENABLE;调用写入命令子程序
MOVP3,#00010011B
LCALLENABLE;调用写入命令子程序
JNBP2.4,SETB_TIME3
JBP2.5,LJMP_ADD2
INC44H
LJMP_ADD2:
JBP2.6,LJMP_SUBB2
DEC44H
LJMP_SUBB2:
MOVA,44H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#10,CHULI2
MOVA,44H
ADDA,#6
MOV44H,A
CHULI2:
MOVA,44H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#15,ZAICHULI2
MOVA,44H
SUBBA,#6
MOV44H,A
ZAICHULI2:
LCALLSTLCD
MOVP3,#00010011B
LCALLENABLE;调用写入命令子程序
JNBP2.7,OUTPUT
LJMPSETB_TIME2
OUTPUT:
LCALLWrite_Enable;写允许
MOVCommand,#0BEh;命令字节为BEh
MOVByteCnt,#8;多字节写入模式此模块为8个
MOVR0,#XmtDat;数据地址覆给R0
MOVXmtDat,40H;秒单元内容为59h
MOVXmtDat+1,41H;分单元内容为59h
MOVXmtDat+2,42H;时单元内容为13h
MOVXmtDat+3,43H;日期单元内容为21h
MOVXmtDat+4,44H;月单元内容为06h
MOVXmtDat+5,45H;星期单元内容为03h
MOVXmtDat+6,46H;年单元内容为00h
MOVXmtDat+7,#0;写保护单元内容为00h
LCALLSend_Byte;调用写入数据子程序
LJMPCG
SETB_TIME3:
LCALLYS
MOVP3,#11110000B;显示器开、光标开、光标允许闪烁
LCALLENABLE;调用写入命令子程序
MOVP3,#10100011B
LCALLENABLE;调用写入命令子程序
JNBP2.4,SETB_TIME4
JBP2.5,LJMP_ADD3
INC46H
LJMP_ADD3:
JBP2.6,LJMP_SUBB3
DEC46H
LJMP_SUBB3:
MOVA,46H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#10,CHULI3
MOVA,46H
ADDA,#6
MOV46H,A
CHULI3:
MOVA,46H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#15,ZAICHULI3
MOVA,46H
SUBBA,#6
MOV46H,A
ZAICHULI3:
LCALLSTLCD
MOVP3,#10100011B
LCALLENABLE;调用写入命令子程序
JNBP2.7,OUTPUT
LJMPSETB_TIME3
SETB_TIME4:
LCALLYS
MOVP3,#11110000B;显示器开、光标开、光标允许闪烁
LCALLENABLE;调用写入命令子程序
MOVP3,#11010001B
LCALLENABLE;调用写入命令子程序
JNBP2.4,SETB_TIME5
JBP2.5,LJMP_ADD4
INC40H
LJMP_ADD4:
JBP2.6,LJMP_SUBB4
DEC40H
LJMP_SUBB4:
MOVA,40H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#10,CHULI4
MOVA,40H
ADDA,#6
MOV40H,A
CHULI4:
MOVA,40H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#15,ZAICHULI4
MOVA,40H
SUBBA,#6
MOV40H,A
ZAICHULI4:
LCALLSTLCD
MOVP3,#11010001B
LCALLENABLE;调用写入命令子程序
JNBP2.7,OUTPUTT
LJMPSETB_TIME4
SETB_TIME5:
LCALLYS
MOVP3,#11110000B;显示器开、光标开、光标允许闪烁
LCALLENABLE;调用写入命令子程序
MOVP3,#00010001B
LCALLENABLE;调用写入命令子程序
JNBP2.4,SETB_TIME6
JBP2.5,LJMP_ADD5
INC41H
LJMP_ADD5:
JBP2.6,LJMP_SUBB5
DEC41H
LJMP_SUBB5:
MOVA,41H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#10,CHULI5
MOVA,41H
ADDA,#6
MOV41H,A
CHULI5:
MOVA,41H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#15,ZAICHULI5
MOVA,41H
SUBBA,#6
MOV41H,A
ZAICHULI5:
LCALLSTLCD
MOVP3,#00010001B
LCALLENABLE;调用写入命令子程序
JNBP2.7,OUTPUTT
LJMPSETB_TIME5
OUTPUTT:
LJMPOUTPUT
SETB_TIME6:
LCALLYS
MOVP3,#11110000B;显示器开、光标开、光标允许闪烁
LCALLENABLE;调用写入命令子程序
MOVP3,#10100001B
LCALLENABLE;调用写入命令子程序
JNBP2.4,SETB_TIMEE
JBP2.5,LJMP_ADD6
INC42H
LJMP_ADD6:
JBP2.6,LJMP_SUBB6
DEC42H
LJMP_SUBB6:
MOVA,42H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#10,CHULI6
MOVA,42H
ADDA,#6
MOV42H,A
CHULI6:
MOVA,42H
MOVB,#16
DIVAB
MOVA,B
CJNEA,#15,ZAICHULI6
MOVA,42H
SUBBA,#6
MOV42H,A
ZAICHULI6:
LCALLSTLCD
MOVP3,#10100001B
LCALLENABLE;调用写入命令子程序
JNBP2.7,OUTPUTT
LJMPSETB_TIME6
SETB_TIMEE:
LJMPSETB_TIME
Send_Byte:
CLRRST;复位引脚为低电平所有数据传送终止
NOP
CLRSCLK;清时钟总线
NOP
SETBRST;复位引脚为高电平逻辑控制有效
NOP
MOVA,Command;准备发送命令字节
MOVBitCnt,#08h
S_Byte0:
RRCA;将最低位传送给进位位C
MOVIO_DATA,C;位传送至数据总线
NOP
SETBSCLK;时钟上升沿发送数据有效
NOP
CLRSCLK;清时钟总线
DJNZBitCnt,S_Byte0;位传送未完毕则继续
NOP
S_Byte1:
;准备发送数据
MOVA,@R0;传送数据过程与传送命令相同
MOVBitCnt,#08h
S_Byte2:
RRCA
MOVIO_DATA,C
NOP
SETBSCLK
NOP
CLRSCLK
DJNZBitCnt,S_Byte2
INCR0;发送数据的内存地址加1
DJNZByteCnt,S_Byte1;字节传送未完毕则继续
NOP
CLRRST;逻辑操作完毕清RST
RET
Receive_Byte:
CLRRST;复位引脚为低电平所有数据传送终止
NOP
CLRSCLK;清时钟总线
NOP
SETBRST;复位引脚为高电平逻辑控制有效
MOVA,Command;准备发送命令字节
MOVBitCnt,#08h;传送位数为8
R_Byte0:
RRCA;将最低位传送给进位位C
MOVIO_DATA,C;位传送至数据总线
NOP
SETBSCLK;时钟上升沿发送数据有效
NOP
CLRSCLK;清时钟总线
DJNZBitCnt,R_Byte0;位传送未完毕则继续
NOP
R_Byte1:
;准备接收数据
CLRA;清类加器
CLRC;清进位位C
MOVBitCnt,#08h;接收位数为8
R_Byte2:
NOP
MOVC,IO_DATA;数据总线上的数据传送给C
RRCA;从最低位接收数据
SETBSCLK;时钟总线置高
NOP
CLRSCLK;时钟下降沿接收数据有效
DJNZBitCnt,R_Byte2;位接收未完毕则继续
MOV@R1,A;接收到的完整数据字节放入接收内存缓冲区
INCR1;接收数据的内存地址加1
DJNZByteCnt,R_Byte1;字节接收未完毕则继续
NOP
CLRRST;逻辑操作完毕清RST
RET
;--写保护寄存器操作------------------------------------------
Write_Enable:
MOVCommand,#8Eh;命令字节为8E
MOVByteCnt,#1;单字节传送模式
MOVR0,#XmtDat;数据地址覆给R0
MOVXmtDat,#00h;数据内容为0写入允许
ACALLSend_Byte;调用写入数据子程序
RET
;当写保护寄存器的最高位为1时禁止数据写入寄存器---------------
Write_Disable:
MOVCommand,#8Eh;命令字节为8E
MOVByteCnt,#1;单字节传送模式
MOVR0,#XmtDat;数据地址覆给R0
MOVXmtDat,#80h;数据内容为80h禁止写入
ACALLSend_Byte;调用写入数据子程序
RET;返回调用本子程序处
;当把秒寄存器的第7位时钟停止位设置为0时起动时钟开始---------
Osc_Enable:
MOVCommand,#80h;命令字节为80
MOVByteCnt,#1;单字节传送模式
MOVR0,#XmtDat;数据地址覆给R0
MOVXmtDat,#00h;数据内容为0振荡器工作允许
ACALLSend_Byte;调用写入数据子程序
RET;返回调用本子程序处
;当把秒寄存器的第7位时钟停止位设置为1时时钟振荡器停止HT1380进入低功耗方式---------------
Osc_Disable:
MOVCommand,#80h;命令字节为80
MOVByteCnt,#1;单字节传送模式
MOVR0,#XmtDat;数据地址覆给R0
MOVXmtDat,#80h;数据内容为80h振荡器停止
ACALLSend_Byte;调用写入数据子程序
RET;返回调用本子程序处
;写入00年6月21日星期三13时59分59---------------------
Write_Multiplebyte:
MOVCommand,#0BEh;命令字节为BEh
MOVByteCnt,#8;多字节写入模式此模块为8个
MOVR0,#XmtDat;数据地址覆给R0
MOVXmtDat,#48h;秒单元内容为59h
MOVXmtDat+1,#14h;分单元内容为59h
MOVXmtDat+2,#09h;时单元内容为13h
MOVXmtDat+3,#16h;日期单元内容为21h
MOVXmtDat+4,#15h;月单元内容为06h
MOVXmtDat+5,#05h;星期单元内容为03h
MOVXmtDat+6,#07;年单元内容为00h
MOVXmtDat+7,#0;写保护单元内容为00h
ACALLSend_Byte;调用写入数据子程序
RET;返回调用本子程序处
;读出寄存器0-7的内容程序设置如下
Read_Multiplebyte:
MOVCommand,#0BFh;命令字节为BFh
MOVByteCnt,#8;多字节读出模式此模块为8个
MOVR1,#RcvDat;数据地址覆给R1
ACALLReceive_Byte;调用读出数据子程序
RET;返回调用本子程序处
SSH:
MOVB,#16
DIVAB
MOV61H,B
MOV62H,A
MOVR1,#62H
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP3,A
SETBRS
CLRRW
CLRE
LCALLDELAY
SETBE
DECR1
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP3,A
SETBRS
CLRRW
CLRE
LCALLDELAY
SETBE
RET
ENABLE:
CLRRS;写入控制命令的子程序
CLRRW
CLRE
ACALLDELAY
SETBE
RET
DELAY:
MOVP3,#0FFH;判断液晶显示器是否忙的子程序
CLRRS
SETBRW
CLRE
NOP
SETBE
JBP3.0,DELAY;如果P1.7为高电平表示忙就循环等待
RET
;写入8时12小时模式程序设置如下
Write_Singlebyte:
MOVCommand,#84h;命令字节为84h
MOVByteCnt,#1;单字节传送模式
MOVR0,#XmtDat;数据地址覆给R0
MOVXmtDat,#88h;数据内容为88h
ACALLSend_Byte;调用写入数据子程序
RET;返回调用本子程序处
STLCD:
MOVP3,#00000001B;显示器开、光标开、光标允许闪烁
LCALLENABLE;调用写入命令子程序
MOVA,#0;显示时间字符
MOVR7,#0
TIME:
MOVDPTR,#TAB2
MOVCA,@A+DPTR
MOVP3,A
LCALLCCFF1
INCR7
MOVA,R7
CJNEA,#5,TIME
MOVA,42H
LCALLSSH
MOVP3,#10110100B
LCALLCCFF1
MOVA,41H
LCALLSSH
MOVP3,#10110100B
LCALLCCFF1
MOVA,40H
LCALLSSH
MOVP3,#00000011B
LCALLENABLE
MOVA,#0;显示日期字符
MOVR7,#0
DATE:
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVP3,A
LCALLCCFF1
INCR7
MOVA,R7
CJNEA,#5,DATE
MOVA,46H
LCALLSSH
MOVP3,#10110100B
LCALLCCFF1
MOVA,44H
LCALLSSH
MOVP3,#10110100B
LCALLCCFF1
MOVA,43H
LCALLSSH
MOVP3,#00000100B
LCALLCCFF1
MOVA,45H
LCALLSSH
RET
YS:
MOVR5,#60
D2:
MOVR6,#50
D1:
MOVR7,#66
DJNZR7,$
DJNZR6,D1
DJNZR5,D2
RET
CCFF1:
SETBRS
CLRRW
CLRE
LCALLDELAY
SETBE
RET
TAB:
DB00001100B,10001100B,01001100B,11001100B,00101100B,10101100B,01101100B,11101100B,00011100B,10011100B,01110100B,10110100B
TAB2:
DB00101010b,10010110b,10110110b,10100110b,01011100b
TAB1:
DB00100010b,10000110b,00101110b,10100110b,01011100b
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DS1302 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)