怎麼讀時鐘晶元DS1302的時間

2025-01-24 17:45:19 字數 1654 閱讀 1110

1樓:gcz菜鳥

我的ds1302剛剛弄好。也遇到過你說的問題,原因是沒有ds1302沒有啟動。首先你在開機時候如果ds1302處於掉電狀態,則要在8eh輸入00h,也就是初始化。

否則不能對它進行操作,之後你就可以隨意操作了。注意:1.

如果是往ds1302裡邊寫資料,在寫之前要先將clk置低電平,然後才能將rst置高。之後在前8個上公升沿傳送位址,下8個上公升沿傳送你要寫的資料。完了rst置低,禁止操作。

2.讀的時候也是要先將clk置低電平,然後才能將rst置高。之後在前8個上公升沿傳送位址,特別注意,在最後乙個資料傳送完了後,該脈衝的下降沿就會輸出資料的第一位。

所以實際上只有15個脈衝。3.另外資料的讀寫都是從低位傳送和接收的。

4.網上中文資料很多,你可以下來看看,但以上問題是往往被忽略的,和你一起分享下。

2樓:網友

說明是用了非門按制rst腳,所以setbp1.2;令=0

ds_read�setbp1.2;令=0。

clrp1.1;令sclk=0。

clrp1.2;令=1,啟動晶元。

lcallds_wsub;寫8位位址。

lcallds_rsub;讀出8位資料。

retds_wsub�movr7,#08h

wl00p�rrca;a為位址位元組。

movp1.0,c

setbp1.1;在時鐘上公升沿。

nop;輸入位址位元組。

clrp1.1

djnzr7�wl00p

retds_rsub�setbp1.0;為讀資料作準備。

movr7�#08h

rl00p:setbp1.1

nopclrp1.1;在第9個正脈衝的下。

movc,p1.0;降沿開始輸出資料。

rrca;a中為讀出的資料。

djnzr7,rl00p

ret若使用如下程式對dsl302的ram1�其內容為5ah 進行讀操作。

lcallds_read;呼叫讀子程式。

則程式執行後a中的資料為2dh,顯然讀出的資料不正確。若再使用一條rla指令調整後,則a中為5ah,結果才正確。由此說明:

使用上述程式讀出的ram1單元中的第0位資料實為第1位資料,讀出的第7位資料實為第0位資料。

經筆者仔細研究時序圖和多次試驗得知,問題的原因在於:對於讀操作時序,在sclk出現第8個正脈衝時,上公升沿輸入位址位元組的最後一位資料,而在此正脈衝的下降沿就要輸出資料位元組的第0位資料。然而筆者的程式中是在第9個正脈衝的下降沿才誤認為輸出了資料位元組的第0位資料,此位資料事實上是第二個下降沿輸出的,故實為資料位元組的第1位資料。

經筆者實驗:只要rst保持為高電平,如果超過8個下降沿,它們將重新從第0位輸出資料位,因程式中輸出的最後一位資料位,是9個下降沿輸出的資料位,故實為資料位元組的第0位資料位。

由此可見,單位元組讀操作的時序圖如改為圖2所示時序圖,則讀者較容易理解可避免發生上述程式設計錯誤。

只要將上述的ds_rsub子程式改為如下的子程式即可解決上述問題:

ds_rsubl:setbp1.0;為讀資料作準備。

movr7,#08h

rl00p:clrp1.1;sclk第8個正脈衝的。

movc,p1.0;下降沿開始輸出資料。

racsetbp1.1

djnzr7,rl00pret

S1142D貼片整合晶元是什麼?

現在我們都已經知道了晶元這種東西用途非常廣泛,而之所以廣泛應用就在於它強大的效能與其極大的 差,它的功能主要是指在運算計算的方面,現在的科技這麼發達可以說 晶元 起到了劃時代的作用。晶元 最初是由美國人 傑克 基爾比 jack kilby 發明,它們雖然非常小但是每乙個上面都有幾百個以奈米計算的晶體...

時鐘問題,怎麼做?時鐘問題有哪些解題方法?

舉例 一天x於下午六點多鐘外出時,看到鐘上的時針與分針成90度夾角,等他下午7點多鐘回家時再看鐘,發現時針與分針的夾角也是90度,問x離家多久?解 x最早在6 15到6 20之間離開,最晚在6 45到7 00之間離開 最早在7 15到7 20之間回來,最晚在7 45到8 00之間回來。所以有4種情況...

晶元測試的準備規劃,晶元要怎麼測試

為soc裝置所做的逐塊測試 規劃必須實現 正確配置用於邏輯測試的atpg工具 測試時間短 新回型高速故障模型以及 答多種記憶體或小型陣列測試。對生產線而言,診斷方法不僅要找到故障,而且還要將故障節點與工作正常的節點分離開來。此外,只要有可能,應該採用測試復用技術以節約測試時間。在高整合度ic測試領域...