📄 workspace.c
字号:
void WORK0(void)
{
if(K3)
{
DSFL = 0X04; //转时钟设定模块
STA = 0X01;
}
else
{
T5SL++; //5S定时
if(T5SL>250)
{
T5SL = 0;
T5SH++;
if(T5SH>4)
{
T5SH = 0;
DIS = 0;
}
}
switch(DIS)
{
case 0: //显示年份
DSBUF1 = YEARH;
DSBUF2 = YEARL;
T1S++;
if(T1S>250)
{
T1S = 0;
DIS = 1;
}
break;
case 1: //显示月、日
DSBUF1 = MON;
DSBUF2 = DAY;
T1S++;
if(T1S>250)
{
T1S = 0;
DIS = 2;
}
break;
default: //显示时、分
DSBUF1 = HOUR;
DSBUF2 = MIN;
break;
}
STA = 0X00;
}
}
//时钟设定模块
void WORK1(void)
{
uchar temp,qw,bw,sw,gw,xx;
switch(DW)
{
case 0:
DSBUF1 = YEARH;
DSBUF2 = YEARL;
break;
case 1:
DSBUF1 = MON;
DSBUF2 = DAY;
break;
default:
DSBUF1 = HOUR;
DSBUF2 = MIN;
break;
}
if(DSFL&0X02) //赋值变量送显缓,并取出闪烁位的值
{
DSB_TEMP = DSBUF2;
}
else
{
DSB_TEMP = DSBUF1;
}
if(DSFL&0X01)
{
temp = DSB_TEMP&0X0F;
}
else
{
temp = (DSB_TEMP&0XF0)>>4;
}
if(temp ==0)
{
K2 = 0; //闪烁位值0则清K2键
}
else if(temp ==9)
{
K1 = 0; //闪烁位值0则清K1键
}
switch(DW)
{
case 0: //年挡位设置
ADD_DEL();
break;
/*****************月、日挡位设置*******************/
case 1:
xx = DSFL&0X03;
if(xx==0) //千位闪?
{
qw = (DSBUF1&0XF0)>>4;
if(qw==1) //千位上限为1
{
K1 = 0;
}
}
else if(xx==1) //百位闪?
{
qw = (DSBUF1&0XF0)>>4;
bw = (DSBUF1&0X0F);
if((qw==1)&(bw>=2)) //千位为1时,百位上限为2
{
K1 = 0;
}
}
else if(xx==2) //十位闪?
{
sw = (DSBUF2&0XF0)>>4;
if((MON==0X02)&(sw>=2)) //2月份(只有28天),十位上限为2
{
K1 = 0;
}
else
{
if(sw>=3) //其它,十位上限为3
{
K1 = 0;
}
}
}
else //个位闪
{
sw = (DSBUF2&0XF0)>>4;
gw = DSBUF2&0X0F;
if((MON==0X02)&(sw==2)&(gw>=8)) //2月2X时,个位上限为8
{
K1 = 0;
}
else if(((MON<8)&(MON^0==1))||((MON>=8)&(MON^0==0))) //为1、3、5、7、8、10、12月份31天
{
if((sw>=3)&(gw>=1))
{
K1 = 0;
}
}
else //4、6、9、11
{
if(sw>=3)
{
K1 = 0;
}
}
}
ADD_DEL(); //调用加减1子程序
break;
/*****************时、分挡位设置******************/
default:
xx = DSFL&0X03;
if(xx==0) //千位闪?
{
qw = (DSBUF1&0XF0)>>4;
if(qw==2) //千位上限为2
{
K1 = 0;
}
}
else if(xx==1) //百位闪?
{
qw = (DSBUF1&0XF0)>>4;
bw = DSBUF1&0X0F;
if((qw==2)&bw==3) //千位为2时,百位上限为3
{
K1 = 0;
}
}
else if(xx==2) //十位闪?
{
sw = (DSBUF2&0XF0)>>4;
if(sw==5) //十位上限为5
{
K1 = 0;
}
}
ADD_DEL(); //个位闪&调用加减1子程序
break;
}
if(K3)
{
DSFL++; //有K3键则闪烁位移位
if(DSFL&0X08) //赋值完?
{
switch(DW)
{
case 0:
YEARH = DSBUF1;
YEARL = DSBUF2;
DW++;
DSFL = 0X04;
STA = 0X01;
break;
case 1:
MON = DSBUF1;
DAY = DSBUF2;
DW++;
DSFL = 0X04;
STA = 0X01;
break;
default:
HOUR = DSBUF1;
MIN = DSBUF2;
DW = 0;
DSFL = 0X00;
STA = 0X00;
break;
}
}
}
else
{
STA = 0X01; //保持时钟设定设置
switch(DW)
{
case 0:
YEARH = DSBUF1;
YEARL = DSBUF2;
break;
case 1:
MON = DSBUF1;
DAY = DSBUF2;
break;
default:
HOUR = DSBUF1;
MIN = DSBUF2;
break;
}
}
}
/************加减1*****************/
void ADD_DEL(void)
{
if(K1)
{
if(DSFL&0X01) //有K1键则闪烁位加1
{
DSB_TEMP += 0X01;
}
else
{
DSB_TEMP += 0X10;
}
}
if(K2)
{
if(DSFL&0X01) //有K2键则闪烁位减1
{
DSB_TEMP -= 0X01;
}
else
{
DSB_TEMP -= 0X10;
}
}
if(DSFL&0X02) //改变数据后送回显缓
{
DSBUF2 = DSB_TEMP;
}
else
{
DSBUF1 = DSB_TEMP;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -