📄 text1.c
字号:
void ds1302_write(unsigned char ucdat) //写入动作
{
unsigned char i;
for(i=8;i>0;i--){
DS1302_IO = (bit)(ucdat & 0x01);
DS1302_SCLK = 1;
_nop_();
DS1302_SCLK = 0;
ucdat >>= 1; //重要 !!!送数据出去时,移为动作要在后面!!!
}
}
unsigned char ds1302_read(void) //读出动作
{
unsigned char i;
unsigned char ucdat=0;
for(i=8;i>0;i--)
{
DS1302_IO=1;
ucdat >>= 1; // 读入数据时,移为动作要在前面!!!!!!!!
if(DS1302_IO)ucdat|=0x80;
DS1302_SCLK = 1;
_nop_();
DS1302_SCLK = 0;
}
return(ucdat);
}
void ds1302_write_One(unsigned char address, unsigned char ucdat) //向特定地址写入数据
{ //每一次要写之前要去掉写保护 ,写完要恢复保护
DS1302_RST = 0;
DS1302_SCLK = 0;
DS1302_RST = 1;
ds1302_write(address);
ds1302_write(ucdat);
DS1302_SCLK = 1;
DS1302_RST =0;
return;
}
unsigned char ds1302_read_One(unsigned char address) //向特定地址读出数据
{
unsigned char ucdat;
DS1302_RST=0;
DS1302_SCLK=0;
DS1302_RST=1;
ds1302_write(address);
ucdat = ds1302_read();
DS1302_SCLK = 1;
DS1302_RST =0;
return(ucdat);
}
void ds1302_write_str(uchar *Data,uchar size,uchar RAM_DS1302) //RAM_DS1302为0XFE时,写入RAM;为0XBE时写入DS1302
{ uchar i;
ds1302_write_One(0x8e,0); //去掉写保护!!!!!!!!!!!!
DS1302_RST=0;DS1302_SCLK=0;DS1302_RST=1;
ds1302_write(RAM_DS1302);
for(i=0;i<size;i++) // 当写入的时DS1302的时间是,一定要一次性写如8字节 即SIZE为8!!!!
{ds1302_write( *(Data+i) ); }
DS1302_RST=0; DS1302_SCLK=1;
ds1302_write_One(0x8e,0x80); //恢复写保护!!!!
}
void ds1302_read_str(uchar *Data,uchar size,uchar RAM_DS1302) //RAM_DS1302为0XFF时读出RAM;为0XBF时读出DS1302
{ uchar i ; //秒分时日月周年 7个;0~30 31个内存 在这里把30作为密码存放!!!!
DS1302_RST=0;DS1302_SCLK=0;DS1302_RST=1;
ds1302_write(RAM_DS1302);
for(i=0;i<size;i++)
{*(Data+i)= ds1302_read( ); }
DS1302_RST=0; DS1302_SCLK=1;
}
void Init_ds1302() //当写完了数据后,要恢复写保护 ds1302_write_One(0x8e,0x80)
{ uchar i;
ds1302_write_One(0x8e,0); //去掉写保护!!!!!!!
ds1302_write_One(0x90,0xa5); //启用一个二极管 启用2K的电阻 进行充电
ds1302_write_One(0x8e,0x80); //恢复写保护!!!!!
ds1302_write_One(0x80,0x80); //初始化后 经过试验不知到为什么不能马上写入一连串的数据或者读出来
i=ds1302_read_One(0x81); //要先择行一次 单字节的写入和读出 之后才能正常的进行多字节的读/写操作 !!!!!!!
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -