用户名: 密码: 验证码: gdcode
  • 快速导航
  • 开盘数据恢复 RAID数据恢复 PC3000技术 硬盘技术前沿 数据恢复软件
  • 当前位置 :| 首页 > 技术文章 > U盘数据恢复 >  

    u盘数据恢复-实时时钟芯片DS1302的C51程序列子

    来源:爱恢复网 作者:AHUIFU 时间:2008-07-09 Tag:U盘数据恢复   电子存储修复   U盘修复   点击:
    /*********************************************************************/
    /* 实时时钟模块 时钟芯片型号:DS1302 */ 


    /*/
    /*********************************************************************/
    sbit T_CLK = P2^7; /*实时时钟时钟线引脚 */
    sbit T_IO = P1^4; /*实时时钟数据线引脚 */
    sbit T_RST = P1^5; /*实时时钟复位线引脚 */
    /******************************************************************** 
    *
    * 名称: v_RTInputByte
    * 说明: 
    * 功能: 往DS1302写入1Byte数据
    * 调用:
    * 输入: ucDa 写入的数据 
    * 返回值: 无
    ***********************************************************************/
    void v_RTInputByte(uchar ucDa) 

    uchar i;
    ACC = ucDa;
    for(i=8; i>0; i--)
    {
    T_IO = ACC0; /*相当于汇编中的 RRC */
    T_CLK = 1;
    T_CLK = 0;
    ACC = ACC >> 1; 

    }
    /******************************************************************** 
    *
    * 名称: uchar uc_RTOutputByte
    * 说明: 
    * 功能: 从DS1302读取1Byte数据
    * 调用: 
    * 输入: 
    * 返回值: ACC
    ***********************************************************************/
    uchar uc_RTOutputByte(void) 

    uchar i;
    for(i=8; i>0; i--)
    {
    ACC = ACC >>1; /*相当于汇编中的 RRC */
    ACC7 = T_IO;
    T_CLK = 1;
    T_CLK = 0;

    return(ACC); 
    }
    /******************************************************************** 
    *
    * 名称: v_W1302
    * 说明: 先写地址,后写命令/数据
    * 功能: 往DS1302写入数据
    * 调用: v_RTInputByte() 
    * 输入: ucAddr: DS1302地址, ucDa: 要写的数据
    * 返回值: 无
    ***********************************************************************/
    void v_W1302(uchar ucAddr, uchar ucDa)
    {
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    v_RTInputByte(ucAddr); /* 地址,命令 */
    v_RTInputByte(ucDa); /* 写1Byte数据*/
    T_CLK = 1;
    T_RST =0;

    /******************************************************************** 
    *
    * 名称: uc_R1302
    * 说明: 先写地址,后读命令/数据
    * 功能: 读取DS1302某地址的数据
    * 调用: v_RTInputByte() , uc_RTOutputByte()
    * 输入: ucAddr: DS1302地址
    * 返回值: ucDa :读取的数据
    ***********************************************************************/
    uchar uc_R1302(uchar ucAddr)
    {
    uchar ucDa;
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    v_RTInputByte(ucAddr); /* 地址,命令 */
    ucDa = uc_RTOutputByte(); /* 读1Byte数据 */
    T_CLK = 1;
    T_RST =0;
    return(ucDa);
    }
    /******************************************************************** 
    *
    * 名称: v_BurstW1302T
    * 说明: 先写地址,后写数据(时钟多字节方式)
    * 功能: 往DS1302写入时钟数据(多字节方式)
    * 调用: v_RTInputByte() 
    * 输入: pSecDa: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 控制
    * 8Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B 1B
    * 返回值: 无
    ***********************************************************************/
    void v_BurstW1302T(uchar *pSecDa)
    {
    uchar i;
    v_W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    v_RTInputByte(0xbe); /* 0xbe:时钟多字节写命令 */
    for (i=8;i>0;i--) /*8Byte = 7Byte 时钟数据 1Byte 控制*/
    {
    v_RTInputByte(*pSecDa);/* 写1Byte数据*/
    pSecDa ;
    }
    T_CLK = 1;
    T_RST =0;

    /******************************************************************** 
    *
    * 名称: v_BurstR1302T
    * 说明: 先写地址,后读命令/数据(时钟多字节方式)
    * 功能: 读取DS1302时钟数据
    * 调用: v_RTInputByte() , uc_RTOutputByte()
    * 输入: pSecDa: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 
    * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
    上一篇:U盘数据恢复应用-单片机的中断系统
    下一篇:没有了
    最新评论共有 0 位网友发表了评论
    发表评论
    评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
    用户名: 密码:
    匿名?
    注册
    搜索
  • 关键词:
  • 热点关注
    相关文章
    问答中心  |  爱恢复百科  |  公司库  |  专题  |  培训信息  |  广告招商  |  高级检索  |  网站地图