標(biāo)題: 單片機(jī)外部中斷執(zhí)行完后,可以不返回到中斷點(diǎn)嗎? [打印本頁]

作者: 15549418740    時(shí)間: 2017-12-23 14:27
標(biāo)題: 單片機(jī)外部中斷執(zhí)行完后,可以不返回到中斷點(diǎn)嗎?
在一個(gè)控制氣囊循環(huán)充放氣的單片機(jī)程序中,我用的是按鍵外部中斷使程序退出循環(huán),但目前情況是這樣的:當(dāng)氣囊在循環(huán)時(shí),按下執(zhí)行外部中斷的按鈕,氣袋停止循環(huán),但隔2秒后期待又接著執(zhí)行剩下的循環(huán),完成剩下的循環(huán)后,才完全停止,想問一下大神這是什么原因?同時(shí)也想請(qǐng)教一下:在執(zhí)行完外部中斷后,可以不回到中斷點(diǎn),而是回到主函數(shù)的開頭可以嗎?怎樣設(shè)置?

作者: 軍師祭酒    時(shí)間: 2017-12-23 16:21
你可以去查一下   goto語句的用法
作者: day_day_up    時(shí)間: 2017-12-23 16:23
我覺得執(zhí)行完中斷后是不能回到主函數(shù)再開始運(yùn)行,中斷就是:執(zhí)行中斷函數(shù)然后再返回到中斷前的位置!
作者: 15549418740    時(shí)間: 2017-12-25 11:02
軍師祭酒 發(fā)表于 2017-12-23 16:21
你可以去查一下   goto語句的用法

標(biāo)號(hào)和GOTO語句好像必須在一個(gè)函數(shù)內(nèi),但中斷函數(shù)和主函數(shù)不是一個(gè)函數(shù)呀
作者: yushaan    時(shí)間: 2017-12-25 14:52
你可以中斷完后加條件判斷或者用switch語句和break
作者: 大灰狼愛喝湯    時(shí)間: 2017-12-25 16:08
可以設(shè)置一個(gè)標(biāo)志位,判斷是否執(zhí)行了中斷,再?zèng)Q定程序走向
作者: sirf3    時(shí)間: 2017-12-25 17:00
同意我上一樓的說法,我也是通過設(shè)置標(biāo)志位來完成的。
即使可以不返回上級(jí)程序,你的這個(gè)功能也完成了。但將來擴(kuò)充功能也會(huì)困難。所以要用一種類似操作系統(tǒng)的方法來解決。
一個(gè)WHILE(1)主函數(shù),里面有多個(gè)函數(shù)。比如函數(shù)1用來充氣,函數(shù)2用來檢測(cè)是否有按下或者釋放,再一個(gè)函數(shù)3用來根據(jù)函數(shù)2設(shè)置標(biāo)志位,最后一個(gè)函數(shù)用來產(chǎn)生時(shí)基,比如50ms中斷一次,供以上三個(gè)函數(shù)使用用來計(jì)時(shí)。一個(gè)函數(shù)只管少量的,相對(duì)獨(dú)立的事,這樣增刪功能比較簡(jiǎn)單
作者: Erik_吳    時(shí)間: 2017-12-25 17:33
可以的  不回中斷
作者: luoluoluo136    時(shí)間: 2017-12-26 10:28
編程思路問題。
作者: arsenalcn    時(shí)間: 2017-12-26 17:21
不管是內(nèi)部還是外部中斷執(zhí)行完后都應(yīng)該回到中斷點(diǎn),不回的話,你多中斷幾次堆棧都溢出了

你的這個(gè)問題看起來都不是中斷的問題,猜你應(yīng)該有一個(gè)控制循環(huán)次數(shù)的變量,在中斷處理中把這個(gè)變量清掉應(yīng)該就可以了。

個(gè)人認(rèn)為按鍵這種操作中斷中最好只打個(gè)標(biāo)記,在主循環(huán)中查看標(biāo)記去做中斷處理
作者: 15549418740    時(shí)間: 2017-12-27 14:29
arsenalcn 發(fā)表于 2017-12-26 17:21
不管是內(nèi)部還是外部中斷執(zhí)行完后都應(yīng)該回到中斷點(diǎn),不回的話,你多中斷幾次堆棧都溢出了

你的這個(gè)問題看 ...

沒有設(shè)置循環(huán)次數(shù)的變量,是設(shè)置按鍵按住的時(shí)間超過一定值時(shí),就開始循環(huán),所以就設(shè)置了一個(gè)按鍵外部中斷使循環(huán)能立刻停下來;這個(gè)外部中斷可以使循環(huán)立刻停下來,但是停下來后好像又循環(huán)了一下才完全停下來(假設(shè)在循環(huán)程序執(zhí)行了1/3時(shí)按外部中斷鍵,循環(huán)立刻停頓一下,接著又把接下來的2/3剩下的循環(huán)程序執(zhí)行完;)。
作者: 手牽四狗攆五豬    時(shí)間: 2017-12-27 15:25
可以的 退出不就完了嗎




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