我在编写这个程序的时候发生了一件灵异事件,非常奇怪,不知道各位有没有遇到过
是这样的 正常工作时没问题 ,
调整时间的时候我按下增加键 当到达一定数字的时候会跳回来,
比如说我从2013年增加到2018,好了之后让它正常走时的时候他就跳回到2012去了,
调整月份倒没问题,调整日的时候又发生相同的问题,怎么回事呢?我使用protues仿真的,会不会跟这个有关?我找了挺久了找不出来,请各位帮帮忙吧
代码虽长,但结构简单,望有心之人稍微看看(顺便问下,这里的代码复制过来之后只得一行行处理?tab键不好用)
void keyscan()
{
if(set==0)
{
delay(5);
if(set==0)
{
while(!set);
helt=1;//此标志位为是否进入调整时间模式,进入此模式后静止显示,主函数中用到
flag++;
if(flag==1)//stay at year
{
lcd_write_com(0x80+2);
lcd_write_com(0x0f);
}
if(flag==2) // month
{
lcd_write_com(0x80+5);
lcd_write_com(0x0f);
}
if(flag==3)//day
{
lcd_write_com(0x80+8);
lcd_write_com(0x0f);
}
if(flag==4)//week
{
lcd_write_com(0x80+13);
lcd_write_com(0x0f);
}
if(flag==5)//hour
{
lcd_write_com(0x80+0x40+2);
lcd_write_com(0x0f);
}
if(flag==6)//minute
{
lcd_write_com(0x80+0x40+5);
lcd_write_com(0x0f);
}
if(flag==7)//start
{
helt=0;
flag=0;
lcd_write_com(0x0c);
write_ds1302(0x82,min/16*10+min%16);
write_ds1302(0x84,hour/16*10+hour%16);
write_ds1302(0x86,day/16*10+day%16);
write_ds1302(0x88,mon/16*10+mon%16);
write_ds1302(0x8a,week%16);
write_ds1302(0x8c,year/16*10+year%16);
}
}
}
if(flag!=0)
{
if(up==0)
{
delay(5);
if(up==0)
{
while(!up);
if(flag==1)
{
year++;
if(year==100)
year=0;
write_nyr(2,year);
lcd_write_com(0x80+2);//显示位置重新回到调节处
}
if(flag==2)
{
mon++;
if(mon==13)
mon=1;
write_nyr(5,mon);
lcd_write_com(0x80+5);
}
if(flag==3)
{
day++;
if(day>yearchoice(year,mon))//yearchoice(year,mon)此函数返回值是当年当月的日数
day=1;
write_nyr(8,day);
lcd_write_com(0x80+8);
}
if(flag==4)
{
week++;
if(week>7)
week=1;
write_week(week);
lcd_write_com(0x80+13);
}
if(flag==5)
{
hour++;
if(hour==24)
hour=0;
write_sfm(2,hour);
lcd_write_com(0x80+0x40+2);
}
if(flag==6)
{
min++;
if(min==60)
min=1;
write_sfm(5,min);
lcd_write_com(0x80+0x40+5);
}
}
}
if(down==0)
{
。。。。。。。。。。。。
}
}
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>