- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PC机 实时时钟 及其应用 转
PC机 实时时钟 及其应用 转
PC机实时时钟及其应用(转)2010-07-0718:58时代背景:关于这篇文章的诞生,有些细节我还记得,回忆起来也算是有趣,写出来大家共享。X86架构的机器经历了这许多许多年的发展,现在已经不是什么稀罕玩意了,现在说当年的PC机不能记录时间,每次开机都需要自己输入时间、日期,然后一关机就丢掉,恐怕很多人都会觉得不可思议,那样的机器可怎么用呀!但那时确实是这样,正是由于这个原因,后来才出现了本文所说的多功能卡,才有了使用MM58167做的实时时钟,记得在90年完成民航32路自动转报系统的项目后,受北京某单位委托开发民航电报终端,我计划找一个廉价的PC配上相应的软件完成,这上面必须要有这个实时时钟,而当时,只能用MM58167,记得是在中关村白颐路马路东边麦当劳旁边的一个门市里选的测试样机,在对样机做测试的过程中,发现它的实时时钟有时会丢失时钟数据,当时还没有互联网。找MM58167芯片的资料十分困难,我把那块多功能版琢磨了很久,终于发现是上电时顺序不精确造成的,于是简单改了些电路,这块板子就好了,之所以记得这么清楚,是因为那是很年轻(20多岁吧),每次去那家公司,人家都很尊敬我,员工、老板吃盒饭,把我一个人请到边上的麦当劳用餐,当时由于找芯片资料困难,公司老板是一位海归,他说以前他的一篇论文中涉及到了这个芯片,于是专门找到这篇论文拿给我,这篇文章中的很多资料应该就出自这篇论文,可惜这篇论文我现在已经找不到了,文章结尾处说的那个程序也已经找不到了,之所以把这篇文章又拿出来,是最近发现这个芯片现在在某些场合还在使用,或者对他们能有点帮助。
PC的实时时钟在经历了MM58167后,才出现了使用MC146818的CMOS,既有实时时钟,又可以记录其它很多信息,现在146818这个芯片也见不到了,但现在CMOS的寄存器结构和使用方式还是和当年使用MC146818时一样,可能还有人记得这个芯片,但恐怕记得MM58167曾经做过PC实时时钟的人已经不多了。
目前,市面上出手的简易PC机,多数要配有一块多功能卡,该卡除具备软驱接口、串行口和并行口外,还有一篇实时时钟芯片MM58167A,该芯片使PC机具备了实时时钟功能,但关于该芯片的资料及其应用方法的介绍却很少,尽管有应用程序支持该芯片的设置及使其和系统时钟相连,但用户在开发应用时仍不免感到不便,现将本人在使用该芯片的过程中的体会介绍给大家,希望能对广大PC用户有所帮助。
一、MM58167A的功能及特点
MM58167A是一个双列直插式的24脚CMOS大规模集成电路芯片,其引脚图见图1,正常情况下,该芯片由+5V供电,一旦电源掉电,23脚POWERDOWN将出现逻辑0,此时,MM58167A将切断和外界的信号通讯,使其出于高阻抗状态,工作在低功耗状态,使其内部计数器继续计时,此时,只需一3V电池供电即可。
图1MM58167A有5条地址线,可选择32个寄存器,但实际上MM58167A仅使用了24个寄存器,其地址及功能如下:
地址功能
00h计数器--1/1000秒
01h计数器--1/100秒和1/10秒
02h计数器--秒
03h计数器--分
04h计数器--时
05h计数器--星期几
06h计数器--日
07h计数器--月
08h锁存器--1/1000秒
09h锁存器--1/100秒和1/10秒
0ah锁存器--秒
0bh锁存器--分
0ch锁存器--时
0dh锁存器--星期几
0eh锁存器--日
0fh锁存器--月
10h中断状态寄存器
11h中断控制寄存器
12h计数器复位
13h锁存器复位
14h状态位
15hGO命令
16h等待中断
中断控制寄存器和中断状态寄存器为一对寄存器,前者为只写寄存器,后者为只读寄存器,中断状态寄存器的每一位对应一种中断方式,同样,中断控制寄存器的每一位控制一种中断方式,其意义见图2:
图2
二、MM58167A的应用
1、在PC机上查找MM58167A的端口地址
MM58167A常用的端口地址为:0240h、02c0h、0340h
我们可以用这个方法查找:相对于基地址的第二个位置为秒计数器,读该地址应返回一个0--59之间的BCD码,如返回一0ffh,一般表明该地址与硬件无关,若读出值符合以上规律,多次读值此值还在向前走,则通常可以确定该地址为MM58167A的基地址。
目前市面上的多功能卡大多地址为240h和340h可变。
2、使用实时时钟
MM58167A的所有计数器和锁存器均以BCD码计数,以下程序将MM58167A的计数器设定成3月12日11:32movdx,252hmoval,0ffhoutdx,al;计数器复位
movdx,243hmoval,32houtdx,al;分计数器
incdxmoval,11h
文档评论(0)