各位师傅您们好,我用STC15W404AS和TM1650编程两路延时程序,不能存储两个时间,哪位师傅帮我看看,怎样修改,非常感谢。
if(key_timeto)//如果按键扫描时间到,此变量在定时器中会被每隔60ms置1一次
{
key_L = key;
key_timeto = 0; //清0
key = Scan_Key();//读按键
//第一个按键按下
if(key == 0x44) //此键值和数据手册上对应
{
if(key_ok==0) //按键按下
{
key_ok = 1;
mode = (mode+1)%2;//切换模式
}
}
//第二个按键按下
else if(key == 0x4c)
{ if(mode == 0)//模式0为设置模式
{
if(time2<999)
time2 = (time2+1);//按此键加时间
}
if(mode == 1)//模式1为设置模式
{
if(time1<999)
time1 = (time1+1);//按此键加时间
}
timea=time1;
IapEraseSector(0);//保持改变后的时间值
IapProgramByte(0,(timea>>8));
IapProgramByte(1,(uchar)timea);
timeb=time2;
IapEraseSector(1);//保持改变后的时间值
IapProgramByte(1,(timea>>8));
IapProgramByte(2,(uchar)timea);
}
//第三个按键按下
else if(key == 0x54)
{ if(mode == 0)//模式0
{
if(time2>0)
{
time2--;//减时间
}
}
if(mode == 1)//模式1
{
if(time1>0)
{
time1--;//减时间
}
}
timea=time1;
IapEraseSector(0); //保存时间
IapProgramByte(0,(timea>>8));
IapProgramByte(1,(uchar)timea);
timeb=time2;
IapEraseSector(1); //保存时间
IapProgramByte(1,(timeb>>8));
IapProgramByte(2,(uchar)timeb);
}
else
{
key_ok = 0;
}
}
if(update_dis) //30ms到,更新显示
{
update_dis = 0;
TM1650_Set(0x48,0x11);
if(stat ==0)
{
if(mode == 1)//如果是模式1
{
TM1650_Set(0x68,CODE[timea/100]); //显示
TM1650_Set(0x6A,CODE[timea/10%10]);
TM1650_Set(0x6C,CODE[timea%10]);
}
else if(mode == 0)
{
TM1650_Set(0x68,CODE[timeb/100]);
TM1650_Set(0x6A,CODE[timeb/10%10]);
TM1650_Set(0x6C,CODE[timeb%10]);
}
}
else if(stat == 1)//最后倒计时完后显示的内容
{
timea=time1;
TM1650_Set(0x68,CODE[timea/100]);
TM1650_Set(0x6A,CODE[timea/10%10]);
TM1650_Set(0x6C,CODE[timea%10]);
stat=0;
}
}
}
|