版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版宿舍樓智能監(jiān)控設(shè)施承包合同3篇
- 2025年度木材貿(mào)易與木工加工合作合同4篇
- 夏令營2025非傳統(tǒng)教育項目合作合同3篇
- 2025年度木材加工廠設(shè)備租賃合同范本7篇
- 《漢服唯美古詩句》課件
- 2025版實習員工實習期間住宿安排合同3篇
- 養(yǎng)生保健與中醫(yī)養(yǎng)生藥物考核試卷
- 合成革表面處理與涂飾技術(shù)考核試卷
- 2025版智能電網(wǎng)信息安全防護合同4篇
- 創(chuàng)業(yè)空間科技創(chuàng)新平臺考核試卷
- 《天潤乳業(yè)營運能力及風險管理問題及完善對策(7900字論文)》
- 醫(yī)院醫(yī)學倫理委員會章程
- xx單位政務(wù)云商用密碼應(yīng)用方案V2.0
- 農(nóng)民專業(yè)合作社財務(wù)報表(三張報表)
- 動土作業(yè)專項安全培訓考試試題(帶答案)
- 大學生就業(yè)指導(高職就業(yè)指導課程 )全套教學課件
- 死亡病例討論總結(jié)分析
- 第二章 會展的產(chǎn)生與發(fā)展
- 空域規(guī)劃與管理V2.0
- JGT266-2011 泡沫混凝土標準規(guī)范
- 商戶用電申請表
評論
0/150
提交評論