📄 clock.c
字号:
#include "clock.h"
void SET_Time(void)
{CLOCK_START();
CLOCK_WBYTE(0XD0);
CLOCK_RACK();
CLOCK_WBYTE(0X0C);
CLOCK_RACK();
CLOCK_WBYTE(0X01);
CLOCK_RACK();
CLOCK_END();
CLOCK_WTIME(&SYS_S_Time[0]);
}
//
void SET_Ini(void)
{
CLOCK_START();
CLOCK_WBYTE(0XD0);
CLOCK_RACK();
CLOCK_WBYTE(0X0C);
CLOCK_RACK();
CLOCK_WBYTE(0X01);
CLOCK_RACK();
CLOCK_END();
}
/*void RtcBinToBCD()
{
uchar i;
g_aTimeBin[0]&=0x7F;
g_aTimeBin[1]&=0x7F;
g_aTimeBin[2]&=0x7F;
g_aTimeBin[3]&=0x3F;
g_aTimeBin[4]&=0x07;
g_aTimeBin[5]&=0x3F;
g_aTimeBin[6]&=0x1F;
g_aTimeBin[7]&=0xFF;
for(i=0;i<8;i++)
g_aTimeBuf[i] = byte_bintobcd(g_aTimeBin[i]);
}
uchar byte_bintobcd(uchar bin)
{
uchar ret;
bin &=0x7f;
bin %=100;
ret = bin/10;
ret <<=4;
ret |= bin % 10;
return ret;
}*/
void CLOCK_START(void)
{PORTD|=(1<<1); //清SDA=1
delay();
PORTD|=(1<<0);
delay();
PORTD&=~(1<<1);
delay();
PORTD&=~(1<<0);
delay();
}
void CLOCK_END(void)
{PORTD&=~(1<<1); //清SDA=0
delay();
PORTD|=(1<<0);
delay();
PORTD|=(1<<1);
delay();
}
void CLOCK_ACK(void)
{PORTD&=~(1<<1); //清SDA=0
delay();
PORTD|=(1<<0);
delay();
PORTD&=~(1<<0);
delay();
PORTD|=(1<<1);
}
void CLOCK_NACK(void)
{PORTD|=(1<<1); //清SDA=1
delay();
PORTD|=(1<<0);
delay();
PORTD&=~(1<<0);
delay();
PORTD|=(1<<1);
}
void CLOCK_WBYTE(uchar x)
{ uchar i;
for(i=0;i<8;i++)
{ if(x&0x80)
{ PORTD|=(1<<1);}
else
{ PORTD&=~(1<<1);}
delay();
PORTD|=(1<<0);
delay();
PORTD&=~(1<<0);
delay();
x=x<<1;
}
}
void SET_SQR(void)
{CLOCK_START();
CLOCK_WBYTE(0XD0);
CLOCK_RACK();
CLOCK_WBYTE(0X13);
CLOCK_RACK();
CLOCK_WBYTE(0Xa0);
CLOCK_RACK();
CLOCK_END();
CLOCK_START();
CLOCK_WBYTE(0XD0);
CLOCK_RACK();
CLOCK_WBYTE(0X0a);
CLOCK_RACK();
CLOCK_WBYTE(0X40);
CLOCK_RACK();
CLOCK_END();
}
/*void CLOCK_W(uchar add,uchar x)
{CLOCK_START();
CLOCK_WBYTE(0XD0);
CLOCK_RACK();
CLOCK_WBYTE(add);
CLOCK_RACK();
CLOCK_WBYTE(x);
CLOCK_RACK();
CLOCK_END();
}*/
void CLOCK_WTIME(uchar *p)
{uchar i;
CLOCK_START();
CLOCK_WBYTE(0XD0);
CLOCK_RACK();
CLOCK_WBYTE(0X00);
CLOCK_RACK();
for(i=0;i<8;i++)
{ CLOCK_WBYTE(*p);
CLOCK_ACK();
p++;
}
CLOCK_END();
}
void CLOCK_RACK(void)
{ DDRD&=~(1<<1);
delay();
PORTD|=(1<<0);
delay();
PORTD&=~(1<<0);
delay();
DDRD|=(1<<1);
PORTD|=(1<<1);
}
/*void CLOCK_INI(void)
{CLOCK_START();
CLOCK_WBYTE(0XD0);
CLOCK_RACK();
CLOCK_WBYTE(0X0C);
CLOCK_RACK();
CLOCK_WBYTE(0X01);
CLOCK_RACK();
CLOCK_END();
}*/
void CLOCK_RTIME(void)
{uchar i;
uchar *p1,*p2;
p1=&SYS_Time[6];
CLOCK_START();
CLOCK_WBYTE(0XD0);
CLOCK_RACK();
CLOCK_WBYTE(0x01);
CLOCK_RACK();
CLOCK_START();
CLOCK_WBYTE(0XD1);
CLOCK_RACK();
for(i=0;i<6;i++)
{*p1=CLOCK_RBYTE();
CLOCK_ACK();
p1--;
}
*p1=CLOCK_RBYTE();
CLOCK_NACK();
CLOCK_END();
p1=&SYS_Time[3];
p2=&SYS_Time[4];
for(i=0;i<3;i++)
{*p1=*p2;
p1++;
p2++;}
}
uchar CLOCK_RBYTE(void)
{uchar i,x;
x=0;
DDRD&=~(1<<1);
delay();
for(i=0;i<8;i++)
{ x=x<<1;
PORTD|=(1<<0);
delay();
if(PIND&0X02)
{x=x|0x01;}
else
{x=x&0xfe;}
PORTD&=~(1<<0);
delay();
}
DDRD|=(1<<1);
PORTD|=(1<<1);
return x;
}
/*void CLOCK_R(uchar add,uchar t,uchar *p)
{CLOCK_START();
CLOCK_WBYTE(0XD0);
CLOCK_RACK();
CLOCK_WBYTE(add);
CLOCK_RACK();
CLOCK_START();
CLOCK_WBYTE(0XD1);
CLOCK_RACK();
*p=CLOCK_RBYTE();
CLOCK_ACK();
CLOCK_END();
} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -