📄 万年历.c
字号:
/********************************************************************************************
*
* 以下是通过按键控制年,月,日,时,分,秒,星期的显示和设置
*
*********************************************************************************************/
void nian()//显示和设置年
{
if(keys==10) //键值为10 表示年份
{
while(1)
{
W1302( 0x8e, 0x00); //打开写保护
da=R1302(0x8d);
a[0]=2;
a[1]=0;
a[2]=(da&0xf0)/16;
a[3]=(da&0x0f); //将键值记录
i=4;
xianshi(a,i);
keys=jpdata();
if(keys==14) //设置年份
{
for(i=2;i<4;)
{
if(jpdata()<10)
{
keys=jpdata();
a[i]=keys;
i++;
while(1)
{
if(jpdata()==16)
break;
xianshi(a,i);
}
}
xianshi(a,i);
}
W1302( 0x8e, 0x00);
W1302(0x8c,(a[2]*16)|a[3]);
}
if(keys==11) {yue_ri();}
if(keys==12) {shi_fen();}
if(keys==13) {miao();}
if(keys==15) {xingqi();}
} //将键值的有效位数记录
}
}
void yue_ri()//显示和设置月/日
{
if(keys==11) // 表示月/日
{
while(1)
{
W1302( 0x8e, 0x00);
da=R1302(0x89); //读月
a[0]=(da&0xf0)>>4;
a[1]=(da&0x0f);
W1302( 0x8e, 0x00);
da=R1302(0x87); //读日
a[2]=(da&0xf0)>>4;
a[3]=(da&0x0f); //将键值记录
i=4;
xianshi(a,i);
keys=jpdata();
if(keys==14) //设置月/日
{
for(i=0;i<4;)
{
if(jpdata()<10)
{
keys=jpdata();
a[i]=keys;
i++;
while(1)
{
if(jpdata()==16)
break;
xianshi(a,i);
}
}
xianshi(a,i);
}
W1302( 0x8e, 0x00); //打开写保护
W1302(0x88,(a[0]*16)|a[1]); //写入月
W1302(0x86,(a[2]*16)|a[3]); //写入日
}
if(keys==10) {nian();}
if(keys==12) {shi_fen();}
if(keys==13) {miao();}
if(keys==15) {xingqi();}
}
}
}
void shi_fen()//显示和设置时和分
{
if(keys==12) //时/分 其它同上
{
while(1)
{
W1302( 0x8e, 0x00);
da=R1302(0x85);
a[0]=(da&0xf0)>>4;
a[1]=(da&0x0f);
W1302( 0x8e, 0x00);
da=R1302(0x83);
a[2]=(da&0xf0)>>4;
a[3]=(da&0x0f); //将键值记录
i=4;
xianshi(a,i);
keys=jpdata();
if(keys==11) {yue_ri();}
if(keys==10) {nan();}
if(keys==13) {miao();}
if(keys==15) {xingqi();}
if(keys==14)
{
for(i=0;i<4;)
{
if(jpdata()<10)
{
keys=jpdata();
a[i]=keys;
i++;
while(1)
{
if(jpdata()==16)
break;
xianshi(a,i);
}
}
xianshi(a,i);
}
W1302( 0x8e, 0x00);
W1302(0x84,(a[0]*16)|a[1]);
W1302(0x82,(a[2]*16)|a[3]);
}
} //将键值的有效位数记录
}
}
void miao()//显示和设置秒
{
if(keys==13) //秒 //键值小于10,为年输入
{
while(1)
{
W1302( 0x8e, 0x00);
da=R1302(0x81);
a[0]=10;//前两位不显示
a[1]=10;
a[2]=(da&0xf0)>>4;
a[3]=(da&0x0f); //将键值记录
i=4;
xianshi(a,i);
keys=jpdata();
if(keys==11) {yue_ri();}
if(keys==12) {shi_fen();}
if(keys==10) {nian();}
if(keys==15) {xingqi();}
if(keys==14)//设置
{
for(i=2;i<4;)
{
if(jpdata()<10)
{
keys=jpdata();
a[i]=keys;
i++;
while(1)
{
if(jpdata()==16)
break;
xianshi(a,i);
}
}
xianshi(a,i);
}
W1302( 0x8e, 0x00);
W1302(0x80,(a[2]*16)|a[3]);
}
} //将键值的有效位数记录
}
}
void xingqi()//显示和设置星期
{
if(keys==15)
{
while(1)
{
W1302( 0x8e, 0x00);
da=R1302(0x8b);
a[0]=10;//前三位不显示
a[1]=10;
a[2]=10;
//a[2]=(da&0xf0)>>4;
a[3]=(da&0x0f);
i=4;
xianshi(a,i);
keys=jpdata();
if(keys==11) {yue_ri();}
if(keys==12) {shi_fen();}
if(keys==13) {miao();}
if(keys==10) {nian();}
if(keys==14) //设置
{
for(i=3;i<4;)
{
if(jpdata()<10)
{
keys=jpdata();
a[i]=keys;
i++;
while(1)
{
if(jpdata()==16)
break;
xianshi(a,i);
}
}
xianshi(a,i);
}
W1302( 0x8e, 0x00);
W1302(0x8a,a[3]);
}
} //将键值的有效位数记录
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -