📄 show_and_set_time.c
字号:
//========================================================
// 文件名称: Show_And_Set_Time.c
// 功能描述: 显示与设置时间
// 维护记录: 2005-12-07 v1.0
//========================================================
#include "spce061a.h"
#include "dig.h"
#include "key.h"
unsigned int uiYear_H = 2; //初始化时间2005年1月1日
unsigned int uiYear_MH = 0;
unsigned int uiYear_ML = 0;
unsigned int uiYear_L = 5;
unsigned int uiMonth_H = 0;
unsigned int uiMonth_L = 1;
unsigned int uiDay_H = 0;
unsigned int uiDay_L = 1;
unsigned int uiHour_H = 0; //00时00分00秒
unsigned int uiHour_L = 0;
unsigned int uiMinite_H = 0;
unsigned int uiMinite_L = 0;
unsigned int g_uiSecond_half = 0;
//数码管显示的字模
const unsigned int Data[11] = {0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f,0x0000};
extern unsigned int uiSetflag;
extern unsigned int g_Light;
extern unsigned int uiDisp;
//========================================================
// 语法格式: void Time_Init(void)
// 实现功能: 初始化IOB2口, 打开2Hz中断
// 参数: 无
// 返回值: 无
//========================================================
void Time_Init(void)
{
unsigned int uiTemp;
uiTemp = *P_IOB_Dir; //设置IOB2为高电平输出
uiTemp |= 0x0004;
*P_IOB_Dir = uiTemp;
uiTemp = *P_IOB_Attrib;
uiTemp |= 0x0004;
*P_IOB_Attrib = uiTemp;
uiTemp = *P_IOB_Data;
uiTemp |= 0x0004;
*P_IOB_Data = uiTemp;
uiTemp = *P_INT_Ctrl_New; //开2Hz、4Hz中断
uiTemp |= C_IRQ5_2Hz;
uiTemp |= C_IRQ5_4Hz;
*P_INT_Ctrl_New = uiTemp;
}
//========================================================
// 语法格式: void Set_Time(void)
// 实现功能: 设置时间函数
// 参数: 无
// 返回值: 无
//========================================================
void Set_Time(void)
{
unsigned int uiKey;
unsigned int uiTemp;
while(1)
{
uiKey = Key_Get();
*P_Watchdog_Clear = 0x0001;
//调整分钟
if(uiSetflag == 1)
{
if(g_Light == 1)
{
DIG_Set(3,Data[uiHour_H]);
DIG_Set(4,Data[uiHour_L]);
DIG_Set(5,Data[uiMinite_H]);
DIG_Set(6,Data[uiMinite_L]);
}
if(g_Light == 0)
{
DIG_Set(3,Data[uiHour_H]);
DIG_Set(4,Data[uiHour_L]);
DIG_Set(5,0);
DIG_Set(6,0);
}
switch(uiKey)
{
case KEY6:
uiSetflag = 2;
uiKey = 0;
break;
case KEY7:
uiMinite_L++;
if(uiMinite_L == 10)
{
uiMinite_L = 0;
uiMinite_H++;
if(uiMinite_H == 6)
uiMinite_H = 0;
}
break;
case KEY8:
uiMinite_L--;
if(uiMinite_L == 0xffff)
{
uiMinite_L = 9;
uiMinite_H--;
if(uiMinite_H == 0xffff)
uiMinite_H = 5;
}
break;
default:
break;
}
}
//调整小时
if(uiSetflag == 2)
{
if(g_Light == 1)
{
DIG_Set(3,Data[uiHour_H]);
DIG_Set(4,Data[uiHour_L]);
DIG_Set(5,Data[uiMinite_H]);
DIG_Set(6,Data[uiMinite_L]);
}
if(g_Light == 0)
{
DIG_Set(3,0);
DIG_Set(4,0);
DIG_Set(5,Data[uiMinite_H]);
DIG_Set(6,Data[uiMinite_L]);
}
switch(uiKey)
{
case KEY6:
uiSetflag = 3;
uiKey = 0;
break;
case KEY7:
uiHour_L++;
if(uiHour_L == 10)
{
uiHour_L = 0;
uiHour_H++;
if((uiHour_H == 2)&&(uiHour_L ==4))
{
uiHour_H = 0;
uiHour_L = 0;
}
}
break;
case KEY8:
if((uiHour_H == 0)&&(uiHour_L == 0))
{
uiHour_H = 2;
uiHour_L = 3;
}
else
{
uiHour_L--;
if(uiHour_L == 0xffff)
{
uiHour_L = 9;
uiHour_H--;
if(uiHour_H == 0xffff)
uiHour_H = 0;
}
}
break;
default:
break;
}
}
//调整日
if(uiSetflag == 3)
{
uiTemp = *P_INT_Ctrl_New; //关闭2Hz中断,不显示秒针
uiTemp &= 0xfffb;
*P_INT_Ctrl_New = uiTemp;
uiTemp = *P_IOB_Buffer;
uiTemp &= 0xfffb;
*P_IOB_Data = uiTemp;
if(g_Light == 1)
{
DIG_Set(1,Data[uiMonth_H]);
DIG_Set(2,Data[uiMonth_L]);
DIG_Set(3,0x0077);
DIG_Set(4,Data[uiDay_H]);
DIG_Set(5,Data[uiDay_L]);
DIG_Set(6,0x007f);
}
if(g_Light == 0)
{
DIG_Set(1,Data[uiMonth_H]);
DIG_Set(2,Data[uiMonth_L]);
DIG_Set(3,0x0077);
DIG_Set(4,0);
DIG_Set(5,0);
DIG_Set(6,0x007f);
}
switch(uiKey)
{
case KEY6:
uiSetflag = 4;
uiKey = 0;
break;
case KEY7:
uiDay_L++;
if(uiDay_L == 10)
{
uiDay_L = 0;
uiDay_H++;
}
if((uiDay_H == 3)&&(uiDay_L == 2))
{
uiDay_H = 0;
uiDay_L = 1;
}
break;
case KEY8:
uiDay_L--;
if(uiDay_L == 0xffff)
{
uiDay_L = 9;
uiDay_H--;
if(uiDay_H == 0xffff)
uiDay_H = 0;
}
if((uiDay_H == 0)&&(uiDay_L == 0))
{
uiDay_H = 3;
uiDay_L = 1;
}
break;
default:
break;
}
}
//调整月
if(uiSetflag == 4)
{
if(g_Light == 1)
{
DIG_Set(1,Data[uiMonth_H]);
DIG_Set(2,Data[uiMonth_L]);
DIG_Set(3,0x0077);
DIG_Set(4,Data[uiDay_H]);
DIG_Set(5,Data[uiDay_L]);
DIG_Set(6,0x007f);
}
if(g_Light == 0)
{
DIG_Set(1,0);
DIG_Set(2,0);
DIG_Set(3,0x0077);
DIG_Set(4,Data[uiDay_H]);
DIG_Set(5,Data[uiDay_L]);
DIG_Set(6,0x007f);
}
switch(uiKey)
{
case KEY6:
uiSetflag = 5;
uiKey = 0;
break;
case KEY7:
uiMonth_L++;
if(uiMonth_L == 10)
{
uiMonth_L = 0;
uiMonth_H++;
}
if((uiMonth_H == 1)&&(uiMonth_L == 3))
{
uiMonth_H = 0;
uiMonth_L = 1;
}
break;
case KEY8:
uiMonth_L--;
if(uiMonth_L == 0xffff)
{
uiMonth_L = 9;
uiMonth_H--;
if(uiMonth_H == 0xffff)
uiMonth_H = 0;
}
if((uiMonth_H == 0)&&(uiMonth_L == 0))
{
uiMonth_H = 1;
uiMonth_L = 2;
}
break;
default:
break;
}
}
//调整年
if(uiSetflag == 5)
{
if(g_Light == 1)
{
DIG_Set(1,0x0040);
DIG_Set(2,Data[uiYear_H]);
DIG_Set(3,Data[uiYear_MH]);
DIG_Set(4,Data[uiYear_ML]);
DIG_Set(5,Data[uiYear_L]);
DIG_Set(6,0x0040);
}
if(g_Light == 0)
{
DIG_Set(1,0x0040);
DIG_Set(2,0);
DIG_Set(3,0);
DIG_Set(4,0);
DIG_Set(5,0);
DIG_Set(6,0x0040);
}
switch(uiKey)
{
case KEY6:
uiSetflag = 7;
uiKey = 0;
break;
case KEY7:
uiYear_L++;
if(uiYear_L == 10)
{
uiYear_L = 0;
uiYear_ML++;
}
if(uiYear_ML == 10)
{
uiYear_ML = 0;
uiYear_MH++;
}
if(uiYear_MH == 10)
{
uiYear_MH = 0;
uiYear_H++;
}
if(uiYear_H ==10)
{
uiYear_H = 0;
uiYear_MH = 0;
uiYear_ML = 0;
uiYear_L = 0;
}
break;
case KEY8:
uiYear_L--;
if(uiYear_L == 0xffff)
{
uiYear_L = 9;
uiYear_ML--;
if(uiYear_ML == 0xffff)
{
uiYear_ML = 9;
uiYear_MH--;
if(uiYear_MH == 0xffff)
{
uiYear_MH = 9;
uiYear_H--;
if(uiYear_H == 0xffff)
{
uiYear_H = 9;
}
}
}
}
if((uiYear_H == 0)&&(uiYear_MH == 0)&&(uiYear_ML == 0)&&(uiYear_L == 0))
{
uiYear_H = 9;
uiYear_MH = 9;
uiYear_ML = 9;
uiYear_L = 9;
}
break;
default:
break;
}
}
if(uiSetflag == 7) //退出设置模式,重新初始化uiSetflag
{
uiSetflag = 8;
uiKey = 0;
uiTemp = *P_INT_Ctrl_New; //关闭2Hz中断,不显示秒针
uiTemp |= C_IRQ5_2Hz;
*P_INT_Ctrl_New = uiTemp;
uiDisp = 0;
}
if(uiSetflag == 8)
{
uiSetflag = 0;
break;
}
}
}
//========================================================
// 语法格式: void Time_Run(void)
// 实现功能: 更新时间
// 参数: 无
// 返回值: 无
//========================================================
void Time_Run(void)
{
//更新时分
if(g_uiSecond_half == 120)
{
g_uiSecond_half = 0;
uiMinite_L++;
}
if(uiMinite_L == 10)
{
uiMinite_L = 0;
uiMinite_H++;
}
if(uiMinite_H == 6)
{
uiMinite_H = 0;
uiHour_L++;
}
if((uiHour_H == 2)&&(uiHour_L == 4))
{
uiHour_H = 0;
uiHour_L = 0;
uiDay_L++;
}
else
{
if(uiHour_L == 10)
{
uiHour_L = 0;
uiHour_H++;
}
}
//变更日期
if((uiDay_H == 3)&&(uiDay_L == 2))
{
uiDay_H = 0;
uiDay_L = 1;
uiMonth_L++;
}
else
{
if(uiDay_L == 10)
{
uiDay_L = 0;
uiDay_H++;
}
}
//变更月份
if((uiMonth_H == 1)&&(uiMonth_L == 3))
{
uiMonth_H = 0;
uiMonth_L = 1;
uiYear_L++;
}
else
{
if(uiMonth_L == 10)
{
uiMonth_L = 0;
uiMonth_H++;
}
}
//变更年份
if(uiYear_L == 10)
{
uiYear_L = 0;
uiYear_ML++;
}
if(uiYear_ML == 10)
{
uiYear_ML = 0;
uiYear_MH++;
}
if(uiYear_MH == 10)
{
uiYear_MH = 0;
uiYear_H++;
}
if(uiYear_H == 10)
{
uiYear_H = 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -