打印

请那位大师看看我的程序有问题吗?谢谢了。

[复制链接]
1633|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bjjtyl|  楼主 | 2013-6-6 10:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uchar read12887(uchar *p) //读取系统时间
{
          uchar a,u;
do{ a=P12887a; } while((a&0x80)==0x80);        //检查更新位。
*p++=P128870; *p++=P128872; *p++=P128874; *p++=P128876;*p++=P128877; *p++=P128878; *p++=P128879;
  return (u);        //返回的是指针吗?
}
void main (void)
{
   uchar *q,miao,miaog,miaog1,miaog2,miaogs,pTmin; //
   ch451_init();//调ch451初始化函数
   setup12887(q); //设置ds12887时间
   start12887(); //启动时钟
   while(1)
   pTmin=read12887(q); //调用  读取ds12887时间?????????????????????????????
   miao=(pTmin);

相关帖子

沙发
NE5532| | 2013-6-6 14:36 | 只看该作者
不知道楼主想干什么,咋评价有没有问题呢。

使用特权

评论回复
板凳
wangch_sh| | 2013-6-6 18:17 | 只看该作者
是不是读的值不对呀?

使用特权

评论回复
地板
sedatefire| | 2013-6-7 10:38 | 只看该作者
NE5532 发表于 2013-6-6 14:36
不知道楼主想干什么,咋评价有没有问题呢。

+1

使用特权

评论回复
5
sedatefire| | 2013-6-7 10:40 | 只看该作者
return (u);        //返回的是指针吗
这个u我都找不到谁给它赋值呢,就return了,震惊哦
编译器至少有个warning吧

使用特权

评论回复
6
528388812| | 2013-6-7 11:00 | 只看该作者
有点小问题

使用特权

评论回复
7
bjjtyl|  楼主 | 2013-6-9 18:05 | 只看该作者
NE5532 发表于 2013-6-6 14:36
不知道楼主想干什么,咋评价有没有问题呢。

我想读取DS12887秒地址的值,不知道还有其他方法吗?这个方法太复杂了。

使用特权

评论回复
8
bjjtyl|  楼主 | 2013-6-9 18:07 | 只看该作者
sedatefire 发表于 2013-6-7 10:40
return (u);        //返回的是指针吗
这个u我都找不到谁给它赋值呢,就return了,震惊哦
编译器至少有个wa ...

我想读取DS12887秒地址的值,不知道还有其他方法吗?这个方法太复杂了。

使用特权

评论回复
9
bjjtyl|  楼主 | 2013-6-9 18:07 | 只看该作者
我想读取DS12887秒地址的值,不知道还有其他方法吗?这个方法太复杂了。

使用特权

评论回复
10
NE5532| | 2013-6-9 21:36 | 只看该作者
用指针操作没有错,等更新标志也是应该的。楼主只要秒的话,其他寄存器可以不读的。

使用特权

评论回复
11
kakabhp| | 2013-6-10 13:22 | 只看该作者
我对楼主提点小建议:1.明确自己的遇到的问题,还有出现问题的现象。2.养成一个好的编程习惯,对自己和别人是一种尊重。

使用特权

评论回复
12
sedatefire| | 2013-6-11 10:17 | 只看该作者
仔细一看又吓一跳,你这个q是“野指针”啊,为何不用数组?

uchar *q,miao,miaog,miaog1,miaog2,miaogs,pTmin; //
...
   setup12887(q); //设置ds12887时间
.....
   pTmin=read12887(q); //调用  读取ds12887时间?????????????????????????????
...

使用特权

评论回复
13
sedatefire| | 2013-6-11 10:19 | 只看该作者
我有两个建议
软件上,你用模拟器单步执行,一句一句代码查。
硬件上,你用示波器,只要电源地线正确,数据脚位的波形符合datasheet的要求,就没有搞不定的事儿。

使用特权

评论回复
14
sedatefire| | 2013-6-11 10:19 | 只看该作者
不过你的C语言基础还有待加强。

使用特权

评论回复
15
bjjtyl|  楼主 | 2013-6-11 13:05 | 只看该作者
谢谢大家的指导,是的,我初学C51,不懂得规矩,请大家谅解,另外还需要大家今后多多指教。
下面程序是网上摘得,关于t_second  不知道是地址还是地址的数据,我在一个工程里的main()里读取t_second不知道是什么类型东东。请大师们指教。
main()

while(1)
{   
    readds12c887();  //读取时间参数
pTmin0=t_second;
miaog=pTmin0/10;//
    ch451_write1(DigCode[1]|miaog); //
pTmin0=t_second;
miaos=pTmin0%10;//
    ch451_write1(DigCode[2]|miaos);  //
}

void setupds12c887(void)/*ds12c887设置  初始化程序*/
  {
   XBYTE[0x0000+0x0B]=0x82;
      XBYTE[0x0000+0x0A]=0xA0;
   XBYTE[0x0000+0x0A]=0x20;
      XBYTE[0x0000+0x0B]=0x02;
  }
void readds12c887()  //读取时间参数
{
   if((XBYTE[0x000A]&0x80)!=0)//UIP=1更新即将开始。
    {
      t_century=XBYTE[0x0000+0x32];/*读取世纪*/
      t_year=XBYTE[0x0000+0x09];   /*读取年份*/
      t_month=XBYTE[0x0000+0x08];  /*读取月份*/
      t_date=XBYTE[0x0000+0x07];   /*读取日期*/
      t_week=XBYTE[0x0000+0x06];   /*读取星期几*/
      t_hour=XBYTE[0x0000+0x04];/*读取小时*/
      t_minute=XBYTE[0x0000+0x02];/*读取分钟*/
      t_second=XBYTE[0x0000+0x00];/*读取秒*/
    }
}

使用特权

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

本版积分规则

个人签名:电子恐龙

19

主题

50

帖子

0

粉丝