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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

關(guān)于單片機(jī)外部中斷返回問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:706567 發(fā)表于 2020-8-9 18:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
void ext0() interrupt 0
{

keyscan;();//鍵盤(pán)里改變 F 的數(shù)字

}
void main()
{
                        while(1)
                                {
                                        switch(F)
                                                {
                                                        case 1:
                                                                 pattern1();//里面很多語(yǔ)句
                                                        break;
                                                        case 2:
                                                                 pattern2();//里面很多語(yǔ)句
                                                        break;
                                                        case 3:
                                                                 pattern3();//里面很多語(yǔ)句
                                                        break;
                                                                                                
                                                }

}
按下外部中斷鍵 進(jìn)入中斷,中斷里就是鍵 盤(pán)掃描,改變F的數(shù)值 ,但是中斷結(jié)束返回后,不會(huì)立即執(zhí)行F數(shù)值 所指定的語(yǔ)句,而是返回中斷點(diǎn)執(zhí)行完原來(lái)的,才會(huì)重新判斷F的數(shù)值 ,執(zhí)行相應(yīng)的語(yǔ)句,我想這個(gè)應(yīng)該 怎么寫(xiě)才能F數(shù)值 發(fā)生改變后  立即執(zhí)行,大師門(mén)給個(gè)思路。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:804115 發(fā)表于 2020-8-9 23:56 | 只看該作者
你的意思是不是在執(zhí)行pattern2();的過(guò)程中,突然來(lái)了中斷,中斷按鍵掃描的結(jié)果是F=1;但是中斷退出后你想直接執(zhí)行pattern1();但是程序還是會(huì)把pattern2();執(zhí)行完才會(huì)執(zhí)行pattern1();導(dǎo)致1的任務(wù)被立即執(zhí)行,產(chǎn)生了問(wèn)題,是這樣吧!

如果是這樣,你需要將pattern1();直接放到中斷中去執(zhí)行,但是要確保它不會(huì)占用太長(zhǎng)時(shí)間,尤其是delay肯定是不能有的。其實(shí)我們把這種任務(wù)叫做“剎車(chē)”任務(wù),有危險(xiǎn)就要?jiǎng)x車(chē),車(chē)就要立即停止,所有其它任務(wù)都要靠邊兒站,這樣才不會(huì)發(fā)生交通事故。

你還可以通過(guò)引入OS來(lái)盡可能保證單核MCU的資源盡可能不被delay這種耗時(shí)間的任務(wù)占用不必要的時(shí)間,
同時(shí),也可以通過(guò)給任務(wù)排版優(yōu)先級(jí)來(lái)解決任務(wù)排序問(wèn)題,但是以你目前的能力,不建議立即引入,再多寫(xiě)寫(xiě)代碼,多看看代碼吧。
另外,如果你是多核的mcu,可以讓不同內(nèi)核做不同的事情,也能解決你的問(wèn)題,這個(gè)不太符合你的情況。
回復(fù)

使用道具 舉報(bào)

板凳
ID:706567 發(fā)表于 2020-8-10 08:05 | 只看該作者
謝謝回答!
剛才開(kāi)始弄,水平有限,把pattern1()放到中斷里執(zhí)行,那執(zhí)行完不還是要返回原來(lái)的斷點(diǎn)嗎?
我的意思是 只要F是什么值就循環(huán)執(zhí)行相應(yīng)的程序。
回復(fù)

使用道具 舉報(bào)

地板
ID:429003 發(fā)表于 2020-8-10 09:46 | 只看該作者
簡(jiǎn)化任務(wù),優(yōu)化設(shè)計(jì),使程序盡可能多的時(shí)間處于休眠狀態(tài),而非高速循環(huán)運(yùn)行!中斷發(fā)生時(shí),程序盡可能是從一個(gè)固定的休眠位置喚醒!
回復(fù)

使用道具 舉報(bào)

5#
ID:804115 發(fā)表于 2020-8-11 19:25 | 只看該作者
無(wú)限飛翔 發(fā)表于 2020-8-10 08:05
謝謝回答!
剛才開(kāi)始弄,水平有限,把pattern1()放到中斷里執(zhí)行,那執(zhí)行完不還是要返回原來(lái)的斷點(diǎn)嗎?
...

退出中斷就是要返回原來(lái)中斷的地方繼續(xù)執(zhí)行啊!芯片就是這樣設(shè)計(jì)的,這個(gè)改變不了。
回復(fù)

使用道具 舉報(bào)

6#
ID:706567 發(fā)表于 2020-8-14 08:56 | 只看該作者
1692483014 發(fā)表于 2020-8-11 19:25
退出中斷就是要返回原來(lái)中斷的地方繼續(xù)執(zhí)行啊!芯片就是這樣設(shè)計(jì)的,這個(gè)改變不了。

之前的思想不對(duì),重新安排了下,基本解決。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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