打印

ds1302读时序的问题

[复制链接]
3420|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 472666GAQ 于 2009-12-3 13:31 编辑

uchar ds1302_r(uchar ds_addr)   //ds1302读函数
{
    uchar i,dat,ds_data;
RST=1;
for(i=0;i<7;i++)
{
  IO=ds_addr&0x01;
  SCLK=1;
  SCLK=0;
  ds_addr>>=1;
}
IO=ds_addr;
SCLK=1;
IO=1;
SCLK=0;
    dat=IO;
dat<<=7;
    ds_data|=dat;
ds_data>>=1;
for(i=0;i<7;i++)
{
   SCLK=1;
  IO=1;
  SCLK=0;
  dat=IO;
  dat<<=7;
  ds_data|=dat;
  ds_data>>=1;  
}
RST=0;
_nop_();
return ds_data ;
}
为什么我这段读程序工作不正常呢   我是按照datasheet写的   段程序还会导致12864显示的不正常比如说只显示读出的秒时间但是在12864上面会显示多个秒的时间比如说在0x80显示秒的时间然后其他的好几个地方都会显示秒的时间只是显示的颜色很浅   这是为啥呀  只要把这个程序屏蔽12864就显示正常了   我用的是51

ds1302的数据.jpg (13.93 KB )

ds1302的数据.jpg

相关帖子

沙发
472666GAQ|  楼主 | 2009-12-3 05:59 | 只看该作者
不是单片机的IO都是准双向的么   我怎么看别人写的程序读ds1302的时候没有先把IO拉高呢  直接去读的我的ds1302的rst  IO  sclk都加了上拉电阻了

使用特权

评论回复
板凳
hotpower| | 2009-12-3 06:01 | 只看该作者
2# 472666GAQ

倒塌了,谁在大清早说梦话???

不是单片机的IO都是准双向的么 ????????????????????????

使用特权

评论回复
地板
472666GAQ|  楼主 | 2009-12-3 06:41 | 只看该作者
书上说单片机IO口要是读数据的话要先置1  但是我看别人读ds1302没有置1

使用特权

评论回复
5
lileibmw| | 2009-12-3 07:55 | 只看该作者
建议看下datasheet上IO口的电路

使用特权

评论回复
6
328500920| | 2009-12-3 09:05 | 只看该作者
你用的是51吗  还是其他的

使用特权

评论回复
7
leolle| | 2009-12-3 09:54 | 只看该作者
加了多少的上拉电阻?

使用特权

评论回复
8
472666GAQ|  楼主 | 2009-12-3 13:31 | 只看该作者
我用的是51单片机

使用特权

评论回复
9
IC_99| | 2009-12-3 22:33 | 只看该作者
在程序内作适当的延时

使用特权

评论回复
10
yazhi68| | 2009-12-3 23:04 | 只看该作者
网上搜一下吧,有现成的程序C(51),跟人家的对比一下。
前一阵儿找不到自己的,偷懒从网上拷了一颗虾球的(忘了哪颗虾球,也不记得哪儿拷的,不敬哈),跟手册对了一下,没发现不对就用了,乐得哈喇子老长。
又挣3分,:lol

使用特权

评论回复
11
2011自控| | 2014-2-24 21:08 | 只看该作者
我也面临同样的问题

使用特权

评论回复
12
youluo235| | 2014-2-25 20:13 | 只看该作者
1302程序网上一大把。楼主看下别人程序和你自己的区别在哪就明白。上不上啦这问题没关系的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

285

帖子

2

粉丝