欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9418|回復: 9
收起左側

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

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

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

flag++;

}

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

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


回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

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

使用道具 舉報

ID:63656 發表于 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)//當flag==20時,就進入if語句中
      {
             flag=0;
      }
}

評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

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

評分

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

查看全部評分

回復

使用道具 舉報

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

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




評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表