⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 这个是有关DS12887的资料,超级详细的..解释的很明白
💻 TXT
📖 第 1 页 / 共 2 页
字号:
 
1 
 0 
 1 
 0 
 15.625ms 
 64Hz 
 
1 
 0 
 1 
 1 
 31.25ms 
 32Hz 
 
1 
 1 
 0 
 0 
 62.5ms 
 16Hz 
 
1 
 1 
 0 
 1 
 125ms 
 8Hz 
 
1 
 1 
 1 
 0 
 250ms 
 4Hz 
 
1 
 1 
 1 
 1 
 500ms 
 2Hz 
 

  

3.3 寄存器B 

寄存器B允许读写,主要用于控制芯片的工作状态。寄存器B的控制字的格式如表4所列。 

表4 DS12887控制寄存器B各布尔位定义 

BIT7 
 BIT6 
 BIT5 
 BIT4 
 BIT3 
 BIT2 
 BIT1 
 BIT0 
 
SET 
 PIE 
 AIE 
 UIE 
 SQWE 
 DM 
 24/12 
 DSF 
 

  

(1)    SET位:当该位为“0“时,芯片处于正常工作状态,每秒产生一个更新周期来更新时标寄存器。为“1”时,芯片停止工作,程序在此期间可初始化芯片的各个时标寄存器。 

(2)    PIE、AIE、UIE位:分别为周期中断、报警中断、更新周期结束中断允许位。各位为“1”时,允许芯片发相应的中断。 

(3)    SQWE位:方波输出允许位。SQWE=“1”,按寄存器A输出速率选择位所确定的频率输出方波;SQWE=“0”,脚SQW保持低电平。 

(4)    DM位:时标寄存器用于十进制BCD码表示或用二进制表示格式选择位。DM=“0”时,为十进制BCD码;DM=“1”时,为二进制码。 

(5)    24/12位:24/12小时模式设置位。24/12位=“1”时,为24小时工作模式;24/12=“0”时,为12小时工作模式。 

(6)    DSE位:复令时服务位。DSE=“1”时,夏时制设置有效,夏时制结束可自动刷新恢复时间;DSE=“0”,无效。 

3.4 寄存器C 

寄存器C的控制字的格式如表5所列。该寄存器的特点是程序访问读寄存器后,该寄存器的内容将自动清零,从而使IRQF标志位变为高电平,否则,芯片将无法向CPU申请下一次中断。 

表5 DS12887控制寄存器C各布尔位定义 

BIT7 
 BIT6 
 BIT5 
 BIT4 
 BIT3 
 BIT2 
 BIT1 
 BIT0 
 
IRQF 
 PF 
 AF 
 UF 
 0 
 0 
 0 
 0 
 
(1)    IRQF位:中断申请标志位。该位逻辑表达式为:IRQF=PF·PIE+AF·AIE+UF·UIE。当IRQF位变“1”时,引脚将变低电平引发中断申请。 

(2)    PF、AF、UF位:这三位分别为周期中断、报警中断、更新周期结束中断标志位。只要满足各中断的条件,相应的中断标志位将置“1”。 

(3)    BIT3~BIT0:未定义的保留位。读出值始终为0。 

3.5 寄存器D 

寄存器D为只读寄存器。寄存器D的控制字的格式如表6所示。 

DS12887控制寄存器D各布尔位定义 

(1)    VRT位:芯片内部RAM与寄存器内容有效标志位。该位为“1”时,指芯片内部RAM和寄存器内容有效。读该寄存器后,该位将自动置“1”。 
(2)    BIT6~BIT0位:保留位。读出的数值始终为0。 

  4、  DS12887/DS12C887的中断和更新周期 

DS12887/DS12C887处于正常工作状态时,每秒钟将产生一个更新周期,芯片处于更新周期的标志是寄存器A中的UIP位为“1”。在更新周期内,芯片内部时标寄存器数据处于更新阶段,故在该周期内,微处理器不能读芯片时标寄存器的内容,否则将得到不确定数据。更新周期的基本功能主要是刷新各个时标寄存器中的内容,同时秒时标寄存器内容加1,并检查其他时标寄存器内容是否有溢出。如果有溢出则相应进位日、月、年。另外一个功能是检查三个时、分、秒报警时标寄存器的内容是否与对应时标寄存器的内容相符,如果相符则寄存器C中的AF位置“1”。如果报警时标寄存器的内容为C0H到FFH之间的数据,则为不关心状态。 

为了采样时标寄存器中的数据,DS12887/DS12C887提供了两样种避开更新周期内访问时标寄存器的方案:第一种是利用更新周期结束发出的中断。它可以编程允许在每次更新周期结束后发生中断申请,提醒CPU将有998ms左右的时间去获取有效的数据,在中断之后的998ms时间内,程序可先将时标数据读支芯片内部的不掉电静态RAM中。因为芯片内部的静态RAM和状态寄存器是可随时读写的,在离开中断服务子程序前应清除寄存器C中的IRQF位。另一种是:利用寄存器A中的UIP位来指示芯片是否处于更新周期。在UIP位从低变高244us后,芯片将开始其更新周期,所以检测到UIP位为低电平时,则利用224us的间隔时间去读取时标信息。如检测到UIP位为“1”,则可暂缓读数据,等到UIP变成低电平再去读数据 

5.1 DS12887/DS12C887初始化方法 

DS12887/DS12C887采取连续工作制,一般无须每次都初始化,即使是系统复位时也如此。但初始化时,首先应禁止芯片内部的更新周期操作,所以先将DS12887/DS12C887状态寄存器B中的SET位置“1”,然后初始化00H~09H时标参数寄存器和状态寄存器A,此后再通过读状态寄存器C,清除寄存器C中的周期中断标志位PF,报警中断标志位AF,更新周期结束中断标志位UF。通过读寄存器口D中的VRT位,读状态寄存器口后VRT位将自动置“1”,最后将状态寄存器B中的SET位置“0”,芯片开始计时工作。 

5.2 闹钟单元的使用方法 

DS12887/DS12C887共有3个闹钟单元,分别为时、分、秒闹钟单元。在其中写入闹钟时间值并且在时钟中断允许的情况下每天到刻就会产生中断申请信号。但这种方式每天只提供一次中断信号。另一种方式是在闹钟单元写入“不关心码”,在时闹钟单元写入C0H~FFH之间的数据,可每小时产生一次中断;在时、分闹钟单元写入C0H~FFH之间的数据,可每分钟产生一次中断;而时、分、秒闹钟单元全部写入FFH,则每秒钟产生一次中断。但这种方式也只能在整点、整分或整秒产生一次中断。但控制系统要求的定时间隔不是整数时,则应该通过软件来调整实现。 

5.3 DS12887/DS12C887的编程 

图3所示的是AT89C52单片机与DS12887/DS12C887的接口电路,片选地址CS=#0DDXXH。DS12887/DS12C887状态寄存器的参数设置如下:状态寄存器A置为20H,它表示采用的时钟频率为32.678kHz(00100000),禁止脚SQW输出。状态寄存器B置为22H,它表示允许报警中断,禁止其他中断,置24(00100010)小时模式,时标寄存器内容用BCD码表示,禁止方波输出和夏令时服务。如果要求定时间隔为1秒到59分钟的中断申请,那么时报警寄存器置FFH,这就表示了该报警时标处于不关心状态。下面给出了DS12887/DS12C887的有关程序。 

  5.3.1  DS12887/DS12C887初始化程序 
Ttime:MOV  DPTR ,#0DD0BH;寄存器B中的Rest位置“1”,禁止芯片内部的更新周期 
MOV  A,#0A2H 
MOV  @DPTR,A 
;初始化10bit时标寄存器程序,输入当前时间:1999年2月6日,星期6,12:00:00 
MOV  DPTR,#0D00H 
MOV  A,#00H 
MOVX  @DPTR,A;秒时标单元 
INC  DPTR 
MOV A,#0FFH;秒时标报警单元送不关心码 
MOVX @DPTR,A
INC DPTR
MOVA,#00H
MOVX @DPTR,A
INC DPTR
MOV A,#0FFH;分时标报警单元送不关心码
MOVX @DPTR,A
INC DPTR
MOVA,#0CH    ;小时时标单元送12
MOVX @DPTR,A
INC DPTR
MOC A,#OFFH  ;小时时标单元报警单元

                不关心码
MOVX @DPTR,A
INC DPTR
MOV A,#06H    ;星期时标单元送6
MOVX @DPTR,A
INC DPTR
MOV A,#06H    ;日期时标单元送6
MOVX @DPTR,A
INC DPTR
MOV A,#02H    ;月时标单元送2
MOVX @DPTR,A
INC DPTR
MOV A,#63H        ;年时标单元送99
MOVX @DPTR,A
MOV DPTR,#0DD0EH
MOV A,#13H        ;年度高两位送19
MOVX @DPTR,A
MOV DPTR,#0DD0AH
MOV A,#20H        ;初始化状态寄存器A
MOV @DPTR,A
MOV DPTR,#0DD0CH  ;清状态寄存器D的URT位置“1”
MOVX A,@DPTR
INC DPTR
MOVX A,@DPTR;状态寄存器D的URT位置‘1’
MOV DPTR ,#0DD0BH
MOV A,#22H        ;初始化状态寄存器B
MOV @DPTR,A
MOV  IE, #81H        ;89C52开中断
RET
5.3.2 判别芯片是否处于更新周期子程序(采用查询方法)
XIN :MOV DPTR,#0DD0AH
MOVA,@DPTR
JBC ACC.7,XIN ;查询UIP位
SETB 20H     ;设可读时标寄存器标志位
RET
5.3.3 中断服务子程序
INT1:ALCALL  XIN
JB  20H,INTG
AJMP INT1
INTG:…………        ;读当前时标寄存器
…………        ;检出是否溢出
…………        ;溢出处理
MOV DPTR,#0DD0CH   ;清中断标志寄存器
MOVX A,@DPTR
RETI

  
  

  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -