📄 新型实时时钟芯片ds12887原理与应用.htm
字号:
<TD borderColor=#ffffff borderColorLight=#000000 align=middle
borderColorDark=#000000><FONT face=楷体_GB2312 size=1>0</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle
borderColorDark=#000000><FONT face=楷体_GB2312 size=1>0</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle
borderColorDark=#000000><FONT face=楷体_GB2312 size=1>0</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle
borderColorDark=#000000><FONT face=楷体_GB2312
size=1>0</FONT></TD></TR></TBODY></TABLE><FONT face=宋体
size=2>
IRQF:中断申请标志位。当下列表达式中一个或多个为真时,置1。<BR>
PF=PIE=1;AF=AIE=1;<BR> UF=UIE=1;<BR>
即:IRQF=PF·PIE+AF·AIE+UF·UIE<BR> 只要IRQF为1,<SPAN
style="TEXT-DECORATION: overline">IRQ</SPAN>管脚输出低 ,程序读寄存器C以后或<SPAN
style="TEXT-DECORATION: overline">RESET</SPAN>管脚为低后,所有标志位清零。<BR>
AF:定闹中断标志位,只读,AF为1表明现在时间与定闹时间匹配。<BR>
VF:更新周期结束标志位。VF为1表明更新周期结束。<BR>
BIAT0~BIT3:未用状态位,读出总为0,不能写入。<BR><B>4.4 寄存器D</B>
<TABLE cellSpacing=1 width=450 border=1>
<TBODY>
<TR>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>BIT7</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>BIT6</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>BIT5</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>BIT4</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>BIOT</FONT><FONT face=楷体_GB2312
size=1>3</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>BIT</FONT><FONT face=楷体_GB2312
size=1>2</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>BIT</FONT></FONT><FONT face=楷体_GB2312
size=1>1</FONT></TD><FONT face=宋体 size=2>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>BIT</FONT></FONT><FONT face=楷体_GB2312
size=1>0</FONT></TD></TR>
<TR>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>VRT</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>0</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>0</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>0</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>0</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>0</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>0</FONT></TD>
<TD borderColor=#ffffff borderColorLight=#000000 align=middle><FONT
face=楷体_GB2312 size=1>0</FONT></TD></TR></TBODY></TABLE><FONT face=宋体
size=2> VRT:内部锂电池状态位,平时应总读出1,如出现0,表明内部锂电池耗
尽。<BR> BIT0~BIT6:未用状态位,读出总为0,不能写入。</FONT>
<P><B><FONT face=黑体 size=4>5. 硬件接口电路<IMG height=121
src="新型实时时钟芯片DS12887原理与应用.files/970103t4.jpg" width=196 align=right
border=0></FONT></B>
<P><FONT face=宋体 size=2>
DS12887时钟芯片和80C31单微机的接口电路如图4所示。模式选择脚MOT拉地,选择不NTEL时序,选择DS12887时钟芯片的地址总线及AS端口和80C31单片微机的P0及ALE端直接相联;而DS、R/W读写控制线与单片机的RD、WAR控制线相连;DS12887的高位地址由80C31半日片机的P2.7端口来片选,则DS12887的高8位地址定为7FH,而其低8侠地址则由芯片内部各单元的地址来决定(00H~3FH);DS12887的中断输出端<SPAN
style="TEXT-DECORATION: overline">IRQ</SPAN>和80C的外部<SPAN
style="TEXT-DECORATION: overline">I</SPAN><SPAN
style="TEXT-DECORATION: overline">NT0</SPAN>端相联,给单片机提供中断信号;DS12887的SQW端口可编程产生方波输出信号。</FONT>
<P><B><FONT face=黑体 size=4>6. 接口软件</FONT></B>
<P><FONT face=宋体 size=2>
下面为DS12887时钟芯片和80C31单片机的接口软件,假定采用每天24小时制的非夏令时,时间数据格式为BCD码,初始化时间为1996年1月1日9时00分00秒,1k方波输出。时钟芯片每一秒种向单片机申请中断一次,一方面让单片机修改一次时钟显示,另一方面也给单片微机系统提供时间基准。<BR>
(1)DS12887时钟芯片的初始化写入程序<BR> MOV
DPTR,#7F0AH;寄存器A地址<BR> MOV
A,#70H:DV2~DV0=111,分频复位<BR> MOVX @
DPTR,AA<BR> INC DPTR:到寄存器B地址<BR>
MOV A,#8AH:停止更新,允许更新中断,选BCD码,24小时制<BR></FONT> <FONT
face=宋体 size=2> MOVX @DPRT,A<BR> MOV
QPL,#00H,秒单元地址<BR> CLR A:00秒<BR>
MOVX @DPTR,A<BR> MOV
DPL,#02H;分单元地址<BR> CLR A:00分<BR>
MOVX @DPTR,A<BR> MOV
DPL,#04H;时单元地址<BR> MOV
A,#09H;9时<BR> MOVX @DPTR,A<BR>
MOV DPL#07H;日单元地址<BR> MOV
A,@01H:1日<BR>
MOVX @DPTR,A<BR> INC DPTR:到月单元地址<BR> MOV A,#01H;1月<BR>
MOVX @DPTR,A<BR> IC
DPTR:到年单元地址<BR> MOV
A,#96H;1996年<BR> MOVX
@DPTR,A<BR> INC DPTR;到寄存器A地址<BR>
MOV A,#26H;DV2~DV0=010 RS3~RS0=0110<BR>
MOVX @DPTR,A:选周期中断率为976.5625µs,允许方波输出,频率1kHz<BR>
INC DPTR:到寄存器B<BR> MOV
A,#1AH;每秒更新一次,允许方波输出,24小时制<BR> MOVX
@DPTR,A:时钟开始运行<BR>
(2)读取DS12887时钟日历数据程序<BR>
DS12887的日历时钟通常有中断和查询两种方法读出。但在读数据时,首先要判断数据是否更新结束,只有在数据更新结束时数据读出才有效。<BR>
①采用查询法读取数据:<BR>
查询寄存器A的UIP位,当UIP=0时,数据更新结束,可以读出。以下是采用查询方法,从秒至年单元的数据读出后存入80C31内部RAM的30~35H单元中,该部分程序如下:<BR>
MOV DPTR,#7F0AH;寄存器A地址<BR> MOVX
A,@DPTR<BR> WAIT:JB
ACC,7,WAIT:UIP=1则等待更新完毕<BR> MOV
DPL,@00H;秒地址<BR> MOV
R0,#30H;取目标首地址<BR> MOVX
A,@DPTR;取秒数据<BR> MOV
@R0,A:送入80C31的内部RAM缓冲区<BR> IC
DPTR:移指针<BR> IC R0<BR>
;以下略<BR> ②采用中断法读取数据<BR>
当DS12887发出中断请示,单片微机可以响应中断而读取日历数据。对于更新结束中断,中断时更新结束,数据有效,可以直接读取日历数据;对于闹钟中断和周期中断也需查询寄存器A的UIP位,当UIP=0时,数据更新结束,再读出日历时钟,具体指令这里不再列出。</FONT>
</P></FONT></FONT></TD></TR>
<TR align=middle>
<TD width=744 colSpan=2>
<P style="LINE-HEIGHT: 200%" align=center>
<P align=center><FONT face=宋体 color=#0000bb size=2><INPUT class=main onclick=window.close() type=submit value=关闭本文 name="Close Window">
</FONT></P>
<P style="LINE-HEIGHT: 200%"><FONT face=宋体 size=2><BR><FONT
color=#ff0000>本文文章著作权归作者和《国外电子元器件》所有<BR>“器件在线”网页版权所有<BR><B>任何单位和个人未经许可,严禁链接,镜像,复制,拷贝或转载</B></FONT></FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -