找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9129|回復(fù): 9
收起左側(cè)

51定時器進入中斷是否一直在工作?

[復(fù)制鏈接]
ID:66072 發(fā)表于 2014-9-12 01:26 | 顯示全部樓層 |閱讀模式

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

flag++;

}

if(flag==20)//當(dāng)定時到1秒時執(zhí)行花括號里面的語句

falg不是只能加一次嗎 這里是怎么實現(xiàn)循環(huán)加20次直到滿足主函數(shù)中的if語句,想了幾天沒想明白,求解。!


回復(fù)

使用道具 舉報

ID:63997 發(fā)表于 2014-9-12 08:36 | 顯示全部樓層
你可以把定時器理解成一個鬧鐘 每五十毫秒鬧一次(flag++;) 這個鬧鐘只要你給他上電 他就會一直走下去(啟用中斷 開啟定時器) 所以不管你主函數(shù)在干嗎 或者其他函數(shù)在干嗎 只要沒有中斷優(yōu)先級搞得中斷搶占它  那么他會一直每隔50毫秒 就讓 flag 加一 一次

評分

參與人數(shù) 2威望 +43 黑幣 +43 收起 理由
admin + 40 + 40 回帖助人的積分獎勵。。。
constancy + 3 + 3 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:64817 發(fā)表于 2014-9-12 22:32 | 顯示全部樓層
TH0=(65536-50000)/256;TL0=(65536-50000)%256這是你給定時器定的時間值,時間一到定時器值溢出
進入中斷一次,進入中斷一次同時flag++;定時器值溢出后,單片機檢測到中斷后TF0自動清0,下一次定時器中斷開始,重復(fù)直到flag==20滿足主函數(shù)中的if語句

評分

參與人數(shù) 2威望 +43 黑幣 +38 收起 理由
admin + 40 + 35 回帖助人的積分獎勵。。!
constancy + 3 + 3 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:66072 發(fā)表于 2014-9-12 23:11 | 顯示全部樓層
xueyunmicheng 發(fā)表于 2014-9-12 08:36
你可以把定時器理解成一個鬧鐘 每五十毫秒鬧一次(flag++;) 這個鬧鐘只要你給他上電 他就會一直走下去(啟用 ...

那是不是滿足if語句的條件就停止呢
回復(fù)

使用道具 舉報

ID:63656 發(fā)表于 2014-9-12 23:17 | 顯示全部樓層
本帖最后由 2842687945 于 2014-9-12 23:19 編輯

void timer0() interrupt 1 {
       TH0=(65536-50000)/256;
       TL0=(65536-50000)%256;
       flag++;
       if(flag==20)//當(dāng)flag==20時,就進入if語句中
      {
             flag=0;
      }
}

評分

參與人數(shù) 1威望 +45 黑幣 +40 收起 理由
admin + 45 + 40 回帖助人的積分獎勵。。!

查看全部評分

回復(fù)

使用道具 舉報

ID:66072 發(fā)表于 2014-9-12 23:37 | 顯示全部樓層
定時器到底是在沒有其他更高優(yōu)先級的情況下一直走下去還是滿足主函數(shù)if條件就跳出呢?求大神們解答下
回復(fù)

使用道具 舉報

ID:63656 發(fā)表于 2014-9-13 01:13 | 顯示全部樓層
constancy 發(fā)表于 2014-9-12 23:37
定時器到底是在沒有其他更高優(yōu)先級的情況下一直走下去還是滿足主函數(shù)if條件就跳出呢?求大神們解答下

比如你定時1S,定時器每隔1S它就會中斷一次(除非你把定時器中斷關(guān)閉)

評分

參與人數(shù) 1威望 +3 黑幣 +3 收起 理由
constancy + 3 + 3 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:64817 發(fā)表于 2014-9-13 01:23 | 顯示全部樓層
constancy 發(fā)表于 2014-9-12 23:37
定時器到底是在沒有其他更高優(yōu)先級的情況下一直走下去還是滿足主函數(shù)if條件就跳出呢?求大神們解答下

定時器只有 一次,但你用了定時器中斷就會一直走下的。滿足主函數(shù)if條件時指行IF命令,但同時定時器中斷還在計數(shù)工作,,。。。呵呵,,也就是說剛開始指行主函數(shù)main,往下就是TH0=(65536-50000)/256;
TL0=(65536-50000)%256;(可能是你給定時器定的值),當(dāng)數(shù)值走完,也就是時間到了,定時器溢出標(biāo)志置1,單片機進入中斷也就是你的void timer0() interrupt 1 中斷函數(shù)中,單片機進入中斷后會清除去定時器溢出的標(biāo)志,迎接下一次中斷,這里有一點就是單片機進入中斷后會清除去定時器溢出的標(biāo)志,迎接下一次中斷,會指行void timer0() interrupt 1 中{ TH0=(65536-50000)/256;TL0=(65536-50000)%256}數(shù)值走完再進入中斷,中斷清0,再指行 中斷函數(shù)中的數(shù)值,數(shù)值走完溢出再進入,反復(fù)操作,。flag++;就是進一次中斷加1一次,加到滿足IF條件時,指行if.。。單片機的定期器和中斷是單片機另外一系統(tǒng),他不占用單片機的計算資源。   我是這么理解的,可能也不是很正確。




評分

參與人數(shù) 1威望 +5 黑幣 +5 收起 理由
constancy + 5 + 5 謝謝你那么詳細的解答!

查看全部評分

回復(fù)

使用道具 舉報

ID:248394 發(fā)表于 2017-11-17 22:40 | 顯示全部樓層
每次進入中斷,flag都會加一吧
回復(fù)

使用道具 舉報

ID:250589 發(fā)表于 2017-11-17 23:17 | 顯示全部樓層
每次進入中斷,flag都+1
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表