导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[lxpin]我的DS1302死活读不出时钟数据来,请



No.61688
作者:lxpin
邮件:lxpin@263.net
ID:11614
登陆:12次
文章数:19篇
最后登陆IP:220.202.55.199
最后登陆:2006/6/3 8:04:24
注册:2003/4/27 21:31:52
财富:201
发帖时间:2004/9/4 20:54:46
发贴者IP:220.202.55.189
标题:lxpin:我的DS1302死活读不出时钟数据来,请帮忙看一下?
摘要:No.61688我的DS1302死活读不出时钟数据来,请帮忙看一下? /*********************************************************************
 模块名称:DS1302.c
 功    能:实时时钟模块           时钟芯片型号:DS1302 
*********************************************************************/
#include   <reg51.h>   
#include   <INTRINS.h>  

#define uchar unsigned char
sbit    T_CLK = P2^2;    /*实时时钟时钟线引脚 */
sbit    T_IO  = P2^1;    /*实时时钟数据线引脚 */
sbit    T_RST = P2^0;    /*实时时钟复位线引脚 */
sbit   ACC0 = ACC^0;
sbit   ACC7 = ACC^7;

uchar buffer2[7]={0x45,0x45,0x15,0x13,0x3,0x2,0x01}; //初始数秒,分,时,日,月,星期,年

void   RTInputByte(uchar d);        /* 输入 1Byte */
uchar  RTOutputByte(void);        /* 输出?1Byte */
void   W1302(uchar ucaddr, uchar ucda); 
uchar  R1302(uchar ucaddr);
void Burstw1302t(uchar *pwclock);
void Burstr1302t(uchar *prclock);
void Burstw1302r(uchar *pnreg);
void burstr1302r(uchar *prreg);
void set1302(uchar *pclock);     /* 设置初始时间 */
void get1302(uchar uccurtime[]); /* 读取1302当前时间 */

/*********************************************************************

**********************************************************************/
void main(void)
{
    W1302(0x80,0x00);  //启动ds102振荡
    set1302(buffer2);       //调用设置初始时间
    while(1)
    {
      get1302(buffer2);
    };
}

/******************************************************************** 
 函 数 名:RTInputByte()
 功    能:实时时钟写入一字节
 说    明:往DS1302写入1Byte数据 (内部函数)
 入口参数:d 写入的数据 
 返 回 值:无  
/***********************************************************************/
void RTInputByte(uchar d) 

    uchar i;
    ACC = d;
    for(i=8; i>  0; i--)
    {
        T_IO = ACC0;           /*相当于汇编中的 RRC */
         T_CLK = 1;
        _nop_();
   T_CLK = 0;  
        ACC = ACC >  >   1; 
    } 
}
/******************************************************************** 
 函 数 名:RTOutputByte()
 功    能:实时时钟读取一字节
 说    明:从DS1302读取1Byte数据 (内部函数)
 入口参数:无  
*********************************************************************/
uchar RTOutputByte(void) 

    uchar i;
    for(i=8; i>  0; i--)
    {
        ACC = ACC >  >  1;         /*相当于汇编中的 RRC */
        T_CLK = 0;
        _nop_();
        ACC7 = T_IO;
        T_CLK = 1;
        _nop_();
    } 
    return(ACC); 
}
/******************************************************************** 
 函 数 名:W1302()
 功    能:往DS1302写入数据
 说    明:先写地址,后写命令/数据 (内部函数)
 调    用:RTInputByte() , RTOutputByte()
 入口参数:ucAddr: DS1302地址, ucData: 要写的数据
 返 回 值:无
*********************************************************************/
void W1302(uchar ucAddr, uchar ucda)
{
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(ucAddr);       /* 地址,命令 */
    RTInputByte(ucda);       /* 写1Byte数据*/
    T_CLK = 1;
    T_RST = 0;

/******************************************************************** 
 函 数 名:R1302()
 功    能:读取DS1302某地址的数据
 说    明:先写地址,后读命令/数据 (内部函数)
 调    用:RTInputByte() , RTOutputByte()
 入口参数:ucAddr: DS1302地址
 返 回 值:ucData :读取的数据
********************************************************************/
uchar R1302(uchar ucAddr)
{
    uchar ucData;
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(ucAddr);             /* 地址,命令 */
    ucData = RTOutputByte();         /* 读1Byte数据 */
    T_CLK = 1;
    T_RST = 0;
    return(ucData);
}
/******************************************************************** 
 函 数 名:BurstW1302T()
 功    能:往DS1302写入时钟数据(多字节方式)
 说    明:先写地址,后写命令/数据
 调    用:RTInputByte() 
 入口参数:pWClock: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 控制
                            8Byte (BCD码)1B 1B 1B 1B 1B  1B  1B 1B
************************************************* ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:78531毫秒 查询6次