📄 ds1302.c
字号:
#include <io8515v.h>
#include <macros.h>
#include <162-1302.h>
/************************************************
延时程序
************************************************/
void delay(uchar n)
{
uchar a;
for(a=0;a<n;a++)
;
}
/****************************************************
写一个字节
****************************************************/
void write_data(uchar addr,uchar data)
{
unsigned char i,temp;
T_DDR|=T_IO;
T_PORT&=~T_RST;
T_PORT&=~T_CLK;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
T_PORT|=T_RST; //时钟信号低时拉高RST初始化
temp=addr;
for(i=0;i<8;i++)
{
if(temp&(1<<i))
T_PORT |=T_IO ;
else
T_PORT &=~T_IO ;
asm("nop");
asm("nop");
T_PORT |=T_CLK; //时钟上升沿写入数据
asm("nop");
T_PORT &=~T_CLK; //时钟拉低电平
}
temp=data;
for(i=0;i<8;i++)
{
if(temp&(1<<i))
T_PORT |=T_IO ;
else
T_PORT &=~T_IO ;
asm("nop");
asm("nop");
T_PORT |=T_CLK; //时钟上升沿写入数据
asm("nop");
T_PORT &=~T_CLK; //时钟拉低电平
}
T_PORT&=~T_RST; //禁止DS1302
}
/***************************************************
读一个字节
***************************************************/
uchar read_data(uchar addr)
{
uchar i,temp,k;
temp=0;
T_DDR|=T_IO;
T_PORT&=~T_RST;
T_PORT&=~T_CLK;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
T_PORT|=T_RST; //时钟信号低时拉高RST初始化
temp=addr;
for(i=0;i<8;i++)
{
if(temp&(1<<i))
T_PORT |=T_IO ;
else
T_PORT &=~T_IO ;
asm("nop");
asm("nop");
T_PORT |=T_CLK; //时钟上升沿写入数据
T_PORT &=~T_CLK; //时钟拉低电平
}
T_DDR&=~T_IO;
for(i=0;i<8;i++)
{
k=(T_PIN&T_IO);
if(k==T_IO)
temp|=(1<<i);
else
temp&=~(1<<i);
asm("nop");
asm("nop");
T_PORT|=T_CLK; //上升沿读出数据
T_PORT &=~T_CLK; //时钟电平拉低
}
T_DDR|=T_IO;
T_PORT&=~T_CLK;
T_PORT&=~T_RST; //禁止DS1302
return(temp);
}
//1302初始化
void init_1302()
{
write_data(0x8e,0x00); //关闭寄存器写保护
write_data(0x90,0x00); //写充电寄存器
write_data(0x80,0x00); //秒寄存器停止位置0,时钟启动,初值设为0
}
void init_time(uchar sec,uchar min,uchar hour,uchar day,uchar month,uchar d)
{
write_data(0x80,sec);
write_data(0x82,min);
write_data(0x84,hour);
write_data(0x86,day);
write_data(0x88,month);
write_data(0x8a,d);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -