×
嵌入式 > 技术百科 > 详情

实时时钟电路MC146818A与单片机的接口及编程

发布时间:2020-06-15 发布时间:
|

  实时时钟电路是控制系统中常用的功能模块。MC146818A是专用于各类微处理器与单片机系统的时钟集成电路。它带有50字节的低功耗静态RAM,可进行时、分、秒和年、月、日及星期的计数,并有自动的月结束识别和闰年处理功能,具有12/24小时和AM/PM的12小时计时功能,既可与 Motorola系列的单片机接口[1],又可与Intel的微处理器接口。本文详细讨论MC146818A与89C51单片机的接口。

1.MC146818A的结构

  MC146818A有双列直插式DIP和PLCC两种封装,图1为双列直插式封装引脚图。下面详细介绍各引脚功能。
  VDD:电源线,可以为3DC~6V;
  VSS:地线,信号、电源地;
  MOT:单片机类型选择线,当MOT接VDD时,选择Motorola总线时序;当MOT接VSS时,选择Intel类型总线,如8051、8085等;
  OSC1、OSC2:时间基准输入线,可接外部信号源或晶振。在时钟电路中,一般接32.768kHz的晶振;
  CKFS:时钟频率输出选择线,当CKFS接VDD时,CKOUT引脚输出频率为晶振频率;当CKFS接VSS时,CKOUT引脚输出频率为晶振频率的1/4;
  CKOUT:时钟输出线;
  SQW:方波输出线;
  AD0~AD7:双向地址/数据总线;
  AS/ALE:地址锁存线;
  DS/RD:读信号线;
  R/WR:写信号线;
  CS:片选线;
  IRQ:中断请求线INT;
  RESET:复位信号线;
  PS:电源检测信号线,用来控制寄存器D的VRT位;
  STBY:掉电检测线,当此线为低时,禁止访问芯片,这有利于电池供电。由于MC146818A采用高速CMOS工艺,对于32.768kHz晶振频率,当VDD为5V时,消耗电流为50μA,因此可以采用后备电池方式,以确保主电源失电后,时钟仍正常工作。

[page]

2. MC146818A与89C51单片机的接口电路

  MC146818A与89C51单片机的接口电路如图2所示。

  上电时,必须保护U2的PS引脚在tPLH时间的低电平,以建立一个过渡状态。上电后,应升高PS引脚电平到VCC,以允许通过读寄存器来把VRT置位。

  将U2的AD0~AD7与单片机P0口数据/地址复用总线相连,并将单片机的ALE、WR、RD、INT1信号线一一对应接到时钟电路U2的引脚,即可完成硬件接口,通过片选CS,选中U2,然后对其进行读/写操作。

3.软件编程

  MC146818A时钟电路的内部地址空间如表1所列。
  对MC146818A的编程,主要是通过它的寄存器A、B、C、D设置工作状态实现的。下面着重分析这四个寄存器。
  (1)寄存器A:用来确定基准频率和分频计数器的输出频率,它的格式为:

  各位定义为:
  D7-U1P,只读位。“1”表示正在更新,“0”表示可读时间、闹钟和日历值。
  D6D5D4-DV2DV1DV0,可读写,不受RESET影响,用于选择基准频率,对于32.768kHz晶振,D6D4应清零,D5置1。
  D3D2D1D0-RS3RS2RS1RS0,可读写,不受RESET影响,通过SQW引脚输出方波及中断周期。选择分频输出频率。
  (2)寄存器B:用来确定更新周期、各种中断的许可、数据格式、计时方式和输出方波的许可。可读写。它的格式为:

  各位定义为:D7-SET为“0”表示允许周期更新,“1”停止周期更新,以便对时间和日历进行初始化;
  D6-P1E:“1”表示允许周期中断,激活IRQ;“0”表示禁止周期中断;
  D5-A1E:“1”表示允许闹钟中断,0”表示禁止。
  D4-U1E,“1”表示允许周期更新“结束位激活IRQ,“0”表示禁止;
  D3-SQWE:“1”表示允许方波由SQW引脚输出,“0”表示禁止,并使SQW始终为低电平;
  D2-DM:数码格式选择。“1”选择二进制码,“0”选择十进制码;
  D1-12/24:小时选择,“1”表示时间单元为24小时计时,“0”表示时间单元为12小时计时,这样,地址单元4与5的最高位“0”为AM,“1”为PM。
  D0-DSE:夏令时允许位,“0”为禁止。
  (3)寄存器C:只读、中断标志位。
  它的格式为:

  各位定义为:D7-IRQF:中断请求标志,为“1”时IRQ引脚输出低电平。
  D6-PF:周期中断标志位;
  D5-AF:闹钟中断标志位;   
  D4-UF:周期更新完成标志位。

  只有当寄存器B的P1E,A1E,U1E为1时,才会触发PF,AF,VF三个位中断,并使IRQF置位。
  (4)寄存器D:只读,表示RAM和时间是否有效,只考虑D7位VRT,其余均不考虑。当引脚PS为高电平时,VRT为“1”,表示RAM与时钟信息为可读,若PS引脚为低电平,则VRT=0,此时信息不可读。

  通过以上对四个控制器的分析,得出MC146818A的编程流程如图3所示。

  硬件连接及软件设计好后,MC146818A就可开始工作,进入计时状态。对于32.768kHz晶振,更新时禁止读写时间为1948μs,其余时间均可对有关单元进行读写。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
实时控制.安全.如何加速实现未来工厂落地?