zoukankan      html  css  js  c++  java
  • ds1302驱动

    #include <reg51.h>
    #include
    <absacc.h>
    #include
    <math.h>


    sbit DS1302_RST
    = P3^4; //实时时钟复位线引脚
    sbit DS1302_CLK = P3^0; //实时时钟时钟线引脚
    sbit DS1302_IO = P3^1; //实时时钟数据线引脚
    sbit ACC0 = ACC^0;
    sbit ACC7
    = ACC^7;


    #define DS1302_second 0x80
    #define DS1302_minute 0x82
    #define DS1302_hour 0x84
    #define DS1302_week 0x8A
    #define DS1302_day 0x86
    #define DS1302_month 0x88
    #define DS1302_year 0x8C

    void Rst1302(void) //DS1302复位
    {
    DS1302_RST
    =1;
    DS1302_CLK
    =0;
    DS1302_RST
    =0;
    }

    void EndWr1302(void) //结束写操作
    {
    DS1302_CLK
    =1;
    DS1302_RST
    =1;
    }

    void DS1302WriteByte(uchar d) //实时时钟写入一字节
    {
    unsigned
    char i;
    ACC
    = d;
    for(i=8; i>0; i--)
    {
    DS1302_IO
    = ACC0; //相当于汇编中的 RRC
    DS1302_CLK = 1;
    DS1302_CLK
    = 0;
    ACC
    = ACC >> 1;
    }
    }

    uchar DS1302ReadByte(
    void) //实时时钟读取一字节
    {
    unsigned
    char i;
    for(i=8; i>0; i--)
    {
    ACC
    = ACC >>1; //相当于汇编中的 RRC
    ACC7 = DS1302_IO;
    DS1302_CLK
    = 1;
    DS1302_CLK
    = 0;
    }
    return(ACC);
    }

    void Write1302(uchar Addr, uchar Da) //Addr: DS1302地址, Da: 要写的数据
    {
    Rst1302();
    DS1302WriteByte(Addr);
    // 地址,命令
    DS1302WriteByte(Da); // 写1Byte数据
    EndWr1302();
    }

    uchar Read1302(uchar Addr)
    //读取DS1302某地址的数据
    {
    uchar Data,k;
    Rst1302();
    DS1302WriteByte(Addr
    |0x01); // 地址,命令
    Data=DS1302ReadByte(); // 读1Byte数据
    EndWr1302();

    k
    =((Data&0x70)>>4)*10+(Data&0x0f);
    return(k);
    }

    void DS1302_SetProtect(bit flag) //是否写保护,如果为1,则写保护,为0,则写允许
    {
    if(flag)
    Write1302(
    0x8E,0x80);
    else
    Write1302(
    0x8E,0x00);
    }

    void DS1302_Settime(uchar Address,uchar Value) // 设置时间函数
    {
    DS1302_SetProtect(
    0) ;
    Write1302(Address, ((Value
    /10)<<4 | (Value%10)));
    DS1302_SetProtect(
    1) ;
    }
  • 相关阅读:
    JS---自己制作的选项卡
    CSS---左右固定,中间自适应布局
    Jquery Ajax示例---load,get,post方法
    JS---高级进阶
    JS---基础知识
    雅虎军规
    JS---setTimeout()与setInterval()的使用
    CSS3---绘制六边形
    CSS---CSS sprites的使用
    ARC(Automatic Reference Counting )技术概述
  • 原文地址:https://www.cnblogs.com/crazyxu/p/2054167.html
Copyright © 2011-2022 走看看