找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3121|回复: 1
收起左侧

搞定DS1302为什么老是读出00H 事实胜于雄辩

[复制链接]
ID:83710 发表于 2015-6-23 20:53 | 显示全部楼层 |阅读模式
DS1302为什么老是读出00H?是写没写进去?还是读没读出来?哈哈,如果写不进去会读出一串FFH,如果读出问题的话,也不会是00H,昨夜编好实验,无果,甚怒!关机宽衣,忽觉大事不好,莫非我的循环太大了?那会导致一直在写00H,一直在读00H正好与实验结果吻合,无奈舍友下寝,时间太晚,不好开机打扰,意觉明日复战,遂罢!早至工地,连工示之至东门待人!吾遂往,无事!思昨夜程序,应如是!至响归,开机,改小循环,波特率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  ;注意,这里是第一遍写入,循环不能调到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



回复

使用道具 举报

ID:45963 发表于 2015-6-24 07:40 | 显示全部楼层
和我一样,是新手,那个地方要循环都不知道
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表