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

📄 clock.c

📁 Avr Atmeg128汽车行驶记录仪 带有USB驱动 c语言
💻 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 + -