void timer1() interrupt 3 using 3 //display
{
TH1=(65536-3000)/256;
TL1=(65536-3000)%256; //0.006s
monthl=tmonthl[month];
monthh=tmonthh[month];
dayl=tdayl[day];
dayh=tdayh[day];
hourl=thourl[hour];
hourh=thourh[hour];
if(slient==1)
{ if(j<4)
j++;
else
j=1;
if(state==1 || state==4 || state==5) //显示时间 1:显示时间 2:显示月日 3:显示年 4:修改分钟 5:修改时钟 6:修改年 7:修改月 8:修改日 ;
{
if(j==1)
{if(state==4 && dps==0 && int0!=0) // 闪烁,调节时不闪
P1=0x00;
else
{P1=display[minl]; //p3.5,p3.4,p3.1,p3.0 为势能端
}} //11XX10
else if(j==2)
{if(state==4 && dps==0 && int0!=0) // 闪烁
P1=0x00;
else
{P1=display[minh];
}} //11XX01
else if(j==3)
{if(state==5 && dps==0 && int0!=0) // 闪烁
P1=0x00;
else
{P1=display[hourl];
}} //10XX11
else if(j==4)
{if(state==5 && dps==0 && int0!=0) // 闪烁
P1=0x00;
else
{P1=display[hourh];
}} //01XX11
}
else if(state==2 || state==7 || state==8) //显示月日 1:显示时间 2:显示月日 3:显示年 4:修改分钟 5:修改时钟 6:修改年 7:修改月 8:修改日 ;
{
if(j==1)
{if(state==8 && dps==0 && int0!=0) // 闪烁
P1=0x00;
else
{P1=display[dayl]; //p3.5,p3.4,p3.1,p3.0 为势能端
}} //11XX10
else if(j==2)
{if(state==8 && dps==0 && int0!=0) // 闪烁
P1=0x00;
else
{P1=display[dayh];
}} //11XX01
else if(j==3)
{if(state==7 && dps==0 && int0!=0) // 闪烁
P1=0x00;
else
{P1=display[monthl];
}} //10XX11
else if(j==4)
{if(state==7 && dps==0 && int0!=0) // 闪烁
P1=0x00;
else
{P1=display[monthh];
}} //01XX11
}
else if(state==3 || state==6) //显示年
{
if(state==6 && dps==0 && int0!=0)
P1=0x00;
else
{if(j==1)
{P1=display[year1]; //p3.5,p3.4,p3.1,p3.0 为势能端
} //11XX10 3e
else if(j==2)
{P1=display[year2];
} //11XX01 3d
else if(j==3)
{P1=display[year3];
} //10XX11 2f
else if(j==4)
{P1=display[year4];
} //01XX11 1f
}
}
if(j==1)
{P3_0=0;P3_1=1;P3_4=1;P3_5=1;}
else if(j==2)
{P3_0=1;P3_1=0;P3_4=1;P3_5=1;}
else if(j==3)
{P3_0=1;P3_1=1;P3_4=0;P3_5=1;}
else if(j==4)
{P3_0=1;P3_1=1;P3_4=1;P3_5=0;}
/////////////////////////////////////////////////////////// DP
/////////////////////////////////////////////////////////// 1:显示时间 2:显示月日 3:显示年 4:修改分钟 5:修改时钟 6:修改年 7:修改月 8:修改日 ;
if(dps==1)
{if(state==1 || state==2)
{ if(j==1) //DP,显示时间,月日
{DP=0;}
else if(j==2)
{DP=0;}
else if(j==3)
{DP=1;}
else if(j==4)
{DP=0;} }
else if(state==3)
{ if(j==1) //DP,显示年
{DP=0;}
else if(j==2)
{DP=0;}
else if(j==3)
{DP=0;}
else if(j==4)
{DP=0;} }
上一篇:基于51单片机的频率计程序