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

📄 clock.c

📁 一款车载DVD的车机源程序(正在生成中的哦)
💻 C
字号:
/***************************************************************************
Project  :  Car two ting dvd System
Compiler :  ST7 HiCross C (HiWARE)
Module   :  autos.c 
Version  :  V 1.0
Created  :  24 11, 2005
Author   :  tomi / SA
Description
         -  Main Program of the car two ting dvd System.  
Modified
		 - tomi
***************************************************************************/
#include "Clock.h"
#include "Sys_config.h"
#include "i2c_drv.h"
#include "System_operation.h"

unsigned char g_clock_adjust=CLOCK_ADJUST_IN_MINUTE;
unsigned char TimeTypeFlag=TIME_TYPE_24;
unsigned char Time_hour=0;
unsigned char Time_Minute=0;

void PCF8563_Init(void);
void Read_time(void);
void Write_time(unsigned char time);
void Clock_adjust_up_control(void);
void Clock_adjust_down_control(void);

void PCF8563_Init(void)
{	
	I2CWriteByte(PCF8563_ADDR,0x00,0);	//control/status register1, STOP=0
	I2CWriteByte(PCF8563_ADDR,0x00,8);	//control/status register2, TI/TP=TF=AIE=TIE=0, AF=1?
}


void Read_time(void)
{
	Time_hour = I2CReadByte(PCF8563_ADDR,0x04);
	Time_Minute = I2CReadByte(PCF8563_ADDR,0x03);
}

void Write_time(unsigned char time)
{
	unsigned char Temp_data;
	//write time to PCF8563
	Temp_data=time/10;
	Temp_data<<=4;
	Temp_data+=time%10;
	
	switch(g_clock_adjust)
		{
		case CLOCK_ADJUST_IN_HOUR:
			I2CWriteByte(PCF8563_ADDR, PCF8563_HOUR_SUB, Temp_data);
			break;

		case CLOCK_ADJUST_IN_MINUTE:
			I2CWriteByte(PCF8563_ADDR, PCF8563_MIN_SUB, Temp_data);
			break;

		default:
			break;
		}
}

void Clock_adjust_up_control(void)
{
	unsigned char time;
	Read_time();
	
	switch(g_clock_adjust)
		{
		case CLOCK_ADJUST_IN_HOUR:
		//set hour
		time=(Time_hour>>4)&0x03;
		time=time*10;
		time+=Time_hour&0x0f;
		if(time>=23)
			time=0;
		else
			time++;
		break;

		case CLOCK_ADJUST_IN_MINUTE:
		//set minute
		time=(Time_Minute>>4)&0x07;
		time=time*10;
		time+=Time_Minute&0x0f;
		if(time>=59)
			time=0;
		else
			time++;
		break;

		default:
			return;		//error, don't write to PCF8563
		}
	
	Write_time(time);
}

void Clock_adjust_down_control(void)
{
	unsigned char time;
	Read_time();

	switch(g_clock_adjust)
		{
		case CLOCK_ADJUST_IN_HOUR:
		//set hour
		time=(Time_hour>>4)&0x03;
		time=time*10;
		time+=Time_hour&0x0f;
		if(time<=0)
			time=23;
		else
			time--;
		break;

		case CLOCK_ADJUST_IN_MINUTE:
		//set minute
		time=(Time_Minute>>4)&0x07;
		time=time*10;
		time+=Time_Minute&0x0f;
		if(time<=0)
			time=59;
		else
			time--;
		break;

		default:
			return;		//errror, don't write to PCF8563
		}
	
	Write_time(time);
}























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -