Maxim实时时钟芯片设计指南5413-二进制编码十进制(BCD)格式实时时钟中的状态机逻辑
网上DS12C887的文章涉及到时间的存储格式使用的都是二进制代码,究竟使用BCD码该如何操作?正好美信官网上有一篇文章。美信官网不稳定,先贴到这里,有时间再翻译。
State Machine Logic in Binary-Coded Decimal (BCD)-Formatted Real-Time Clocks
A similar version of this article appears on Electronic Design, July 2012.
Introduction

| Register | Minimum (hex) | Maximum (hex) | Carry to Register |
| Hundredths | 00 | 99 | Seconds |
| Seconds | 00 | 59 | Minutes |
| Minutes | 00 | 59 | Hours |
| Hours (12-hour mode) | 41 | 72 | AM PM, PM AM + Day & Date |
| Hours (24-hour mode) | 00 | 23 | Day & Date |
| Day | 01 | 07 | — |
| Date | 01 | 31* | Month (*Month and Year dependent) |
| Month | 01 | 12 | Year |
| Year | 00 | 99 | Century (register or bit) |
| Century | 00 | 99 | — |
Register Descriptions
7). The Day register only has three functioning bits, so even though it initially seems impossible for the user to load a value greater than 7, any hex value > 7 written would store the bad value logic-ORd with the three functioning bits (07h) (e.g., writing 1Fh would store a 07h, or writing F5h would store a 05h). Normal calendar convention is to define Sunday= 1, but that definition is arbitrary and fully under the user's control.| Table 2. Last Date of Month | ||
| Calendar Month | Numeric Month | End Date |
| January, March, May, July, August, October, December | 1, 3, 5, 7, 8, 10, 12 | 31 |
| April, June, September, November | 4, 6, 9, 11 | 30 |
| February | 2 | 28 (typical year), 29 (leap year) |
Leap_Year = ; default to No
If MODULO (CALENDAR_YEAR/) == ; divisible by ?
If MODULO (CALENDAR_YEAR/) == ; divisible by ?
If MODULO (CALENDAR_YEAR/) == ; divisible by ?
Leap_Year =
end ; if
else
Leap_Year =
end ; if
end ; if
Results When Illegal Data Is Written
| BCD | Binary | |
| 2Ah | 00101010 | Write to Month |
| 9Fh | 10011111 | Enabled bits in Month register (with Century bit) |
| 0Ah | 00001010 | Resulting content of "0Ah" after writing the Month |
| 12h | 00010010 | Logic match for "maximum value" |
| BCD | Binary | |
| FFh | 11111111 | Write to Hours |
| 7Fh | 01111111 | Enabled bits in Hours register |
| 7Fh | 01111111 | Resulting content of "7Fh" when reading the Hours |
| BCD | Binary | |
| 38h | 00111000 | Write to Hours |
| 7Fh | 01111111 | Enabled bits in Hours register |
| 38h | 00111000 | Resulting content of "38h" when reading the Hours |
| BCD | Binary | |
| AAh | 10101010 | Write to Seconds |
| FFh | 11111111 | Enabled bits in Seconds register |
| AAh | 10101010 | Resulting content of "AAh" when reading the Seconds |
| BCD | Binary | |
| 2Dh | 00101101 | Write to Date |
| 3Fh | 00111111 | Enabled bits in Hours register |
| 2Dh | 00101101 | Resulting content of "2Dh" when reading the Hours |
Summary
Maxim实时时钟芯片设计指南5413-二进制编码十进制(BCD)格式实时时钟中的状态机逻辑的更多相关文章
- Maxim实时时钟芯片设计指南5791-关于编写健壮的实时时钟控制代码的提示
用DS12C887设计一个万年历,虽然反复查看说明书,还是出各种的错误. 因此,从美信官网查询资料,翻译的不太通,凑合着对照看. 原文链接 Tips for Writing Bulletproof R ...
- Lsyncd实时同步搭建指南
linux文件实时同步: inotify+rsync.sersync.lsyncd工具比较 一.inotify + rsync 最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify ...
- 【代码】二进制转BCD [转]
BCD:Binary Coded Decimal 即用4位二进制编码表示1位的十进制数. 定义:BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行. ...
- 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图. ...
- .net下二进制序列化的格式分析[转]
.net下二进制序列化的格式分析[转] -- 综合应用 (http://www.Host01.Com/article/Net/00020003/) --- .net下二进制序列化的格式分析 (http ...
- FPGA中将十进制数在数码管中显示(verilog版)--二进制转换为BCD码
这周有朋友问怎样在fpga中用数码管来显示一个十进制数,比如1000.每个数码管上显示一位十进制数.如果用高级语言来分离各位,只需要分别对该数做1000,100,10对应的取商和取余即可分离出千百十个 ...
- FPGA加三移位算法:硬件逻辑实现二进制转BCD码
本文设计方式采用明德扬至简设计法.利用FPGA来完成显示功能不是个很理想的方式,当显示任务比较复杂,要通过各种算法显示波形或者特定图形时,当然要用单片机通过C语言完成这类流程控制复杂,又对时序要求不高 ...
- C语言之linux内核--BCD码转二进制与二进制转BCD码(笔试经典)
在分析代码之前,我们先来了解一下,BCD码和二进制到底区别在哪? 学习过计算机原理的和数字电子技术这两门课的都会知道这两个到底是什么含义,也有的同学学过了,考过了,过了一段时间又忘记了,今天,我们通过 ...
- 基于Verilog HDL的二进制转BCD码实现
在项目设计中,经常需要显示一些数值,比如温湿度,时间等等.在数字电路中数据都是用二进制的形式存储,要想显示就需要进行转换,对于一个两位的数值,对10取除可以得到其十位的数值,对10取余可以得到个位的数 ...
随机推荐
- SpringBoot系列(八)分分钟学会Springboot多种解决跨域方式
SpringBoot系列(八) 分分钟学会SpringBoot多种跨域解决方式 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 s ...
- xshell下使用vim的编辑一个文件Ctrl+S和Ctrl+Q
xshell下使用vim的编辑一个文件,保存的时候习惯性的按了Ctrl+S 结构悲剧了.屏幕锁死了.按其他键都没有反应,exc也不行. 经过问度娘才知道. 原来Ctrl+S在Linux里,是锁定屏幕的 ...
- python+selenium实现网页自动化与爬虫技术
举例某购物网站,通过selenium与python,实现主页上商品的搜索,并将信息爬虫保存至本地excel表内. 一.python环境与selenium环境安装 python在官网下载并安装并且设置环 ...
- MVC-过滤器-权限认证
过滤器主要基于特性,aop来实现对MVC管道中插入其他处理逻辑.比如,访问网站,需要检查是否已经登陆,若没登陆跳入登陆界面. 样例: 方法注册 执行效果 当不符合认证时: 上面是方法注册特性.还有类注 ...
- WFS: postgresql(postgis)和shp文件查询效率对比
对GeoServer上的WFS的各种数据源查询效率感兴趣,做个测试.本次测试了Postgresql.geopackage.shp文件三种数据源的查询效率,无论是本机还是服务器环境,pg存储查询效率都比 ...
- Python爬虫篇(代理IP)--lizaza.cn
在做网络爬虫的过程中经常会遇到请求次数过多无法访问的现象,这种情况下就可以使用代理IP来解决.但是网上的代理IP要么收费,要么没有API接口.秉着能省则省的原则,自己创建一个代理IP库. 废话不多说, ...
- tp5命名空间补充
1.非限定名称访问方式: 直接访问当前的空间和元素 2.限定名称命名空间: 路径\方法(); 相当于相对路径 以当前的命名空间为起点,去找路径上的方法 3.完全限定名称访问方式:\路径\方法(); ...
- 动静结合?Ruby 和 Java 的基础语法比较(入门篇)
前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...
- 任意文件下载(pikachu)
任意文件下载漏洞 很多网站都会提供文件下载功能,即用户可以通过点击下载链接,下载到链接所对应的文件. 但是,如果文件下载功能设计不当,则可能导致攻击者可以通过构造文件路径,从而获取到后台服务器上的其他 ...
- VHD VHDX 区别
A Virtual hard disk is saved either with VHD or VHDX file extension. VHD is the older while VHDX is ...