📄 clock.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 + -