DS1302程序Word文档下载推荐.docx

上传人:b****6 文档编号:16825527 上传时间:2022-11-26 格式:DOCX 页数:13 大小:17.35KB
下载 相关 举报
DS1302程序Word文档下载推荐.docx_第1页
第1页 / 共13页
DS1302程序Word文档下载推荐.docx_第2页
第2页 / 共13页
DS1302程序Word文档下载推荐.docx_第3页
第3页 / 共13页
DS1302程序Word文档下载推荐.docx_第4页
第4页 / 共13页
DS1302程序Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

DS1302程序Word文档下载推荐.docx

《DS1302程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DS1302程序Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

DS1302程序Word文档下载推荐.docx

MOV 

SP,#2AH

------------------------------------初始化1302-------------------------

SET1302:

LCALLWrite_Multiplebyte;

初始化1302,将我们要设定的数据写入

CG:

LCALLRead_Multiplebyte;

将我们设定的数据读出来

MOVP3,#10000000B

LCALLENABLE

MOVP3,#00011100B

MOVP3,#00110000B

MOVP3,#01100000B

MOVP3,#00000001B

LCALLSTLCD

JNBP2.4,SETB_TIME

LCALLYS

LJMPCG

SETB_TIME:

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

ADDA,#6

MOV45H,A

CHULI:

CJNEA,#15,ZAICHULI

SUBBA,#6

ZAICHULI:

JNBP2.7,OUTPUTTTT

LJMPSETB_TIME

OUTPUTTTT:

LJMPOUTPUT

SETB_TIME1:

MOVP3,#11010011B

JNBP2.4,SETB_TIME2

JBP2.5,LJMP_ADD1

INC43H

LJMP_ADD1:

JBP2.6,LJMP_SUBB1

DEC43H

LJMP_SUBB1:

MOVA,43H

CJNEA,#10,CHULI1

MOV43H,A

CHULI1:

CJNEA,#15,ZAICHULI1

ZAICHULI1:

JNBP2.7,OUTPUT

LJMPSETB_TIME1

SETB_TIME2:

MOVP3,#00010011B

JNBP2.4,SETB_TIME3

JBP2.5,LJMP_ADD2

INC44H

LJMP_ADD2:

JBP2.6,LJMP_SUBB2

DEC44H

LJMP_SUBB2:

MOVA,44H

CJNEA,#10,CHULI2

MOV44H,A

CHULI2:

CJNEA,#15,ZAICHULI2

ZAICHULI2:

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;

调用写入数据子程序

SETB_TIME3:

MOVP3,#10100011B

JNBP2.4,SETB_TIME4

JBP2.5,LJMP_ADD3

INC46H

LJMP_ADD3:

JBP2.6,LJMP_SUBB3

DEC46H

LJMP_SUBB3:

MOVA,46H

CJNEA,#10,CHULI3

MOV46H,A

CHULI3:

CJNEA,#15,ZAICHULI3

ZAICHULI3:

LJMPSETB_TIME3

SETB_TIME4:

MOVP3,#11010001B

JNBP2.4,SETB_TIME5

JBP2.5,LJMP_ADD4

INC40H

LJMP_ADD4:

JBP2.6,LJMP_SUBB4

DEC40H

LJMP_SUBB4:

MOVA,40H

CJNEA,#10,CHULI4

MOV40H,A

CHULI4:

CJNEA,#15,ZAICHULI4

ZAICHULI4:

JNBP2.7,OUTPUTT

LJMPSETB_TIME4

SETB_TIME5:

MOVP3,#00010001B

JNBP2.4,SETB_TIME6

JBP2.5,LJMP_ADD5

INC41H

LJMP_ADD5:

JBP2.6,LJMP_SUBB5

DEC41H

LJMP_SUBB5:

MOVA,41H

CJNEA,#10,CHULI5

MOV41H,A

CHULI5:

CJNEA,#15,ZAICHULI5

ZAICHULI5:

LJMPSETB_TIME5

OUTPUTT:

SETB_TIME6:

MOVP3,#10100001B

JNBP2.4,SETB_TIMEE

JBP2.5,LJMP_ADD6

INC42H

LJMP_ADD6:

JBP2.6,LJMP_SUBB6

DEC42H

LJMP_SUBB6:

MOVA,42H

CJNEA,#10,CHULI6

MOV42H,A

CHULI6:

CJNEA,#15,ZAICHULI6

ZAICHULI6:

LJMPSETB_TIME6

SETB_TIMEE:

Send_Byte:

CLRRST;

复位引脚为低电平所有数据传送终止

NOP

CLRSCLK;

清时钟总线

SETBRST;

复位引脚为高电平逻辑控制有效

MOVA,Command;

准备发送命令字节

MOVBitCnt,#08h 

S_Byte0:

RRCA;

将最低位传送给进位位C

MOVIO_DATA,C;

位传送至数据总线

SETBSCLK;

时钟上升沿发送数据有效

CLRSCLK;

清时钟总线

DJNZBitCnt,S_Byte0;

位传送未完毕则继续

S_Byte1:

准备发送数据

MOVA,@R0;

传送数据过程与传送命令相同

MOVBitCnt,#08h

S_Byte2:

RRCA

MOVIO_DATA,C

SETBSCLK

CLRSCLK

DJNZBitCnt,S_Byte2

INCR0;

发送数据的内存地址加1

DJNZByteCnt,S_Byte1;

字节传送未完毕则继续

逻辑操作完毕清RST

RET

Receive_Byte:

MOVA,Command;

准备发送命令字节

MOVBitCnt,#08h;

传送位数为8

R_Byte0:

DJNZBitCnt,R_Byte0;

R_Byte1:

准备接收数据

CLRA;

清类加器

CLRC;

清进位位C

接收位数为8

R_Byte2:

MOVC,IO_DATA;

数据总线上的数据传送给C

从最低位接收数据

时钟总线置高

时钟下降沿接收数据有效

DJNZBitCnt,R_Byte2;

位接收未完毕则继续

MOV@R1,A;

接收到的完整数据字节放入接收内存缓冲区

INCR1;

接收数据的内存地址加1

DJNZByteCnt,R_Byte1;

字节接收未完毕则继续

--写保护寄存器操作------------------------------------------

Write_Enable:

MOVCommand,#8Eh;

命令字节为8E

MOVByteCnt,#1;

单字节传送模式

MOVR0,#XmtDat;

MOVXmtDat,#00h;

数据内容为0写入允许

ACALLSend_Byte;

当写保护寄存器的最高位为1时禁止数据写入寄存器---------------

Write_Disable:

MOVXmtDat,#80h;

数据内容为80h禁止写入

RET;

返回调用本子程序处

当把秒寄存器的第7位时钟停止位设置为0时起动时钟开始---------

Osc_Enable:

MOVCommand,#80h;

命令字节为80

单字节传送模式

数据内容为0振荡器工作允许

当把秒寄存器的第7位时钟停止位设置为1时时钟振荡器停止HT1380进入低功耗方式---------------

Osc_Disable:

命令字节为80

数据内容为80h振荡器停止

写入00年6月21日星期三13时59分59---------------------

Write_Multiplebyte:

MOVXmtDat,#48h;

MOVXmtDat+1,#14h;

MOVXmtDat+2,#09h;

MOVXmtDat+3,#16h;

MOVXmtDat+4,#15h;

MOVXmtDat+5,#05h;

MOVXmtDat+6,#07;

读出寄存器0-7的内容程序设置如下

Read_Multiplebyte:

MOVCommand,#0BFh;

命令字节为BFh

多字节读出模式此模块为8个

MOVR1,#RcvDat;

数据地址覆给R1

ACALLReceive_Byte;

调用读出数据子程序

RET;

返回调用本子程序处

SSH:

MOV61H,B

MOV62H,A

MOVR1,#62H

MOVA,@R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP3,A

SETBRS

CLRRW

CLRE

LCALLDELAY

SETBE

DECR1

ENABLE:

CLRRS;

写入控制命令的子程序

CLRRW 

CLRE 

ACALLDELAY 

SETBE 

DELAY:

MOVP3,#0FFH;

判断液晶显示器是否忙的子程序

CLRRS 

SETBRW

NOP 

JBP3.0,DELAY;

如果P1.7为高电平表示忙就循环等待 

写入8时12小时模式程序设置如下

Write_Singlebyte:

MOVCommand,#84h;

命令字节为84h

MOVXmtDat,#88h;

数据内容为88h

STLCD:

MOVP3,#00000001B;

MOVA,#0;

显示时间字符

MOVR7,#0

TIME:

MOVDPTR,#TAB2

LCALLCCFF1

INCR7

MOVA,R7

CJNEA,#5,TIME

LCALLSSH

MOVP3,#10110100B

MOVP3,#00000011B

显示日期字符

DATE:

MOVDPTR,#TAB1

CJNEA,#5,DATE

MOVP3,#00000100B

YS:

MOVR5,#60

D2:

MOVR6,#50

D1:

MOVR7,#66

DJNZR7,$

DJNZR6,D1

DJNZR5,D2

RET

CCFF1:

LCALLDELAY 

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1