標題: 中斷點亮led燈為什么會亮 [打印本頁]

作者: 1314love    時間: 2022-8-10 11:04
標題: 中斷點亮led燈為什么會亮
本帖最后由 1314love 于 2022-8-10 17:29 編輯

程序1://led燈長亮
void Timer0_Init()
{
TMOD&=0xF0; //設(shè)置定時器模式
TMOD|=0x01; //設(shè)置定時器模式TH0=64535/256; //設(shè)置定時器初值
TL0=64535%256; //設(shè)置定時器初值
TF0=0;  //清除TF0標志位
TR0=1;   //定時器0開始計時
EA=1;PT0=0;
}
int main()
{
Timer0_Init();
while(1)
{
;
}
}
void Timer0_Rountine() interrupt 1
{
P0_0=0;
}

程序2://led每隔1s閃爍
void Timer0_Init()
{
TMOD&=0xF0; //設(shè)置定時器模式
TMOD|=0x01; //設(shè)置定時器模式TH0=64535/256; //設(shè)置定時器初值
TL0=64535%256; //設(shè)置定時器初值
TF0=0;  //清除TF0標志位
TR0=1;   //定時器0開始計時
EA=1;PT0=0;
}
int main()
{
Timer0_Init();
while(1)
{
;
}
}
unsigned int T0count;
void Timer0_Rountine() interrupt 1
{
TH0=64535/256; //設(shè)置定時器初值
TL0=64535%256; //設(shè)置定時器初值
T0count++;
if(T0count>=1000)
{
T0count=0;
P2_0=~P2_0;
}
}




第一段程序的led燈為什么會長亮,就定時器不是要計數(shù)到溢出然后然后才會產(chǎn)生中斷才進入到中斷函數(shù)執(zhí)行這條中斷函數(shù)的語句嗎?而且進去了為什么還是一直亮著的,難道是因為主函數(shù)里面的while函數(shù)沒語句才一直亮著嗎?

第二段程序的中斷函數(shù)是會自己不斷+1嗎?然后等到加到溢出了,T0count初始化為0,然后led燈就點亮,再跳到主函數(shù)的while循環(huán),這里是不是while循環(huán)和中斷函數(shù)同時執(zhí)行,等到中斷函數(shù)的值加到溢出,主函數(shù)就跳到中斷函數(shù)點亮燈。還有那個中斷給個TH0=64535/256; //設(shè)置定時器初值
TL0=64535%256; 沒想明白,有點亂呀,大伙請幫幫我.謝謝


作者: haiyang201    時間: 2022-8-10 13:36
初始化設(shè)置燈滅,看下
作者: Y_G_G    時間: 2022-8-10 15:43
為什么要搞個..........呢?
其它代碼沒有了?還是商業(yè)機密?
EA0=1;這是什么意思?
定時器啟動了嗎?
定時器中斷開啟了嗎?新手寫程序,它得是這個樣子的:有注釋,代碼完整



作者: zhxiufan    時間: 2022-8-10 15:45
你的設(shè)置來看,定時器中斷服務(wù)程序是根本進不去的,TR0還沒有置1,也就是定時器0還沒有工作。至于燈被點亮,應(yīng)該是硬件上高有效的結(jié)果。缺省狀態(tài),IO口狀態(tài)是“高”
作者: yzwzfyz    時間: 2022-8-10 16:50
仔細閱讀定時器章節(jié)。
作者: 1314love    時間: 2022-8-10 17:29
Y_G_G 發(fā)表于 2022-8-10 15:43
為什么要搞個..........呢?
其它代碼沒有了?還是商業(yè)機密?
EA0=1;這是什么意思?

恩恩,啟動了





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1