|
請(qǐng)教一下各位,我做了一個(gè)倒計(jì)時(shí)的程序,用了兩個(gè)定時(shí)器,一個(gè)掃描數(shù)碼管一個(gè)計(jì)時(shí)。我想做當(dāng)分和秒都到0的時(shí)候蜂鳴器響1秒,可是程序做好以后別的都正常,就是蜂鳴器響的時(shí)候,數(shù)碼管就會(huì)全部熄滅,只有隨機(jī)一位數(shù)碼管顯示0,蜂鳴器停止后顯示才會(huì)恢復(fù)正常。請(qǐng)教一下各位這是什么情況?前段時(shí)間做了一個(gè)交通燈也是這樣,兩個(gè)定時(shí)器會(huì)互相影響。
這是定時(shí)器部分的程序:(麻煩大家?guī)兔匆幌履睦镉袉?wèn)題)
void time_T0() interrupt 1 //掃描數(shù)碼管
{
TH0=0x47; //定時(shí)器0重裝初值
TL0=0x47;
count++;
if(count==3)
{
count=0;
P0=table[dispbuf[dis]]; //數(shù)碼管 段
P2=tabwei[dis]; //數(shù)碼管 位
dis++;
if(dis==8)
dis=0;
}
dispbuf[0]=minute/10; //顯示分十位
dispbuf[1]=minute%10; //顯示分個(gè)位
dispbuf[2]=second/10; //顯示秒十位
dispbuf[3]=second%10; //顯示秒個(gè)位
}
void time_T1() interrupt 3 //計(jì)時(shí)
{
TH1=0xdb; //定時(shí)器1重裝初值
TL1=0xff;
time++;
if(second==0&&minute==0) //當(dāng)分和秒同時(shí)為0時(shí)
{
TR1=0; //關(guān)閉定時(shí)器1
minute=0;
second=0;
beep=0; //蜂鳴器開(kāi)
delayms(1000); //延時(shí)1秒
beep=1; //蜂鳴器關(guān)
}
if(time==100)
{
time=0; //time加到100歸零
second--; //秒減1
if(second==-1)
{
second=59; //秒減到0時(shí),重新回到59
minute--; //分減1
}
}
dispbuf[0]=minute/10;
dispbuf[1]=minute%10;
dispbuf[2]=second/10;
dispbuf[3]=second%10;
dispbuf[4]=num1/10;
dispbuf[5]=num1%10;
dispbuf[6]=num2/10;
|
|
|