维库电子市场网
登录 免费注册 首页 | 行业黑名单 | 委托交易 | 帮助 | English
 
IC供应
IC求购
非IC供应
非IC求购
电子资讯
技术资料
商人论坛
 
技术文章 PDF资料 IC价格 引脚说明 电路图 IC替换 IC厂商 电子辞典
作者 主题 内容
采购元器件好去处--维库电子市场网推荐
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

请问,为什么我向时钟芯片PCF8563中写入初始化数据后,读出来

来源:21ic 作者:oversea 栏目:单片机
请问,为什么我向时钟芯片PCF8563中写入初始化数据后,读出来
显示的全是255,这是什么问题?

* - 本贴最后修改时间:2007-3-23 9:25:55 修改者:oversea

1楼: >>参与讨论
ayb_ice
随便说说
  肯定是读错了。。。

2楼: >>参与讨论
oversea
哪位老师可否给个例子让我参考一下?
 
3楼: >>参与讨论
myway
我把用过的程式方在我的网站
我把用过的程式方在我的网站, 你有空自己去下载看看.在下载的页面!

4楼: >>参与讨论
ayb_ice
随便说说
  去 '24LC02连续读不成功'帖子看看...

5楼: >>参与讨论
oversea
我不是立即读的,中间都有延时,可还是不行.
 
6楼: >>参与讨论
ayb_ice
随便说说
  上ZLG的网站上去下个吧...

7楼: >>参与讨论
qjy_dali
是啊,255不就是全1
PCF8563有没应答我看都不一定

8楼: >>参与讨论
zdjtcl1
回复
你读的东西没读出来,时序不对,或读写程序有错误

9楼: >>参与讨论
zdjtcl1
IIC.c读写时序
#pragma db cd
#include<intrins.h>
#include <reg51.h>
#include<IIC.h>
void sta()
{
SDA=1;
SCL=1;
while(SCL==0)
{
;
}
_nop_();
SDA=0;
_nop_();
_nop_();
SCL=0;
}

void stop()
{
    SDA=0;
    SCL=1;
    while(SCL==0)
    {
    ;
    }
    _nop_();
    SDA=1;
    _nop_();
    _nop_();
    SCL=0;
}

void mack()
{
SDA=0;
SCL=1;
_nop_();
_nop_();
SCL=0;
SDA=1;
}

void mnack()
{
SDA=1;
SCL=1;
_nop_();
_nop_();
SCL=0;
SDA=0;
}

void cack()
{
SDA=1;
SCL=1;
F0=0;
if(SDA==0)
{
SCL=0;
_nop_();
_nop_();
}
else
{
F0=1;
SCL=0;
_nop_();
_nop_();
}
}

void wrbyt(uchar shu)
{
uchar i;
if((shu&0x80)>0)
{
SDA=1;
}
else
{
SDA=0;
}
SCL=1;
while(SCL==0)
{;}
_nop_();
SCL=0;
SDA=0;
shu=_crol_(shu,1);
for(i=1;1<8;i++)
{if((shu&0x80)>0)
{wrbyt1();}
else
{wrbyt0();}
shu=_crol_(shu,1);
}
}

void wrbyt0()
{
SDA=0;
SCL=1;
_nop_();
_nop_();
SCL=0;
}

void wrbyt1()
{
SDA=1;
SCL=1;
_nop_();
_nop_();
SCL=0;
SDA=0;
}

uchar rdbyt()
{
uchar nn=0xff,mm=0x80,uu=0x7f;
uchar j;
uint q=0;
for(j=0;j<8;j++)
{
SDA=1;
SCL=1;
if(SDA==0)
{nn=(nn&uu);
nn=_crol_(nn,1);
SCL=0;
}
else
{
nn=(nn|mm);
nn=_crol_(nn,1);
SCL=0;
}
}
return(nn);
}

void wrnbyta(uchar slaw,uchar gg[],uchar n)
{
do{
sta();
wrbyt(slaw);
cack();
}while(F0==1);
wrbyt(gg[n]);
cack();
}

void wrnbyt(uchar slaw,uchar NUMBER,uchar ff[])
{
uchar idata k;
do{
sta();
wrbyt(slaw);
cack();
}while(F0==1);
for(k=0;k<NUMBER;k++)
{
wrbyt(ff[k]);
cack();
while(F0==1)
{
wrnbyta(slaw,ff,k);
}
}
stop();
}

void rdnbyt(NUMBER,slar,qq)
uchar NUMBER,slar,qq[];
{
uchar idata data0,l;
do{
sta();
wrbyt(slar);
cack();
}while(F0==1);
for(l=0;l<NUMBER;l++)
{
data0=rdbyt();
qq[l]=data0;
if(l<(NUMBER-1))
{mack();}
}
mnack();
stop();
}

void delay(uint x)
{
uchar j;
while(x--)
{
for(j=0;j<150;j++)
{;}
}
}



10楼: >>参与讨论
zdjtcl1
IIC.H头文件
sbit SDA=P2_0;
sbit SCL=P2_1;
#define uCHAR unsigned CHAR
#define uint unsigned int
extern void delay(uint x);
extern void sta();
extern void stop();
extern void mack();
extern void mnack();
extern void cack();
extern void wrbyt(uCHAR shu);
extern void wrbyt0();
extern void wrbyt1();
extern uCHAR rdbyt();
extern void wrnbyt(uCHAR slaw,uCHAR NUMBER,uCHAR ff[]);
extern void rdnbyt(uCHAR NUMBER,uCHAR slar,uCHAR qq[]);
extern void wrnbyta(uCHAR slaw,uCHAR gg[],uCHAR n);

11楼: >>参与讨论
zdjtcl1
8563
#include<at89x52.h>
#include<intrins.h>
//include"iic.c"
#define uint unsigned int
#define uCHAR unsigned CHAR
sbit SDA=P3^1;
sbit SCL=P3^0;
uCHAR code shu1[]={0xfd,0x61,0xbb,0xeb,0x67,0xcf,0xdf,0xe1,0xff,0xef,0xa7,0xf5,0x97,0x03};
uCHAR data dingshi[]={0x00,0x03,0x00,0x02};
uCHAR data xian[]={0x00,0x00,0x00,0x00};
uCHAR k[]={0x00};
uCHAR a1=0x00,a3=0;
bit a2;
uCHAR idata rd[3]={0x01,0xa0,0xa1};
uCHAR idata wr[3]={0x01,0xa0,0xa1};
uCHAR TEMP[5]={0x00,0x00,0x00,0x00,0x00};
uCHAR n=0;
void delay(uint x);
void sta();
void stop();
void mack();
void mnack();
void cack();
void wrbyt(uCHAR shu);
void wrbyt0();
void wrbyt1();
uCHAR rdbyt();
void wrnbyt(uCHAR slaw,uCHAR NUMBER,uCHAR ff[]);
void rdnbyt(uCHAR NUMBER,uCHAR slar,uCHAR qq[]);
void wrnbyta(uCHAR slaw,uCHAR gg[],uCHAR n);

void xianshi();
void miaojian();
uCHAR panjian();
void fenjia();
void jianchuli();



uCHAR panjian()
{
P3_2=1;
P3_0=1;
if(P3_2==0)
{
n=n+1;
return 1;
}
else
{
  P3_2=1;
  P3_0=0;
  if(P3_2==0)
   {
   P3_0=1;
    return 2;
   }
}
}


void fenjia()
{
  uCHAR a8[]={0x00,0x00};
  if(n==1)
    {
     a8[0]=dingshi[0];
     a8[1]=dingshi[1];
    }
    else if(n==2)
     {
      a8[0]=dingshi[2];
      a8[1]=dingshi[3];
     }
  if(a8[1]<9)
   {
    a8[1]=a8[1]+1;
   }
  else
{
   if(a8[0]<9)
   {
    a8[0]=a8[0]+1;
    a8[1]=0x00;
   }
    else
     {
    a8[1]=0x00;
    a8[0]=0x00;
     }
}
if(n==1)
{
dingshi[0]=a8[0];
dingshi[1]=a8[1];
}
else if(n==2)
{
dingshi[2]=a8[0];
dingshi[3]=a8[1];
}
}

void jianchuli()
{
uCHAR jk;
n=1;
while(n<3)
{
  if(n==1)
   {
    xian[0]=0x0a;
    xian[1]=0x0b;
    xian[2]=dingshi[0];
    xian[3]=dingshi[1];
    }
   else if(n==2)
    {
     xian[0]=0x0a;
     xian[1]=0x0b;
     xian[2]=dingshi[2];
     xian[3]=dingshi[3];
     }
for(jk=0;jk<100;jk++)
{    
xianshi();
}
jk=panjian();
if(jk==1)
{
n=n+1;
}
else if(jk==2)
{
fenjia();
}
}
}

void sta()
{
SDA=1;
SCL=1;
while(SCL==0)
{
;
}
_nop_();
SDA=0;
_nop_();
_nop_();
SCL=0;
}

void stop()
{
    SDA=0;
    SCL=1;
    while(SCL==0)
    {
    ;
    }
    _nop_();
    SDA=1;
    _nop_();
    _nop_();
    SCL=0;
}

void mack()
{
SDA=0;
SCL=1;
_nop_();
_nop_();
SCL=0;
SDA=1;
}

void mnack()
{
SDA=1;
SCL=1;
_nop_();
_nop_();
SCL=0;
SDA=0;
}

void cack()
{
SDA=1;
SCL=1;
F0=0;
if(SDA==0)
{
SCL=0;
_nop_();
_nop_();
}
else
{
F0=1;
SCL=0;
_nop_();
_nop_();
}
}

void wrbyt(uCHAR shu)
{
uCHAR i;
if((shu&0x80)>0)
{
SDA=1;
}
else
{
SDA=0;
}
SCL=1;
while(SCL==0)
{;}
_nop_();
SCL=0;
SDA=0;
shu=_crol_(shu,1);
for(i=1;1<8;i++)
{if((shu&0x80)>0)
{wrbyt1();}
else
{wrbyt0();}
shu=_crol_(shu,1);
}
}
void int00() interrupt 0
{
uCHAR m,k;
uCHAR xian1[]={0x00,0x00,0x00,0x00};
TR0=0;
IE=0x00;
xianshi();
n=0;
P3_0=1;
P3_2=1;
m=panjian();
if(m==1)
  {
   for(k=0;k<4;k++)
   {
    xian1[k]=xian[k];
   }
  jianchuli();
  
  TEMP[0]=0x01;
TEMP[1]=dingshi[0];
TEMP[2]=dingshi[1];
TEMP[3]=dingshi[2];
TEMP[4]=dingshi[3];
wrnbyt(0xa0,5,TEMP);
delay(300);
TEMP[0]=0x10;
TEMP[1]=0x01;
wrnbyt(0xa0,2,TEMP);
}
for(k=0;k<4;k++)
{
xian[k]=xian1[k];
}

P3_0=1;
P3_2=1;
IE=0x83;
TR0=1;
}

void wrbyt0()
{
SDA=0;
SCL=1;
_nop_();
_nop_();
SCL=0;
}

void wrbyt1()
{
SDA=1;
SCL=1;
_nop_();
_nop_();
SCL=0;
SDA=0;
}

uCHAR rdbyt()
{
uCHAR nn=0xff,mm=0x80,uu=0x7f;
uCHAR j;
uint q=0;
for(j=0;j<8;j++)
{
SDA=1;
SCL=1;
if(SDA==0)
{nn=(nn&uu);
nn=_crol_(nn,1);
SCL=0;
}
else
{
nn=(nn|mm);
nn=_crol_(nn,1);
SCL=0;
}
}
return(nn);
}

void wrnbyta(uCHAR slaw,uCHAR gg[],uCHAR n)
{
do{
sta();
wrbyt(slaw);
cack();
}while(F0==1);
wrbyt(gg[n]);
cack();
}

void wrnbyt(uCHAR slaw,uCHAR NUMBER,uCHAR ff[])
{
uCHAR idata k;
do{
sta();
wrbyt(slaw);
cack();
}while(F0==1);
for(k=0;k<NUMBER;k++)
{
wrbyt(ff[k]);
cack();
while(F0==1)
{
wrnbyta(slaw,ff,k);
}
}
stop();
}

void rdnbyt(NUMBER,slar,qq)
uCHAR NUMBER,slar,qq[];
{
uCHAR idata data0,l;
do{
sta();
wrbyt(slar);
cack();
}while(F0==1);
for(l=0;l<NUMBER;l++)
{
data0=rdbyt();
qq[l]=data0;
if(l<(NUMBER-1))
{mack();}
}
mnack();
stop();
}

void delay(uint x)
{
uCHAR j;
while(x--)
{
for(j=0;j<150;j++)
{;}
}
}


void main()
{
SP=0x60;
TCON=0x01;
IP=0x01;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
IE=0x83;

wrnbyt(0xa0,1,0x10); // 读0x10地址一字节
rdnbyt(1,0xa1,k);

if(k[0]!=1)
{
TEMP[0]=0x01;
TEMP[1]=dingshi[0];
TEMP[2]=dingshi[1];
TEMP[3]=dingshi[2];
TEMP[4]=dingshi[3];

wrnbyt(0xa0,5,TEMP);  //写TEMP数组(5字节)

delay(300);
}

wrnbyt(0xa0,1,0x01);
rdnbyt(4,0xa1,dingshi); //读0x01开始4字节


xian[0]=dingshi[0];
xian[1]=dingshi[1];
xian[2]=0x00;
xian[3]=0x00;
a2=0;
TR0=1;



while(1)
{
TR0=1;
P3_2=1;
xianshi();
P3_7=a2;
}
}

void xianshi()
{
uCHAR i=0x00;
for(i=0;i<4;i++)
  {
   P1=0x01;
   P3_3=1;
   P3_4=1;
   P3_5=1;
   P1_0=1;
   P1=shu1[xian[i]];
   SWITCH(i)
   {
    case 0:
     {
     P1_0=0;
     }
    break;
   case 1:
    {
     P3_5=0;
    }
   break;
   case 2:
     {
    P3_4=0;
     }
    break;
   case 3:
    
12楼: >>参与讨论
myway
有谁有空看你的程序呀!
应该还是要你自己搞定才行!

PCF8563程序

13楼: >>参与讨论
mdhysq
自己搞吧
你按照芯片资料说的用仿真器试吧,没问题的,网上放的程序一般都有点小问题,你可以用它做参考,在它的基础上进行修改,很快可以搞出来的

14楼: >>参与讨论
tong2gang
会不会没有设时间啊?
记得这个芯片初始化时要写入时间才能工作的,你在初始化的时候有没有先写入个时间给它?随便什么都行!

15楼: >>参与讨论
ayb_ice
随便说说
多看看IIC原理吧...


参与讨论
昵称:
讨论内容:
 
 
相关帖子
I/O扩展问题
大家注意了,TOP853是垃圾编程器!!!
请教WINAVR编译器问题,谢谢!
请问如何用BT137控制50Hz交流灯泡的亮度?!
非易失性存储数据存储时机


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号