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

📄 ds1302.c

📁 日历芯片DS1302的在KEIL下的驱动
💻 C
字号:
#include<reg52.h>

#define uchar unsigned char

sbit    DS_CLK=P2^0;
sbit    DS_DIO=P3^2;
sbit    DS_CS=P3^3;

extern uchar idata loc[40];           //用于显示的字符窜

//DS1302子程序
void ic_ds_write(uchar i,j){uchar k;
        DS_CLK=0;DS_CS=1;
        for(k=0;k<8;k++){DS_DIO=(bit)(i&0x01);DS_CLK=1;DS_CLK=0;i=i>>1;};
        for(k=0;k<8;k++){DS_DIO=(bit)(j&0x01);DS_CLK=1;DS_CLK=0;j=j>>1;};
        DS_CS=0;
}

uchar ic_ds_read(uchar i){uchar j,k;
                DS_CLK=0;DS_CS=1;
                for(k=0;k<8;k++){DS_DIO=(bit)(i&0x01);DS_CLK=1;DS_CLK=0;i=i>>1;};
                j=0;for(k=0;k<8;k++){j=j>>1;if(DS_DIO){j|=0x80;};DS_CLK=1;DS_CLK=0;};
                DS_CS=0;
                return(j);
}

void ds_init(){
	uchar i;
        ic_ds_write(0x8e,0x00);
        i=ic_ds_read(0x81);
        i&=0x7f;
        ic_ds_write(0x80,i);
        ic_ds_write(0x90,0xa6);
        ic_ds_write(0x8e,0x80);
}

void ds_write_date(){
        ic_ds_write(0x8e,0x00);
        ic_ds_write(0x86,loc[13]);ic_ds_write(0x88,loc[14]);ic_ds_write(0x8c,loc[15]);//日月年
        ic_ds_write(0x8e,0x80);
}

void ds_write_time(){
        ic_ds_write(0x8e,0x00);
        ic_ds_write(0x80,loc[21]);ic_ds_write(0x82,loc[22]);ic_ds_write(0x84,loc[23]);//秒分时
        ic_ds_write(0x8e,0x80);
}


void ds_read_date(){
        loc[13]=ic_ds_read(0x87);loc[14]=ic_ds_read(0x89);loc[15]=ic_ds_read(0x8d);//日月年
}

void ds_read_time(){
        loc[21]=ic_ds_read(0x81);loc[22]=ic_ds_read(0x83);loc[23]=ic_ds_read(0x85);//秒分时
}

⌨️ 快捷键说明

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