亚洲网站在线免费观看,欧美性运动视频免费观看网站,国产精品爽爽久久,熟女少妇丰满一区二区

問答

怎么讀時鐘芯片DS1302的時間

提問者:s55353942013-08-03 00:00

現在主要是想把時鐘芯片的秒讀出來用LED顯示,沒運行之前秒的值是00H,自己弄的程序運行之后,一直是0FFH,不知道是不是時鐘芯片還沒啟動,啟動程序應該怎么寫的? 我剛開始學單片機,好多都不懂,請高手幫幫忙。(最好給個具體的讀芯片的程序。)

最佳答案

說明p1.2是用了非門按制RST腳,所以SETBP1.2;令=0 DS_READ?SETBP1.2;令=0。 CLRP1.1;令SCLK=0。 CLRP1.2;令=1,啟動芯片。 LCALLDS_WSUB;寫8位地址。 LCALLDS_RSUB;讀出8位數據。 RET DS_WSUB?MOVR7,#08H WL00P?RRCA;A為地址字節。 MOVP1.0,C SETBP1.1;在時鐘上升沿 NOP;輸入地址字節。 CLRP1.1 DJNZR7?WL00P RET DS_RSUB?SETBP1.0;為讀數據作準備。 MOVR7?#08H RL00P:SETBP1.1 NOP CLRP1.1;在第9個正脈沖的下 MOVC,P1.0;降沿開始輸出數據。 RRCA;A中為讀出的數據。 DJNZR7,RL00P RET 若使用如下程序對DSl302的RAM1?其內容為5AH?進行讀操作 READ:MOVA?#11000101B;RAM1單元的讀地址。 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;下降沿開始輸出數據。 RAC SETBP1.1 DJNZR7,RL00P RET

回答者:nightcici2016-08-03 00:00

DS 5相關問題

相關閱讀

DS 5頻道

報價:21.99-34.59
級別:中型車
排量:1.6T 1.8T 
變速箱:-

車友關注

最新標簽

按字母分類:
ABCDEFGHIJKLMNOPQRSTWXYZ0-9