PC機(jī) 實(shí)時時鐘 及其應(yīng)用 轉(zhuǎn)_第1頁
PC機(jī) 實(shí)時時鐘 及其應(yīng)用 轉(zhuǎn)_第2頁
PC機(jī) 實(shí)時時鐘 及其應(yīng)用 轉(zhuǎn)_第3頁
PC機(jī) 實(shí)時時鐘 及其應(yīng)用 轉(zhuǎn)_第4頁
PC機(jī) 實(shí)時時鐘 及其應(yīng)用 轉(zhuǎn)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、PC機(jī) 實(shí)時時鐘 及其應(yīng)用 轉(zhuǎn)PC機(jī)實(shí)時時鐘及其應(yīng)用(轉(zhuǎn))2010-07-0718:58時代背景:關(guān)于這篇文章的誕生,有些細(xì)節(jié)我還記得,回憶起來也算是有趣,寫出來大家共享。X86架構(gòu)的機(jī)器經(jīng)歷了這許多許多年的發(fā)展,現(xiàn)在已經(jīng)不是什么稀罕玩意了,現(xiàn)在說當(dāng)年的PC機(jī)不能記錄時間,每次開機(jī)都需要自己輸入時間、日期,然后一關(guān)機(jī)就丟掉,恐怕很多人都會覺得不可思議,那樣的機(jī)器可怎么用呀!但那時確實(shí)是這樣,正是由于這個原因,后來才出現(xiàn)了本文所說的"多功能卡",才有了使用MM58167做的實(shí)時時鐘,記得在90年完成民航32路自動轉(zhuǎn)報系統(tǒng)的項目后,受北京某單位委托開發(fā)民航電報終端,我計劃找一個

2、廉價的PC配上相應(yīng)的軟件完成,這上面必須要有這個實(shí)時時鐘,而當(dāng)時,只能用MM58167,記得是在中關(guān)村白頤路馬路東邊麥當(dāng)勞旁邊的一個門市里選的測試樣機(jī),在對樣機(jī)做測試的過程中,發(fā)現(xiàn)它的實(shí)時時鐘有時會丟失時鐘數(shù)據(jù),當(dāng)時還沒有互聯(lián)網(wǎng)。找MM58167芯片的資料十分困難,我把那塊多功能版琢磨了很久,終于發(fā)現(xiàn)是上電時順序不精確造成的,于是簡單改了些電路,這塊板子就好了,之所以記得這么清楚,是因?yàn)槟鞘呛苣贻p(20多歲吧),每次去那家公司,人家都很尊敬我,員工、老板吃盒飯,把我一個人請到邊上的麥當(dāng)勞用餐,當(dāng)時由于找芯片資料困難,公司老板是一位海歸,他說以前他的一篇論文中涉及到了這個芯片,于是專門找到這篇論

3、文拿給我,這篇文章中的很多資料應(yīng)該就出自這篇論文,可惜這篇論文我現(xiàn)在已經(jīng)找不到了,文章結(jié)尾處說的那個程序也已經(jīng)找不到了,之所以把這篇文章又拿出來,是最近發(fā)現(xiàn)這個芯片現(xiàn)在在某些場合還在使用,或者對他們能有點(diǎn)幫助。PC的實(shí)時時鐘在經(jīng)歷了MM58167后,才出現(xiàn)了使用MC146818的CMOS,既有實(shí)時時鐘,又可以記錄其它很多信息,現(xiàn)在146818這個芯片也見不到了,但現(xiàn)在CMOS的寄存器結(jié)構(gòu)和使用方式還是和當(dāng)年使用MC146818時一樣,可能還有人記得這個芯片,但恐怕記得MM58167曾經(jīng)做過PC實(shí)時時鐘的人已經(jīng)不多了。目前,市面上出手的簡易PC機(jī),多數(shù)要配有一塊多功能卡,該卡除具備軟驅(qū)接口、串行

4、口和并行口外,還有一篇實(shí)時時鐘芯片MM58167A,該芯片使PC機(jī)具備了實(shí)時時鐘功能,但關(guān)于該芯片的資料及其應(yīng)用方法的介紹卻很少,盡管有應(yīng)用程序timer 支持該芯片的設(shè)置及使其和系統(tǒng)時鐘相連,但用戶在開發(fā)應(yīng)用時仍不免感到不便,現(xiàn)將本人在使用該芯片的過程中的體會介紹給大家,希望能對廣大PC用戶有所幫助。一、MM58167A的功能及特點(diǎn)MM58167A是一個雙列直插式的24腳CMOS大規(guī)模集成電路芯片,其引腳圖見圖1,正常情況下,該芯片由+5V供電,一旦電源掉電,23腳POWERDOWN將出現(xiàn)邏輯0,此時,MM58167A將切斷和外界的信號通訊,使其出于高阻抗?fàn)顟B(tài),工作在低功耗狀態(tài),使其內(nèi)部計數(shù)

5、器繼續(xù)計時,此時,只需一3V電池供電即可。圖1MM58167A有5條地址線,可選擇32個寄存器,但實(shí)際上MM58167A僅使用了24個寄存器,其地址及功能如下:地址功能00h計數(shù)器-1/1000秒01h計數(shù)器-1/100秒和1/10秒02h計數(shù)器-秒03h計數(shù)器-分04h計數(shù)器-時05h計數(shù)器-星期幾06h計數(shù)器-日07h計數(shù)器-月08h鎖存器-1/1000秒09h鎖存器-1/100秒和1/10秒0ah鎖存器-秒0bh鎖存器-分0ch鎖存器-時0dh鎖存器-星期幾0eh鎖存器-日0fh鎖存器-月10h中斷狀態(tài)寄存器11h中斷控制寄存器12h計數(shù)器復(fù)位13h鎖存器復(fù)位14h狀態(tài)位15h"

6、;GO"命令16h等待中斷中斷控制寄存器和中斷狀態(tài)寄存器為一對寄存器,前者為只寫寄存器,后者為只讀寄存器,中斷狀態(tài)寄存器的每一位對應(yīng)一種中斷方式,同樣,中斷控制寄存器的每一位控制一種中斷方式,其意義見圖2:圖2二、MM58167A的應(yīng)用1、在PC機(jī)上查找MM58167A的端口地址MM58167A常用的端口地址為:0240h、02c0h、0340h我們可以用這個方法查找:相對于基地址的第二個位置為秒計數(shù)器,讀該地址應(yīng)返回一個0-59之間的BCD碼,如返回一0ffh,一般表明該地址與硬件無關(guān),若讀出值符合以上規(guī)律,多次讀值此值還在向前走,則通常可以確定該地址為MM58167A的基地址。目

7、前市面上的多功能卡大多地址為240h和340h可變。2、使用實(shí)時時鐘MM58167A的所有計數(shù)器和鎖存器均以BCD碼計數(shù),以下程序?qū)M58167A的計數(shù)器設(shè)定成3月12日11:32movdx,252hmoval,0ffhoutdx,al;計數(shù)器復(fù)位movdx,243hmoval,32houtdx,al;分計數(shù)器incdxmoval,11houtdx,al;小時計數(shù)器incdxincdxmoval,12houtdx,al;日計數(shù)器incdxmoval,3outdx,al;月計數(shù)器MM58167A的有些計數(shù)器是不檢查數(shù)據(jù)的合法性的,讀者可以將其設(shè)為13月40日30:59,然后用debug觀察其走

8、時,當(dāng)分計數(shù)器變?yōu)?后,時間將變?yōu)?3月41日31:00,所以在給MM58167A設(shè)初始值時,一定要用軟件檢查其合法性。MM58167A的另一個問題是本身不會計算星期,其星期計數(shù)器只會從1-7循環(huán)技術(shù),計算星期是比較繁瑣的,最簡單的辦法是利用DOS的功能調(diào)用,如下面一段程序:假定子程序bcdbin可將al中的BCD碼換算成二進(jìn)制碼。movdx,246hinal,dx;MM58167A中的日callbcdbinpushaxincdxinal,dx;MM58167A中的月callbcdbinmovdh,alpopaxmovdl,almovcx,1992;1992年movah,2bhint21h;設(shè)

9、定DOS日期movah,2ahint21h;讀DOS日期;DOS返回的星期正好也為一個1-7的數(shù)字movdx,245houtdx,al;AL為DOS返回的星期MM58167A本身有中斷功能,遺憾的是多功能卡上均未使用該中斷功能,由于無法使用中斷功能因而該芯片上的鎖存器也就沒有作用,正巧該芯片上缺少一個年計數(shù)器,我們可以利用鎖存器模擬一個年計數(shù)器。下面這段程序,把年放在1/100秒鎖存器中,把上次調(diào)用改程序時的月放在1/1000秒鎖存器中,每次調(diào)用該程序是,若現(xiàn)在月小于上次月,則認(rèn)為已走過一年,將年加1.movdx,247hinal,dxmovbl,alincdxinal,dxcmpbl,alj

10、acont1incdxinal,dxaddal,1daaoutdx,alcont1:movdx,248hmoval,bloutdx,al要使用實(shí)時時鐘,最簡單的辦法是編一段程序,該程序讀出MM58167A的數(shù)據(jù),然后用此數(shù)據(jù)設(shè)定DOS的日歷時鐘,但僅僅這樣做,則使用DOS的time和date命令并不能修改MM58167A的時間,因此還應(yīng)適當(dāng)修改DOS有關(guān)功能調(diào)用并使其常駐內(nèi)存;還有一種方法就是編一個設(shè)備驅(qū)動程序,每次啟動DOS時將其安裝,也可達(dá)到同樣的目的。三、其它功能MM58167A有一個"GO"命令寄存器,該寄存器為只寫寄存器,起同步作用,當(dāng)對頻率較低的計數(shù)器,如月、日

11、、星期、時、分設(shè)置了初值以后,可以用"GO"命令來啟動MM58167A,"GO"命令可同時對1/1000秒、1/100秒、1/10秒和秒寄存器進(jìn)行清0,從而使MM58167A在預(yù)置的精確時間下開始計數(shù),請看下面程序:movdx,255h;"GO"命令寄存器moval,0ffhoutdx,almovdx,240h;1/1000秒寄存器inal,dxmovcl,alincdx;1/100秒寄存器inal,dxincdxinal,dxmovch,alincdx;秒寄存器inal,dx在debug下運(yùn)行此程序會看到cl(1/1000秒寄存器),ch(1/100秒寄存器和1/10秒寄存器),al(秒寄存器)都為0四、結(jié)束語以上介紹了MM58167A的基本使用方法,用作一般的實(shí)時時鐘,這些只是已經(jīng)足夠了;根據(jù)需要讀者還可開發(fā)出一些特殊的用途,如在其鎖存器中存一些特定信息

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論