📄 ds1302.c
字号:
#include <reg51.h>
#include <intrins.h>
sbit clock_Rst = P3 ^ 4;
sbit clock_dat = P3 ^ 3;
sbit clock_clk = P3 ^ 2;
void clock_out(unsigned char dd);
void write_clock(unsigned char ord,unsigned char dd);
unsigned char clock_in(void);
unsigned char read_clock(unsigned char ord);
/*===============================================================================/
*函数名称:clock_out
*入口参数:dd
*函数功能:写入指令或数据
/===============================================================================*/
void clock_out(unsigned char dd)
{
unsigned char i,temp;
temp=dd;
for(i=8;i>0;i--)
{
// if((temp&0x01)==1)
// clock_dat=1;
// else clock_dat=0;
clock_dat =( temp & 0x01);
clock_clk=1; _nop_();
clock_clk=0;
temp=temp>>1;
}
}
/*===============================================================================/
*函数名称:write_clock
*入口参数:命令ord,数据dd
*函数功能:时钟调整
/================================================================================*/
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_in
*返回 值:ACC
*函数功能:输出数据
/=================================================================================*/
unsigned char clock_in(void)
{
unsigned char i,temp;
temp=0x00;
for(i=8;i>0;i--)
{
temp=temp>>1;
if(clock_dat==1) temp = temp | 0x80;
clock_clk=1;
clock_clk=0;
}
// if(clock_dat==1) temp|=0x80;
return(temp);
}
/*****************************************************************************/
//DS1302读数据(底层协议)
unsigned char read_clock(unsigned char ord)
{
unsigned char dd = 0;
clock_clk=0;
clock_Rst=0; _nop_();
clock_Rst=1;
clock_out(ord);
dd=clock_in();
// clock_clk=1;
clock_Rst=0;
// k=dd>>4;
// dd=dd&0x0f;
// dd=dd+k*10;
return (dd);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -