打印

用过12C887的请进

[复制链接]
2387|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ningling_21|  楼主 | 2009-9-1 19:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
NE5532| | 2009-9-1 20:47 | 只看该作者
单步调试,看地址锁存时序对不对,直接对RAM区读写,以判断操作是否成功。

使用特权

评论回复
板凳
LLLLWWWW| | 2009-9-2 10:05 | 只看该作者
定义有问题,应该用#define这种方式,另外,就是地址的问题了~

使用特权

评论回复
地板
救火车| | 2009-9-2 11:26 | 只看该作者
用的什么单片机?

使用特权

评论回复
5
ningling_21|  楼主 | 2009-9-7 07:18 | 只看该作者
用的AT89C51,LCD=1602
现象:读取的时间:2007-07-16   12:00:06

时间不会走动,写入的时间为:2009-09-06  16:10:01

但读取的总是和写入的不同,不知何故,请求指点.....
主程序如下:
while(1)
{
  
  delay(5);

  t++;
  keys();
  delay1(10);
  
  read12887(time);//读取12887时间
  if(t==50)
  {       
    convert();//时间数据转换
    display();//显示12887时间
    zimu++;
    if(zimu<10);
        {
     DisplayMsg3(0x30+zimu,14);
         }
        zimu=0;
    delay(10);
        t=0;
   }
}

//读时间函数
void read12887(uchar *p)   //读取系统时间
{
    uchar a;
    do{ a=P12887a; }
        while((a&0x80)==0x80);
                *p++=P128870;
        *p++=P128872;
        *p++=P128874;
        *p++=P128876;
                *p++=P128877;
        *p++=P128878;
        *p++=P128879;

}

使用特权

评论回复
6
ningling_21|  楼主 | 2009-9-7 22:26 | 只看该作者
uint xdata P128870=0xc000;
uint xdata P128871=0xc001;
uint xdata P128872=0xc002;
uint xdata P128873=0xc003;
uint xdata P128874=0xc004;
uint xdata P128875=0xc005;
uint xdata P128876=0xc006;
uint xdata P128877=0xc007;
uint xdata P128878=0xc008;
uint xdata P128879=0xc009;
uint xdata P12887a=0xc00a;
uint xdata P12887b=0xc00b;
uint xdata P12887c=0xc00c;
uint xdata P12887d=0xc00d;
uint xdata P12887e=0xc00e;
uint xdata P12887f=0xc00f;

使用特权

评论回复
7
ningling_21|  楼主 | 2009-9-8 07:55 | 只看该作者
时间初始化为:2009-09-07     07:16:01  但不能走动
初始化程序如下:
/**********************************************************
12887初始化函数
**********************************************************/

void intial(void)
{         
     
        *(addr+0x0a)=0x70;
        *(addr+0x0b)=0x8e;  
        *(addr+0)=0x01;
        *(addr+2)=0x10; //分--初值--
        *(addr+4)=0x07;        //时--初值--
        *(addr+7)=0x07;        //日--初值--
        *(addr+8)=0x09;        //月--初值--
        *(addr+9)=0x09;        //年--初值             
    *(addr+0x0a)=0x27;
        *(addr+0x0b)=0x1e; //SET最高位为0,芯片更新,正常运行
}



读12C887的D寄存器,数据为0xff

是不是芯片内部电池耗尽?

使用特权

评论回复
8
bufubaoni| | 2014-8-30 16:10 | 只看该作者
请问最后解决了么?我一直都读不出来,读出来总是0x00,或者0x80。不知道怎么回事。

使用特权

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

本版积分规则

5013

主题

17741

帖子

51

粉丝