找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9034|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

51定時(shí)器進(jìn)入中斷是否一直在工作?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:66072 發(fā)表于 2014-9-12 01:26 | 只看該作者 回帖獎勵(lì) |倒序?yàn)g覽 |閱讀模式

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

flag++;

}

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

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

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

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

地板
ID:66072 發(fā)表于 2014-9-12 23:11 | 只看該作者
xueyunmicheng 發(fā)表于 2014-9-12 08:36
你可以把定時(shí)器理解成一個(gè)鬧鐘 每五十毫秒鬧一次(flag++;) 這個(gè)鬧鐘只要你給他上電 他就會一直走下去(啟用 ...

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

使用道具 舉報(bào)

5#
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時(shí),就進(jìn)入if語句中
      {
             flag=0;
      }
}

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

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

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




評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

9#
ID:248394 發(fā)表于 2017-11-17 22:40 | 只看該作者
每次進(jìn)入中斷,flag都會加一吧
回復(fù)

使用道具 舉報(bào)

10#
ID:250589 發(fā)表于 2017-11-17 23:17 | 只看該作者
每次進(jìn)入中斷,flag都+1
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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