视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
时钟芯片DS12887
2025-10-07 09:54:21 责编:小OO
文档
跨越2000年的时钟芯片 DS12887/DS12C887

关键词 时钟控制寄存器 时标寄存器 状态寄存器 更新周期编程

随着2000年的即将来临,“千年虫”问题成为困扰当今世界的一大难题。过去采用两位数表示年度的日历系统将要用四位数来表示,因此有关的计算机操作系统和应用软件都要作相应的修改。据此,美国Dallas公司推出两款数字时钟芯片DS12887/DS12C887,两款时钟芯片都将在1999年12月31日23时59分59秒时顺利地跳到2000年1月1日零时,并能实现2000年2月29日的闰年提示,是时钟芯片DS1287的增强品种,结构上相当于MC146818的改进型。芯片都采用24引脚双列直插式封装,其引脚接口逻辑和内部操作方式与MC146818基本一致,所不同的是DS12887/DS12C887芯片的晶体振荡、振荡电路、充电电路和可充电锂电池等一起封装在芯片的上方,组成一个加厚的集成电路模块,因此,DS12887/DS12C887时钟片无需MC146818的电源电位检测端(PS),电路通电时其充电电路便自动对可充电电池充电,充足一次电可供芯片时钟运行半年之久,正常工作时可保证时钟数据十年内不会丢失。此外,片内通用的RAM为MC146818的两倍以上。DS12887/DS12C887内部有专门的接口电路,从而使得外部电路的时序要求十分简单,使它与各种微处理器的接口大大简化。使用时无需外围电路元件,只要选择引脚MOT电平,即可和不同计算机总线连接。

1、 主要技术特点

DS12887/DS12C887具有下列主要技术特点:

(1) 具有完备的时钟、闹钟及到2100年的日历功能,可选择12小时制或24小时制计时,有AM和PM、星期、夏令时间操作,闰年自动补偿等功能。

(2) 具有可编程选择的周期性中断方式和多频率输出的方波发生器功能。

(3) DS12887内部有14个时钟控制寄存器,包括10个时标寄存器,4个状态寄存器和114bit作掉典保护用的低功耗RAM。

(4) 由于该芯片具有多种周期中断速率时钟中断功能,因此可以满足各种不同的待机要求,最长可达24小时,使用非常方便。

(5) 时标可选择二进制或BCD码表示。

(6) 工作电压:+4.5~5.5V。

(7) 工作电流:7~15mA。

(8) 工作温度范围:0~70℃。

2、 DS12887/DS12C887的引脚排列

DS12887/DS12C887的引脚排列见图1所示。图2为DS12887/DS12C887的内部电路结构框图。芯片各引脚功能如下: MOT:计算机总线选择端;SQW:方波输出,速率和是否输出由专用寄存器A、B的预置参数决定;AD0~AD7:地址/数据(双向)总线,由AS的下降沿锁存8位地址;R/W:读/写数据;AS:地址锁存信号端;DS:数据读信号端;CS:选通信号端,低电平有效;IRQ;中断申请,由专用寄存器决定;RESET

:复位端;NC:空引脚。

5、 DS12887/DS 12C887的编程方法

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所示的是ATC52单片机与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/DS 12C887初始化程序

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 ;C52开中断

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

3、 DS12887/DS 12C887内部寄存器的功能

因DS12887和DS12C887结构功能上类似,现以DS12887为例说明如下:CPU通过读DS12887的内部时标寄存器得到当前的时间和日历,也可通过选择二进制码或BCD码初始化芯片的10个时标寄存器。其114bit非易失性静态RAM可供用户使用,对于没有RAM的单片机应用系统,可在主机掉电时来保存一些重要的数据。DS12887的4个状态寄存器用来控制和指出DS12887模块的当前工作状态,除数据更新周期外,程序可随时读写这4个寄存器,各寄存器的功能和作用如下。

3.1 DS12887内部RAM各专用寄存器地址功能

表1为DS12887内部RAM和各专用寄存器地址分布表,其中,地址00H~03H单元取值范围是00H~3BH(10进制为 0~59);04H~05H单元按12小时制取值范围是上午(AM)01H~0CH(1~12),下午(PM)81H~8CH(81~92)按24小时制取值范围是00H~17H(1~23);06H单元取值范围是00H~07H(0~7);07H单元取值范围01H~1FH(1~31);08H单元取值范围是01H~0CH(1~12);09H单元的取值范围是00H~63H(0~99)。DS12887的RAM和各专用寄存器的访问如下实现,若片选地址DS=#0DDXXH,则芯片内部RAM 和寄存器和地址为#0DD00H~#0DD7FH。应指出的是,尽管DS12887的专用时标年寄存器只有一个,但通过软件编程可利用其内部的不掉电的RAM区的一个字节实现年度的高两位显示,所以,DS12887跨越2000年的计时不成问题。

表1 DS12887内部RAM和各专用寄存器地址

地址单元用途地址单元用途

地址00H秒 地址01H 秒闹

地址02H 分 地址03H 分闹

地址04H 时 地址05H 时闹

地址06H 星期 地址07H 日(两位数)

地址08H

月(两位数) 地址09H 年(两位数)

地址0AH 寄存器A 地址0BH 寄存器B

地址0CH 寄存器C 地址0CH 寄存器D

0EH~7EH 不掉电RAM区,共114字节下载本文

显示全文
专题