林承祥電子萬年歷的設(shè)計制作_第1頁
林承祥電子萬年歷的設(shè)計制作_第2頁
林承祥電子萬年歷的設(shè)計制作_第3頁
林承祥電子萬年歷的設(shè)計制作_第4頁
林承祥電子萬年歷的設(shè)計制作_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機課程設(shè)計總結(jié)報告

題目:電子萬年歷的設(shè)計與制作

專業(yè):理工學院03級電子信息科學

與技術(shù)

班級:2班______________________________

姓名:林承祥

學號:030303061_______________

指導教師:蔡植善_________________________

二00六年三月十日

一、設(shè)計目的及意義

(1)在學習了《數(shù)字電子技術(shù)》和《單片機原理及接口技術(shù)》課程后,為了加深對理論知

識的理解,學習理論知識在實際中的運用,培養(yǎng)動手能力和解決實際問題的經(jīng)驗讓學生接觸

專用時鐘芯片DS1302,并會用DS1302芯片開發(fā)時鐘模塊,應(yīng)用到其他系統(tǒng)中去。熟悉WAVE

軟件調(diào)試程序和仿真.

(2)、通過實驗提高對單片機的認識;

(3)通過實驗提高焊接、布局、電路檢查能力;

(4X通過實驗提高軟件調(diào)試能力;

(5)進一步熟悉和掌握單片機的結(jié)構(gòu)及工作原理。

(6)通過課程設(shè)計,掌握以單片機核心的電路設(shè)計的基本方法和技術(shù),了解表關(guān)電路參

數(shù)的計算方法。

(7)通過實際程序設(shè)計和調(diào)試,逐步掌握模塊化程序設(shè)計方法和調(diào)試技術(shù)。

(8)通過完成一個包括電路設(shè)計和程序開發(fā)的完整過程,使學生了解開發(fā)一單片機應(yīng)用

系統(tǒng)的全過程,為今后從事相應(yīng)打下基礎(chǔ)。

二、設(shè)計內(nèi)容要求

電子萬年歷能顯示陽歷年、月、日、星期、[?。輹r、分、秒和陰歷月、日,在顯示陰歷時間

時能標明是否為閏年。

三、方案選擇與實驗基本原理。

按照系統(tǒng)設(shè)計功能的要求,初步確定設(shè)計系統(tǒng)由主控模塊、時鐘模塊、顯示模塊、鍵

盤接口模塊共4個模塊組成,電路系統(tǒng)構(gòu)成框圖如圖L1所示。主控芯片使用51系列AT89c52

單片機,時鐘芯片使用美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘

DS1302o采用DS1302作為主要計時芯片,可以做到計時準確。更重要的是,DS1302可以

在很小電流的后備電源(2.5—5.5V電源,在2.5V時耗電小于300nA)下繼續(xù)計時,并可

編程選擇多種充電電流來對后備電源進行慢速充電,可以保證后備電源基本不耗電。顯示

模塊采用普通的共陽LED數(shù)碼管,鍵輸入采用查詢法實現(xiàn)調(diào)整功能。

圖1電子萬年歷電路系統(tǒng)構(gòu)成框圖

系統(tǒng)硬件甩路的設(shè)計

圖2為電子萬年歷電路設(shè)計原理圖,系統(tǒng)由主控制器AT89c52、時鐘芯片DS1302、串口

顯示電路及鍵掃描電路組成。

<-<-

至tn

N

l!S!IH

龍式!

gqop。j-ut*S

主xniun

PJ玲小

6

l!!!l!l4到

拿孥

玲最一x

N&$

U。PUJ

仙山」至二皿山

玲最

■?o3P■?>??-Wr&

,皿訕!>

芭工

齦8騁監(jiān)當

能<.浣V.

D-(iKKHtQQNSXfu=SBI

Oo<oJoeHIVV

VvvIvOSWIWv昱

-nIVc^dS£盤E

_.W/WKNfL

roSC邕&【

0更aieO

gWwSdJ6

OoU

.ENUECY

±-wlG§9WT一

1.rf/£,£v

HSKRsZdq

nff

圖2電子萬年歷電路設(shè)計原理圖

3.3.1主控制器AT89c52

ATMEL公司生產(chǎn)的AT89C52單片機采用高性能的靜態(tài)80C51設(shè)計,由先進工藝制造,

并帶有非易失性Flash程序存儲器。它是一種高性能、低功耗的8位cMos微處理芯片,市

場應(yīng)用最多。主要性能特點有:

?8KHFlashROM,可以擦除1000次以上,數(shù)據(jù)保存10年

?256字節(jié)內(nèi)部RAM。

■電源控制模式

一一時鐘可停止和恢復

——空閑模式;

----掉電模式。

?6個中斷源。

?4個中斷優(yōu)先級。

?4個8位I/O口。

■全雙工增強型UART。

?3個16位定時/計數(shù)器,To、T1(標準80c51)和增加的T2(捕獲和比較)。

?全靜態(tài)工作方式:0-24MHz。

3.3.2時鐘電路DS1302

1.dsl302的性能特性

?實時時鐘,可對秒、分、時、日、周、月以及帶閏年補償?shù)哪赀M行計數(shù):

?用于高速數(shù)據(jù)暫存的31X8位RAM;

?最少引腳的串行I/。;

?2.5—5.5V電壓工作范圍;

?2.5V時耗電小于300nA;

?用于時鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;

?簡單的3線接口;

?可選的慢速充電(至Vccl)的能力。

D51302時鐘芯片包括實時時鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過一個簡單的串行接口

與微處理器通信。實時時鐘/日歷提供秒、分、時、日、周、月和年等信息。對于小于31

天的月利月末的日期自動進行調(diào)整,還包括閏年校正的功能。時鐘的運行可以采用24H或帶

AM(上午)/PM(下午)的12H格式。采用三線接口與cPu進行同步通信,并可采用突發(fā)方式一

次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。Dsl302有主電源/后備電源雙電源引腳:Vccl在

單電源與電他供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;Vcc2在雙電源系統(tǒng)中

提供主電源,在這種運用方式中,Vccl連接到備份電,以便在沒有主電源的情況下能保存

時間信息以及數(shù)據(jù)。Dsl302由Vccl或vcc2中較大者供電。當vcc2大于Vccl十o.2v時,

vcc2V給DS1302供電;當vcc2小于Vccl時,DS1302由Vccl供電。

2.DS1302數(shù)據(jù)操作原理

Dsl302在任何數(shù)據(jù)傳送時必須先初始化,把RsT腳置為高電平,然后把8位地址和命令

字裝入移位寄存器,數(shù)據(jù)在scLK的上升沿被輸入。無論是讀周期還是寫周期,開始8位指

定40個寄存器中哪個將被訪問到。在開始8個時鐘周期,把命令字節(jié)裝入移位寄存器之后,

另外的時鐘周期在讀操作時輸出數(shù)據(jù),在寫操作時寫人數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式

下為8加8,在多字節(jié)方式下為8加字節(jié)數(shù),最大可達248字節(jié)數(shù)。

如果在傳送過程中置RsT腳為低電平,則會終止本次數(shù)據(jù)傳送,并且1/()引腳變?yōu)楦?/p>

阻態(tài)。上電運行時,在Vcc22.5V之前,RsT腳必須保持低電平。只有在scLK為低電平

時,才能將RsT置為高電平。D引302的引腳及內(nèi)部結(jié)構(gòu)圖如圖3.3所示,表3.1為各引

腳的功能

引眄弓牌標功能

1%主電源

,(c

2,3x>,x髓泳版32768kHz晶板

GND2

4GND地線

5RST施/片殿

61/0串行&軸人/鼬*(雙向)

7SCLK串行懿葡入第

后備電源

8vw

圖3DS1302引腳及內(nèi)部結(jié)構(gòu)表1DS102引腳功能

Dsl302的控制字如圖3.4所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1;如果它為

0,則不能把數(shù)據(jù)寫入到Dsl302中。位6如果為0,則表示存取日歷時鐘數(shù)據(jù);為1表示存

RAM數(shù)據(jù)。位5—1(A4-A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進行寫

操作;為1表示進行讀操作??刂谱止?jié)總是從最低位開始輸入/輸出。

為了提高對32個地址的尋址能力(地址/命令位1?5=邏輯1),可以把時鐘/日歷或

RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時鐘或RAM,而位0規(guī)定讀或?qū)?。在時鐘/

日歷寄存器中的地址9-31或RAM寄存器中的地址31不能存儲數(shù)據(jù)。在多字節(jié)方式中,讀

或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個寄存器。但是,當以多字節(jié)

方式寫RAM時,為了傳送數(shù)據(jù)不必寫所有31字節(jié)。小管是否寫了全部31字節(jié),所寫的每一

字節(jié)都將傳送至RAM。

圖4DS1302的控制字

SCLKm---w--w--u-w---iR--j?-w--u-u-

RST4567

01234567012^.,,1.

:,:

I/OAOAtA2A3A4R/CI:\

一DATAI/OBYTE!DATAVOBYTEn

圖5DS1302數(shù)據(jù)讀/寫時序

Dsl302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD

碼形式。其H歷、時間寄存器及其控制字見表3.2,其中奇數(shù)為讀操作,偶數(shù)為寫操作。

時鐘暫停:秒寄存器的位7定義位時鐘暫停位。當它為1時,DS1302停止振蕩,進入

低功耗的備份方式.通常在對DS1302進行寫操作時(如進入時鐘調(diào)整程序),停止振蕩。當它

為0時,時鐘將開始啟動。AM—PM/12—24[?。輹r方式:[?。輹r寄存器的位7定義為12

或24[?。輹r方式選擇位。它為高電平時,選擇12[?。輹r方式。在此方式下,位5是AM/PM

位,此位是高電平時表示PM,低電平表示AM。在24[?。輹r方式下,位5為第二個10[?。?/p>

時位(20—23h)。

命令字節(jié)寄存細容

翱罪名取觸用

寫讀76543210

杪箱器80H81H00?59CH10sSEC

分病器

82H83H00-59010minMIN

[?。輹r寄存器84H’8/OQ?23或01?1212/24010A/PHRHR

口期寄存「

86H87H01-28,29,30,3100IODATEDATE

月份寄存器88H89n01-1200010MMONTH

用神器8AH8BH01?0700000DAY

年寄儲8CHSDH00?9910YEARYEAR

表2內(nèi)部寄存器地址和內(nèi)容

DS1302的品振選用32.768kHz,電容推薦值為6PF,因為振蕩頻率較低,也可以不接

電容.對計時精度影響不大。3.3.3顯示電路的設(shè)計

顯示部分采用普通的共陽數(shù)碼管顯示,采用動態(tài)掃描,以減少硬件電路??紤]到一次掃

描19位數(shù)的管顯示時會出現(xiàn)閃爍情況,設(shè)計時19個數(shù)碼管分3排同時掃描。第一排6個數(shù)

管分別為千年、百年、十午、年、十月、月,第二排6位數(shù)碼管分別為十時、時、十分、分、

十秒、秒,第三排7位數(shù)碼管分別為星期、陰歷十月、陰歷月、陰歷十日、陰歷日、十日、

日。顯示時采用串行口輸出段碼,用3片741sl64來驅(qū)動3排數(shù)碼管,這樣掃描一次只需

7mso

7411sl64內(nèi)部為8個D觸發(fā)器,用以實現(xiàn)數(shù)據(jù)的串行移位,7411sl64特性見表3。單

片機以串行口方式0(移仿寄存器方式)輸山數(shù)據(jù),3片74LS164作為3排共陽數(shù)碼管的串/

并轉(zhuǎn)換顯示接口。741sl64為TTL單向8位移位寄存器,可實現(xiàn)串行輸入,并行輸出。其

中A、B(第1、2腳)為串行數(shù)據(jù)輸入端,2個引腳按邏輯“與”運算規(guī)律輸入信號,共一個

輸入信號時可并接,共同作為輸入腳。cP(第8腳)為時鐘輸入端,可連接到串行口的TxD

端。每一個時鐘信號的上升沿加到cP端時,移位寄存器移一位。8個時鐘脈沖過后,8位二

進制數(shù)全部移入

741sl64中。MR腳(第9腳)為復位端,當該腳為低電平時;移位寄存器各位復0;只有當

它為高電平時,時鐘脈沖才起作用。QI—Q8(第3—6和10—13引腳)并行輸出端分別接數(shù)

碼管的h—a(因為串行n從低位開始傳送)各段對應(yīng)的引腳上。在給出了8個脈沖后,最先

進入741oS164的第1個字L1數(shù)據(jù)到達廠最高位。再來1個脈沖,第1個脈沖就會從最高

位移出,進入下個74L5164的第1位。3片741'S164首尾相串,而時鐘端則接在一起。這

樣,當輸入8個

脈沖時,從一9片機RXD端輸出的第1字節(jié)數(shù)據(jù)就進入了第1片-74LS164中,而當?shù)?個8

個脈沖到來后,第1字節(jié)數(shù)據(jù)就進入了第2片74LS164,而隨后的第2字節(jié)的數(shù)據(jù)則進入了

第1片74LS164。這樣,當?shù)?個8個脈沖完成后,首次送出的數(shù)據(jù)被送到了最下面的164(第

3片)中,其它數(shù)據(jù)依次出現(xiàn)在第二和第一片74LS164中,實現(xiàn)了數(shù)據(jù)在74LS164中的串行

輸入、并行輸出。

操作模式輸入輸出

復位1VTRABQOQl~Q7

LXXLQO~Q6

HLLLQ6

移位HLIILQO~Q6

HHLLQO-Q6

HHHHQO~Q6

表374LS164特性表

在方式0狀態(tài)下,串行口為同步移位寄存器方式,其波特率是固定的,為fosc/12。數(shù)

據(jù)由RxD(P3.0)端輸入或輸出,同步移位脈沖由TxD(P3.1)端輸出。發(fā)送、接收數(shù)據(jù)時低位

在先。所以,根據(jù)本小節(jié)下面提供的硬件電路圖,在編寫程序時,查共陽數(shù)碼管的段碼的二

進制數(shù)據(jù)應(yīng)該將正常的共陽數(shù)碼管0—9的二進制值按位反序排序,如原來的二進制為

11000000(C0H),要改為00000011(0311),就能使數(shù)碼管正常顯示。

3.3.4鍵盤接口的設(shè)計

由于按鍵只有3個,用普通按鈕接10kw上拉電阻,用查詢法完成讀鍵功能。

3.4系統(tǒng)程序的設(shè)計

因為使用了時鐘芯片DS1302,陽歷程序只需從DS1302各寄存器中讀出年、周、月、日、

[?。輹r、分、秒等數(shù)據(jù),再處理即可。在首次對DS1302進行操作之前,必須對它進行初始

化,然后從DS1302中讀出數(shù)據(jù),再經(jīng)過處理后,送給顯示緩沖單元。陽歷程序流程圖見圖

3.6所示。

開始

初始化1302

13。2開始振蕩

從1302中讀出年、

周、月、日、[?。輹r、

分、秒

讀出的數(shù)據(jù)都為BCD

碼,將其高低位分離,

送顯示緩沖單元

圖6陽歷程序流程圖

3.4.2時間調(diào)整程序設(shè)計

調(diào)整時間用2個調(diào)整按鈕,1個作為移位、控制用,另外1個作為加和減用,分別定義

為控制按鈕、加按鈕。在調(diào)整時間過程中,要調(diào)整的位與別的位應(yīng)該有區(qū)別,所以增加了閃

爍功能,即調(diào)整的位一直在閃爍,直到調(diào)整下一位。閃爍原理就是,讓要調(diào)整的一位每隔一

定時間熄滅一次,比如說50ms?利用定時器計時,當達到50ms溢出時,就送給該位熄

滅符,在下一次溢出時。再送正常顯示的值,不斷交替,直到調(diào)整該位結(jié)束。此時送正常顯

示值給該位,再進人下一位調(diào)整閃爍程序。時間調(diào)整程序程序流程圖如圖3.7所示。

3.4.3陰歷程序設(shè)計

陰歷程序的實現(xiàn)是要靠陽歷日期來推算的。要根據(jù)陽歷來推算陰歷日期,首先要設(shè)計算

法。推算方法是,根據(jù)陽歷當前日期在一年中的天數(shù)來計算陰歷日期。陽歷一個月不是30

天就是31天(2月除外,閏年2月為29天,平年2月為28天)。陰歷一年有12個月或13

個月(含閏月),一個月為30天或29天。如果把一個只有29天的月稱為小月,用1為標志,

把30天的月稱為大月,用0為標志,那么12位二進制就能表示一年12個月的大小。如果

有閏月,則把閏月的月份作為“一個字節(jié)的高4位,低4位表示閏月大小,大月為0,小月

為1.這樣一個

字節(jié)就包含了所有閏月的信息。陰歷春節(jié)和陽歷元旦相差的天數(shù)也用一個字節(jié)表示??偣灿?/p>

1字節(jié)就可以存儲一年中任何一天陽歷和陰歷的對應(yīng)關(guān)系的有關(guān)數(shù)據(jù),例如2004年的陰歷

和陽歷對應(yīng)關(guān)系如表3.4所列。

圖7時間調(diào)整程序流程圖

月份123456789101112閏2月

大小小大大大小大小大小大小大小

天ft1000101010101

二進制293030302930293029302930

-------

十六進制425221

表42004年的陰歷和陽歷關(guān)系表

2004年的春節(jié)和元旦差20天,這樣2004年的信息表示為:21,42H,52H,21H。其中

表示12個月大小信息的字,第4位和第7位不用。第1個字節(jié)為十進制,其它的都為十六

進制。按此方法,50年的陽歷和陰歷對應(yīng)關(guān)系表總共使用200字節(jié)。有了算法和數(shù)據(jù)以后,

就可設(shè)計軟件了。先要根據(jù)當前陽歷的日期,算出陽歷為該年中的第幾天。圖3.8為計算

陽歷中任何一天在該年中為第幾天的程序流程圖。

計算出當前陽歷日期為該年中的第幾天后,再減去陽歷該年春節(jié)和元旦的日差,如果夠

減.則相減的結(jié)果就是陰歷在該年的總第幾天了。根據(jù)該數(shù)據(jù)就可以推算出具體的當前陰歷

日期;如果不夠減,則表示當?shù)年帤v年為陽歷年的前一年。這種情況下,根據(jù)實際、當前陰

歷日期會處十陰歷11月或12月,此時春節(jié)和元旦的日差減去前面計算出的當前陽歷日期在

陽歷年為第幾天的數(shù)據(jù).其結(jié)果表示當?shù)年帤v日期離春節(jié)的天數(shù)。計算出的陽歷天數(shù)為該年

的第幾天,存放在寄存器只2和只3中。計算出天數(shù)后,如果大于#FFH,則把#FFH存放在

R2中,余值存放在R3中。也就是說在用寄存器R2和R3表示的天數(shù)信息中.R2充當主寄存

器,數(shù)據(jù)先存滿R2,再存R3。整個轉(zhuǎn)換程序中,這里面的數(shù)據(jù)不能被覆蓋。

計算出陽歷總天數(shù)后,就可以根據(jù)它來推算陰歷日期。推算方法是,先用總天數(shù)減去春

節(jié)相元旦的日差,如果結(jié)果為1,則該天正好是春節(jié)(因為春節(jié)在元旦之后,在計算春節(jié)和

幾旦的日差0時,假設(shè)元旦為0天,春節(jié)為M天,則日差為M。而前面計算的陽歷總天數(shù)是

該天在該年

中的第幾天,是以元旦為1而得到的,與計算春節(jié)和元旦日差的這種方法相比,其數(shù)值少了

1.所以要在原來本應(yīng)該以0作為該天就是春節(jié)的依據(jù)的基礎(chǔ)上加1,所以以1作為該天是

春節(jié)的標志);如果結(jié)果小于1,則陰歷應(yīng)該是陽歷的前一年;如果結(jié)果大于1,說明陽歷和

陰歷為同一年。再根據(jù)查表所得的該年的陰歷的閏月和大小月的信息,就可以推算出該大的

陰歷日期

了。圖3.9為由總天數(shù)推算出陰歷日期的程序流程圖。

圖9推算陰歷日期的程序流程圖

四、調(diào)試總結(jié)及改進

(1)DS1302與微處理器進行數(shù)據(jù)交換時,首先由微處理器向電路發(fā)送命令字節(jié),命令字

節(jié)最高位MSB(D7)必須為邏輯1,如果D7=0,則禁止寫DS1302,即寫保護:D6=0,指

定時鐘數(shù)據(jù),D6=1,臃RAM數(shù)據(jù);D5?D1指定輸入或輸出的特定寄存器:最低位LSB(DO)

為邏輯0,指定寫操作(輸入),D0=1,指定讀操作(輸出)。在DS1302的時鐘日歷或RAM

進行數(shù)據(jù)傳送時,DS1302必須首先發(fā)送命令字節(jié)。若進行單字節(jié)傳送,8位命令字節(jié)傳送

結(jié)束之后,在下2個SCLK周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個SCLK周期的下降沿

輸出數(shù)據(jù)字節(jié)。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31

個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H?FDH,其中奇數(shù)為讀操作,

偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,在此方式下可一次性讀、寫所有的

RAM的31個字節(jié)。

(2)在仿真頭調(diào)試時候,我發(fā)現(xiàn)在LED顯示板上能夠正常顯示數(shù)字,但是秒位不能記數(shù),

檢查DS1302的連接(沒有錯,接觸也良好),說明了這片DS1302不能記數(shù),然后換掉

DS1302后此時不但可以正常顯示數(shù)字,而且可以正常記數(shù),說明剛才那片是壞的。

(3)(2M)晶振的調(diào)試,在調(diào)試晶振的時候發(fā)現(xiàn),在沒有給電路同電的時候,晶振兩端輸

出波形是個不穩(wěn)定的正弦波,而通電后也是個正弦波,但是中間一個引腳接地時候,波形比

較穩(wěn)定,接示波器時間長了,發(fā)現(xiàn)DS1302很發(fā)燙(時間很短內(nèi)溫度達到很高),但是不

接示波器,時間長點也不會出現(xiàn)發(fā)燙現(xiàn)象。我認為是示波器引腳上的電和電路板上的電相通

的原因。

五元器件

主控器AT89c52一片、時鐘芯片DS1302一片、10P瓷片電容2個、22P瓷片電容3個,

32.768K(時鐘晶體)1片、510歐排電阻3個、共陽LED19片,9012三極管1片、8550三極

管7個,2M晶體1片、74LS104三片、發(fā)光二極管一個、按鈕開關(guān)2個、萬能電路板(大

小個I個),5V電源一個、導線若干。

六、參考書目

1、李振聲.實驗電子技術(shù)(P182?193).國防工業(yè)大學出版社,2001年

2李飛光單片機課程設(shè)計實例指導北京航空航天大學出版社2004年

七程序調(diào)試

SCLKEQUP3.2

10EQUP3.3

RSTEQUP3.4

YEARDATA66H

MONTHDATA65H

WEEKDATA64H

DAYDATA63H

HOURDATA62H

MINTUEDATA61H

SECONDDATA60H

DS1302.ADDRDATA32H

DS1302_DATADATA31H

ORG0000H

AJMPSTART

ORG0003H

RETI

ORG000BH

RETI

ORG0013H

RETI

ORG001BH

LJMPINTT1

ORG0023H

RETI

ORG002BH

RETI

START:SETBEA

MOVSCON,#OOH

MOVTMOD,#10H

MOVTL1,#OOH

MOVTH1,#OOH

MOVDS1302_ADDR,#8EH

MOVDS1302_DATA,#00H

LCALLWRITE

MOVDS1302_ADDR,#90H

MOVDS1302_DATA,#0A6H

LCALLWRITE

MAIN1:MOVDS1302_ADDR,#8DH

LCALLREAD

MOVYEAR,DS1302_DATA

MOVDS1302_ADDR,#8BH

LCALLREAD

MOVWEEK,DS1302_DATA

MOVDS1302_ADDR,#89H

LCALLREAD

MOVMONTH,DS1302_DATA

MOVDS1302_ADDR,#87H

LCALLREAD

MOVDAY,DS1302_DATA

MOVDS1302_ADDR,#85H

LCALLREAD

MOVHOUR,DS1302_DATA

MOVDS1302_ADDR,#83H

LCALLREAD

MOVMINTUE,DS1302_DATA

MOVDS1302_ADDR,#81H

LCALLREAD

MOVSECOND,DS1302_DATA

MOVRO,YEAR

LCALLDIVIDE

MOV7BH,R1

MOV4BH,R1

MOV7CH,R2

MOV4CH,R2

MOV78H,WEEK

MOV48H,WEEK

MOVRO,MONTH

LCALLDIVIDE

MOV79H,R1

MOV49H,R1

MOV7AH,R2

MOV4AH,R2

MOVRO,DAY

LCALLDIVIDE

MOV76H,R1

MOV46H,R1

MOV77H,R2

MOV47H,R2

MOVRO,HOUR

LCALLDIVIDE

MOV74H,R1

MOV44H,R1

MOV75H,R2

MOV45H,R2

MOVR0,MINTUE

LCALLDIVIDE

MOV72H,R1

MOV42H,R1

MOV73H,R2

MOV43H,R2

MOVRO,SECOND

LCALLDIVIDE

MOV7OH,R1

MOV4OH,R1

MOV71H,R2

MOV41H,R2

LCALLDISPLAY

LCALLGENGXIAN

JNBP1.2,NUM

JNBP1.1,SETG

JNBFO,SSS

CLRPL3

LJMPMAIN1

sss:SETBP1.3

LJMPMAIN1

NUM:MOVMONTH,#OAAH

MOVHOUR,#OAAH

MOVMINTUE,#OAAH

MOVSECOND,#04H

MOVRO,MONTH

LCALLDIVIDE

MOV79H,R1

MOV49H,R1

MOV7AH,R2

MOV4AH,R2

MOVRO,HOUR

LCALLDIVIDE

MOV74H,R1

MOV44H,R1

MOV75H,R2

MOV45H,R2

MOVR0,MINTUE

LCALLDIVIDE

MOV72H,R1

MOV42H,R1

MOV73H,R2

MOV43H,R2

MOVRO,SECOND

LCALLDIVIDE

MOV7OH,R1

MOV4OH,R1

MOV71H,R2

MOV41H,R2

LCALLDISPLAY

JNBP1.2,NUM

LJMPMAIN1

SETG:SETBTRI

SETBET1

CLR08H

CLR09H

CLROAH

CLROBH

CLROCH

CLRODH

CLROEH

CLROFH

MOVDS1302_ADDR,#8EH

MOVDS1302_DATA,#00H

LCALLWRITE

MOVDS1302_ADDR,#80H

MOVDS1302_DATA,#80H

LCALLWRITE

GWAIT:LCALLDISPLAY

JNBP1.1,GWAIT

SETG1:LCALLDISPLAY

JNBP1.1,SETG2

JNBP1.2,GADDYEAR

AJMPSETG1

GADDYEAR:MOVR7,66H

LCALLADD1

MOV66H,A

CJNEA,#51H,GADDYEAR1

MOV66H,#01H

GADDYEAR1:MOVDS1302_ADDR,#8CH

MOVDS1302_DATA,66H

LCALLWRITE

MOVR0,66H

LCALLDIVIDE

MOV4BH,R1

MOV7BH,R1

MOV4CH,R2

MOV7CH,R2

WAITT1:LCALLDISPLAY

JNBP1.2,WAITT1

AJMPSETG1

SETG2:SETBOAH

GWAIT2:LCALLDISPLAY

JNBP1.1,GWAIT2

SETG3:LCALLDISPLAY

JNBP1.1,SETG4

JNBP1.2,GADDMONTH

AJMPSETG3

GADDMONTH:MOVR7.65H

LCALLADD1

MOV65H,A

CJNEA,#13H,GADDMONTH1

MOV65H,#01H

GADDMONTH1:MOVDS1302_ADDR,#88H

MOVDS1302_DATA,65H

LCALLWRITE

MOVR0,65H

LCALLDIVIDE

MOV79H,R1

MOV49H,R1

MOV7AH,R2

MOV4AH,R2

WAITT2:LCALLDISPLAY

JNBP1.2,WAITT2

AJMPSETG3

SETG4:SETBOBH

GWAIT4:LCALLDISPLAY

JNBP1.1,GWAIT4

SETG5:LCALLDISPLAY

JNBP1.1,SETG6

JNBP1.2,GADDDAY

AJMPSETG5

GADDDAY:MOVR7,63H

LCALLADD1

MOV63H,A

CJNEA,#32H,GADDDAY1

MOV63H,#01H

GADDDAY1:MOVDS1302_ADDR,#86H

MOVDS1302_DATA,63H

LCALLWRITE

MOVR0,63H

LCALLDIVIDE

MOV76H,R1

MOV46H,R1

MOV77H,R2

MOV47H,R2

WAITT3:LCALLDISPLAY

JNBP1.2,WAITT3

AJMPSETG5

SETG6:SETBOCH

GWAIT6:LCALLDISPLAY

JNBP1.1,GWAIT6

SETG7:LCALLDISPLAY

JNBP1.1,SETG8

JNBP1.2,GADDWEEK

AJMPSETG7

GADDWEEK:MOVR7,64H

LCALLADD1

MOV64H,A

CJNEA,#08H,GADDWEEK1

MOV64H,#01H

GADDWEEK1:MOVDS1302_ADDR,#8AH

MOVDS1302_DATA,64H

LCALLWRITE

MOVR0,64H

LCALLDIVIDE

MOV48H,R1

MOV78H,R1

WAITT4:LCALLDISPLAY

JNBP1.2,WAITT4

AJMPSETG7

SETG8:SETBODH

GWAIT8:LCALLDISPLAY

JNBP1.LGWAIT8

SETG9:LCALLDISPLAY

JNBPl.1,SETGIO

JNBPl.2,GADDHOUR

AJMPSETG9

GADDHOUR:MOVR7,62H

LCALLADD1

MOV62H,A

CJNEA,#24H,GADDHOUR1

MOV62H,#00H

GADDHOUR1:MOVDS1302_ADDR,#84H

MOVDS1302_DATA,62H

LCALLWRITE

MOVR0,62H

LCALLDIVIDE

MOV74H,R1

MOV44H,R1

MOV75H,R2

MOV45H,R2

WAITT5:LCALLDISPLAY

JNBPI.2,WAITT5

AJMPSETG9

SETGIO:SETBOEH

GWAITT10:LCALLDISPLAY

JNBP1.1,GWAITT1O

SETG1I:LCALLDISPLAY

JNBP1.1,SETGOUT

JNBP1.2,GADDMINTUE

AJMPSETG11

GADDMINTUE:MOVR7,61H

LCALLADD1

MOV61H,A

CJNEA,#6OH,GADDMINTUE1

MOV61H,#OOH

GADDMINTUEkMOVDS1302_ADDR,#82H

MOVDS1302_DATA,61H

CALLWRITE

MOVR0,61H

LCALLDIVIDE

MOV72H,R1

MOV42H,R1

MOV73H,R2

MOV43H,R2

WAITT6:LCALLDISPLAY

JNBP1.2,WAITT6

AJMPSETG11

SETGOUT:LCALLDISPLAY

JNBP1.1,SETGOUT

LCALLGENGXIAN

MOVDS1302_ADDR,#80H

MOVDS1302_DATA,#00H

LCALLWRITE

MOVDS1302_ADDR,#8EH

MOVDS1302_DATA,#80H

LCALLWRITE

CLR08H

CLR09H

CLROAH

CLROBH

CLROCH

CLRODH

CLROEH

CLROFH

CLRET1

CLRTRI

UMPMAIN1

INTT1:PUSHACC

PUSHPSW

GFLASH:CPLOFH

JBOFH,GFLASH1

MOV7CH,4CH

MOV7BH,4BH

MOV7AH,4AH

MOV79H,49H

MOV78H,48H

MOV77H,47H

MOV76H,46H

MOV75H,45H

MOV74H,44H

MOV73H,43H

MOV72H,42H

MOV71H,41H

MOV70H,40H

GFLASHOUT:POPPSW

POPACC

RETI

GFLASH1:JB0AH.GFLASH2

MOV7CH,#0AH

MOV7BH,#0AH

AJMPGFLASHOUT

GFLASH2:JB0BH,GFLASH3

MOV7AH,#0AH

MOV79H,#0AH

AJMPGFLASHOUT

GFLASH3:JB0CH,GFLASH4

MOV77H,#0AH

MOV76H,#0AH

AJMPGFLASHOUT

GFLASH4:JB0DH,GFLASH5

MOV78H,#0AH

AJMPGFLASHOUT

GFLASH5:JB0EH,GFLASH6

MOV75H,#0AH

MOV74H,#0AH

AJMPGFLASHOUT

GFLASH6:MOV73H,#0AH

MOV72H,#0AH

AJMPGFLASHOUT

ADD1:MOVA,R7

ADDA,#01H

DAA

RET

DIVIDE:MOVA,RO

ANLA,#0FH

MOVRI,A

MOVA,RO

SWAPA

ANLA,#0FH

MOVR2,A

RET

WRITE:CLRSCLK

NOP

SETBRST

NOP

MOVA,DS1302_ADDR

MOVR4,#8

WRITE1:RRCA

NOP

NOP

CLRSCLK

NOP

NOP

NOP

MOVIO,C

NOP

NOP

NOP

SETBSCLK

NOP

NOP

DJNZREWRITE1

CLRSCLK

NOP

MOVA,DS1302_DATA

MOVR4,#8

WRITE2:RRCA

NOP

CLRSCLK

NOP

NOP

MOVIO,C

NOP

NOP

NOP

SETBSCLK

NOP

NOP

DJNZR4,WRITE2

CLRRST

RET

READ:CLRSCLK

NOP

NOP

SETBRST

NOP

MOVA,DS1302_ADDR

MOVR4,#8

READ1:RRCA

NOP

MOVIO,C

NOP

NOP

NOP

SETBSCLK

NOP

NOP

NOP

CLRSCLK

NOP

NOP

DJNZR4,READ1

MOVR4,#8

READ2:CLRSCLK

NOP

NOP

NOP

MOVCJO

NOP

NOP

NOP

NOP

NOP

RRCA

NOP

NOP

NOP

NOP

SETBSCLK

NOP

DJNZR4,READ2

MOVDS1302_DATA,A

CLRRST

RET

BCD_10:MOVA,RO

ANLA,#0FH

MOVRI,A

MOVA,RO

SWAPA

ANLA,#0FH

MOVB,#10

MULAB

ADDA,RI

MOVRO,A

RET

CHECKMONTH:LCALLBCD_10

MOVA,RO

MOVB,#04

MULAB

MOVRI,A

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVR7,A

INCRI

MOVA,RI

MOVCA,@A+DPTR

MOVR6,A

INCRI

MOVA,RI

MOVCA,@A+DPTR

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論