找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3151|回復: 1
打印 上一主題 下一主題
收起左側(cè)

搞定DS1302為什么老是讀出00H 事實勝于雄辯

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:83710 發(fā)表于 2015-6-23 20:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
DS1302為什么老是讀出00H?是寫沒寫進去?還是讀沒讀出來?哈哈,如果寫不進去會讀出一串FFH,如果讀出問題的話,也不會是00H,昨夜編好實驗,無果,甚怒!關(guān)機寬衣,忽覺大事不好,莫非我的循環(huán)太大了?那會導致一直在寫00H,一直在讀00H正好與實驗結(jié)果吻合,無奈舍友下寢,時間太晚,不好開機打擾,意覺明日復戰(zhàn),遂罷!早至工地,連工示之至東門待人!吾遂往,無事!思昨夜程序,應如是!至響歸,開機,改小循環(huán),波特率9600寫入,果如是!大喜!遂作此篇!曰:事實勝于雄辯!
;美國達拉斯的實時時鐘DS1302
ORG 0000H
CE EQU P3.5
IO EQU P3.3
SCLK EQU P3.4
AJMP MAIN
ORG 0030H
MAIN:
     LCALL WRITE1302
ppp: LCALL READ1302  ;注意,這里是第一遍寫入,循環(huán)不能調(diào)到main,否則,一直在寫你永遠讀不出時鐘哈哈哈,終于成功了!
  MOV P0,A
SJMP ppp

WRITE1302:MOV R1,#8
          CLR CE
          CLR SCLK
    SETB CE
    NOP
    NOP
    NOP
    NOP ;復位1302
    MOV A,#80H  ;寫控制指令
     LCALL WRITE
   MOV A,#00H
   MOV R1,#8                 
   LCALL WRITE
   RET
WRITE: RRC A
    MOV IO,C
    NOP
    NOP
    SETB SCLK
    NOP
    NOP
    NOP
    CLR SCLK
    NOP
    NOP
    DJNZ R1,WRITE
    RET
READ1302:MOV R1,#8
          CLR CE
          CLR SCLK
    SETB CE
    NOP
    NOP
    NOP
    NOP
    MOV A,#81H
    LCALL WRITE
    LCALL READ
    RET
READ:  MOV R1,#8
  SETB SCLK
  NOP
  NOP
  NOP
RED:    CLR SCLK
  NOP
  MOV C,IO
  RRC A
  NOP
  NOP
  SETB SCLK
  NOP
  NOP
  DJNZ R1,RED
  RET
END



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:45963 發(fā)表于 2015-6-24 07:40 | 只看該作者
和我一樣,是新手,那個地方要循環(huán)都不知道
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表