久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2203|回復: 5
打印 上一主題 下一主題
收起左側

關于單片機外部中斷返回問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:706567 發表于 2020-8-9 18:19 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
void ext0() interrupt 0
{

keyscan;();//鍵盤里改變 F 的數字

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

}
按下外部中斷鍵 進入中斷,中斷里就是鍵 盤掃描,改變F的數值 ,但是中斷結束返回后,不會立即執行F數值 所指定的語句,而是返回中斷點執行完原來的,才會重新判斷F的數值 ,執行相應的語句,我想這個應該 怎么寫才能F數值 發生改變后  立即執行,大師門給個思路。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

6#
ID:706567 發表于 2020-8-14 08:56 | 只看該作者
1692483014 發表于 2020-8-11 19:25
退出中斷就是要返回原來中斷的地方繼續執行啊!芯片就是這樣設計的,這個改變不了。

之前的思想不對,重新安排了下,基本解決。
回復

使用道具 舉報

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

退出中斷就是要返回原來中斷的地方繼續執行啊!芯片就是這樣設計的,這個改變不了。
回復

使用道具 舉報

地板
ID:429003 發表于 2020-8-10 09:46 | 只看該作者
簡化任務,優化設計,使程序盡可能多的時間處于休眠狀態,而非高速循環運行!中斷發生時,程序盡可能是從一個固定的休眠位置喚醒!
回復

使用道具 舉報

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

使用道具 舉報

沙發
ID:804115 發表于 2020-8-9 23:56 | 只看該作者
你的意思是不是在執行pattern2();的過程中,突然來了中斷,中斷按鍵掃描的結果是F=1;但是中斷退出后你想直接執行pattern1();但是程序還是會把pattern2();執行完才會執行pattern1();導致1的任務被立即執行,產生了問題,是這樣吧!

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

你還可以通過引入OS來盡可能保證單核MCU的資源盡可能不被delay這種耗時間的任務占用不必要的時間,
同時,也可以通過給任務排版優先級來解決任務排序問題,但是以你目前的能力,不建議立即引入,再多寫寫代碼,多看看代碼吧。
另外,如果你是多核的mcu,可以讓不同內核做不同的事情,也能解決你的問題,這個不太符合你的情況。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av在线播放国产 | 国产欧美精品一区二区色综合朱莉 | 亚洲视频三 | 国产综合久久久久久鬼色 | 国产激情免费视频 | 欧美a级成人淫片免费看 | 亚洲国产精品美女 | 国产精品特级毛片一区二区三区 | 欧美天堂| 黄色av网站在线观看 | 激情六月丁香婷婷 | 91偷拍精品一区二区三区 | 亚洲精品在线免费 | 亚洲xxxxx | 亚洲精品中文字幕av | 久久99精品视频 | 欧美日韩精品免费 | 亚洲韩国精品 | 在线亚洲欧美 | 久久精品无码一区二区三区 | 国产精品自拍视频网站 | 国产区一区 | 亚洲永久免费观看 | 欧美日韩在线国产 | 亚洲三区在线观看 | 日韩欧美手机在线 | 免费黄色a视频 | 色综合一区二区 | 午夜精品一区二区三区在线观看 | 日韩免费视频一区二区 | 国产美女在线播放 | 免费一区二区 | 日韩av啪啪网站大全免费观看 | 欧美三级视频在线观看 | 天天综合日日夜夜 | 久久成人精品视频 | 中文字幕成人 | 亚洲国产成人精品女人久久久 | 99re热精品视频 | 范冰冰一级做a爰片久久毛片 | 日本精品久久久久久久 |