|
定時器時間溢出進(jìn)入中斷函數(shù),中斷函數(shù)內(nèi)是不是要先關(guān)閉定時器TR0=0,當(dāng)中斷函數(shù)內(nèi)程序運(yùn)行到最后,定時器啟動TR0=1.中斷結(jié)束,定時器開始工作。這樣寫是不是正確?吹胶枚嗬,在中斷函數(shù)內(nèi)都不管定時器,如果定時器的時間小于或者大于中斷函數(shù)時間,這樣的定時器進(jìn)入中斷函數(shù)的值會不會有變化。
下面是加定時器關(guān)閉的程序,關(guān)閉定時器與不關(guān)閉定時器有什么影響。求大神指導(dǎo)。
void InterruptTimer0() interrupt 1 //中斷函數(shù)的特殊寫法,數(shù)字’1’為中斷入口號
{
static unsigned char j = 0;
TR0=0; //加入定時器關(guān)閉程序
TH0 = 0xFC; //溢出后進(jìn)入中斷重新賦值
TL0 = 0x67;
counter++; //計數(shù)值counter加1
P0 = 0xFF; //消隱
switch(j)
{
case 0: ADDR0=0; ADDR1=0; ADDR2=0; j++; P0=LedChar[LedNumber[0]]; break;
case 1: ADDR0=1; ADDR1=0; ADDR2=0; j++; P0=LedChar[LedNumber[1]]; break;
case 2: ADDR0=0; ADDR1=1; ADDR2=0; j++; P0=LedChar[LedNumber[2]]; break;
case 3: ADDR0=1; ADDR1=1; ADDR2=0; j++; P0=LedChar[LedNumber[3]]; break;
case 4: ADDR0=0; ADDR1=0; ADDR2=1; j++; P0=LedChar[LedNumber[4]]; break;
case 5: ADDR0=1; ADDR1=0; ADDR2=1; j=0; P0=LedChar[LedNumber[5]]; break;
default: break;
} //動態(tài)刷新
TR0=1; //加入定時器打開程序中斷結(jié)束開始計時
} |
|