⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302.h.txt

📁 DS1302
💻 TXT
字号:
uchar SEG_TBC[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
                   0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
		  0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
		  0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
		  0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,
		  0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59} ; //16进制转BCD码
sbit clock_dat = P1^1;			 //定义DS1302的I/O口
sbit clock_clk = P1^0;
sbit clock_rst = P1^2;

sbit a0 = ACC ^ 0;
sbit a1 = ACC ^ 1;
sbit a2 = ACC ^ 2;
sbit a3 = ACC ^ 3;
sbit a4 = ACC ^ 4;
sbit a5 = ACC ^ 5;
sbit a6 = ACC ^ 6;
sbit a7 = ACC ^ 7;  


/********************************************************************************************
* 函数名称:Delay()
* 功    能:延时程序
* 入口参数:延时时间
* 出口参数:无
*********************************************************************************************/
void Delay (uint t)
{
   uchar i;
   while(t--)
   {  for(i=0;i<125;i++)   //延时1Ms
       {;}
    }
}

/********************************************************************************************
* 函数名称:clock_out
* 功    能:对DS1302写1字节的数据
* 入口参数:数据 
* 出口参数:无
*********************************************************************************************/
void clock_out(unsigned char dd)//上跳沿写数据  先写入控制字,再写入数据
{
    ACC=dd;
    clock_dat=a0; clock_clk=1; clock_clk=0;
    clock_dat=a1; clock_clk=1; clock_clk=0;
    clock_dat=a2; clock_clk=1; clock_clk=0;
    clock_dat=a3; clock_clk=1; clock_clk=0;
    clock_dat=a4; clock_clk=1; clock_clk=0;
    clock_dat=a5; clock_clk=1; clock_clk=0;
    clock_dat=a6; clock_clk=1; clock_clk=0;
    clock_dat=a7; clock_clk=1; clock_clk=0;
}
/********************************************************************************************
* 函数名称:clock_in()
* 功    能:读DS1302一字节的数据
* 入口参数:无 
* 出口参数:无
*********************************************************************************************/
uchar clock_in(void)//读数据 下跳沿
{
    clock_dat=1;//这个是时序,读a0的时候就是直接是clock_dat=1,a0是个位,不是一个值,
                //而读其他的就是先置1再为0,再a1=clkock—da

    a0=clock_dat;
    clock_clk=1; clock_clk=0; a1=clock_dat;
    clock_clk=1; clock_clk=0; a2=clock_dat;
    clock_clk=1; clock_clk=0; a3=clock_dat;
    clock_clk=1; clock_clk=0; a4=clock_dat;
    clock_clk=1; clock_clk=0; a5=clock_dat;
    clock_clk=1; clock_clk=0; a6=clock_dat;
    clock_clk=1; clock_clk=0; a7=clock_dat;
    return(ACC);
}
/********************************************************************************************
* 函数名称:read_clock()
* 功    能:读DS1302的数据
* 入口参数:DS1302的控制字 
* 出口参数:无
*********************************************************************************************/
unsigned char read_clock(unsigned char ord)
{
    unsigned char dd=0;
    clock_clk=0;
    clock_rst=0;
    clock_rst=1;
    clock_out(ord);
    dd=clock_in();//
    clock_rst=0;
    clock_clk=1;
    return(dd);
}

/********************************************************************************************
* 函数名称:write_clock()
* 功    能:对DS1302写控制时钟数据
* 入口参数:DS1302的控制字和数据 
* 出口参数:无
*********************************************************************************************/
void write_clock(unsigned char ord, unsigned char dd)
{
    clock_clk=0;//
    clock_rst=0;
    clock_rst=1;
    clock_out(ord);     //先写入控制码
    clock_out(dd);      //再写入数据
    clock_rst=0;
    clock_clk=1;
}
/********************************************************************************************
* 函数名称:Init_1302()
* 功    能:初始化DS1302
* 入口参数:无 
* 出口参数:无
*********************************************************************************************/

void Init_1302(void)
{
    write_clock(0x8e,0x00);//close_protect  0x8e--10001110   前一个参数为控制字,后一个为数据
    write_clock(0x8c,0x07);//year           0x8c--10001100
    write_clock(0x8a,0x04);//星期           0x8a--10001010
    write_clock(0x88,0x07);//month          0x88--10001000
    write_clock(0x86,0x31);//date           0x86--10000110
    write_clock(0x84,0x07);//hour           0x84--10000100
    write_clock(0x82,0x00);//minute         0x82--10000010
    write_clock(0x80,0x00);//second         0x80--10000000

    write_clock(0x90,0xa7);//supply_power   0x90--10010000   a5-10100101
    write_clock(0x8e,0x80);//open_protect   0x8e--10001110
}



从1302收发都是BCD码!!!

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -