(*Flag)|=0x80; //当前位加上小数点显示
if(Flag==temp1+13)
{Flag=temp1;
(*Flag)|=0x80;
(*(Flag+13))&=0x7f;}
break;
case 0x20: //"上一位"键处理
if(Flag==temp1)
{(*Flag)&=0x7f;
Flag=temp1+13;
(*Flag)|=0x80;}
else Flag--;
(*Flag)|=0x80; //当前位加上小数点显示
(*(Flag+1))&=0x7f; //下一位去掉点小数点显示
break;
case 0x40:Enter_Flag=1;break;//"确定"键处理
// case 0x80:Enter_Flag=1;break; //测试用
default:break;}
}
Enter_Flag=0; //按键状态恢复
temp2[0]=0x00; //秒,默认从00开始计时
temp2[1]=(temp1[11]<<4)|temp1[12];//分
temp2[2]=(temp1[9]<<4)|temp1[10]; //时
temp2[3]=temp1[8]; //周
temp2[4]=(temp1[6]<<4)|temp1[7]; //日
temp2[5]=(temp1[4]<<4)|temp1[5]; //月
temp2[6]=(temp1[2]<<4)|temp1[3]; //年
Write_Nbyte(SD2303,0x00,temp2,7); //初始化设定时间
}
if(Key==0xfd) //"闹铃设置"键按下
{temp1[9]|=0x80;
Flag=temp1+9; //定时小时高位设置提示
while(!Enter_Flag) //直到按下确定键方停止
{for(i=0;i<50;i++)
Display(temp1);
Key=~PINB;
switch(Key)
{case 0x04: //"+"按键处理
(*Flag)++;
if(((*Flag)&0x7f)==10) *Flag=0|0x80;
break;
case 0x08: //"-"按键处理
if(((*Flag)&0x7f)==0) *Flag=10|0x80;
(*Flag)--;
break;
case 0x10: //"下一位"按键处理
Flag++;
(*(Flag-1))&=0x7f; //上一位去掉小数点显示
(*Flag)|=0x80; //当前位加上小数点显示
if(Flag==temp1+13)
{(*Flag)&=0x7f;
Flag=temp1+9;
(*Flag)|=0x80;}
break;
case 0x20: //"上一位"按键处理
if(Flag==temp1+9)
{(*Flag)&=0x7f;
Flag=temp1+13;
(*Flag)|=0x80;}
else Flag--;
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:单片机 程序 万年历 AVR单片机,单片机-工控设备 - AVR单片机