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測試領域...