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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機為什么保護現(xiàn)場前要關CPU中斷?

[復制鏈接]
跳轉到指定樓層
樓主
ID:50910 發(fā)表于 2021-11-12 09:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在李朝青所編《單片機原理及接口技術》P113頁講到,中斷服務子程序中在保護現(xiàn)場和恢復現(xiàn)場前應關中斷,完成后再開中斷。為什么呢?
我個人認為,在保護現(xiàn)場和恢復現(xiàn)場的中間,即使被更高一級的中斷打斷,因為在這更高一級的中斷中也有保護現(xiàn)場和恢復現(xiàn)場的操作,它不會改變上一次中斷的現(xiàn)場數(shù)據(jù),為什么還要關中斷呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:624769 發(fā)表于 2021-11-12 12:22 | 只看該作者
這本書沒看過, “中斷服務子程序中在保護現(xiàn)場和恢復現(xiàn)場前應關中斷” 中的  中斷子程序 是 中斷程序本身? 還是 中斷程序 另外 調用的子程序?   其中舉例用的單片機,又是什么單片機?  編程的語言 又是什么?

如果 51 單片機  用 KEIL C 編程的話,  那么,在中斷響應后,“保護現(xiàn)場” 之前, 你是沒有任何手段去 關閉中斷的。  如果匯編編程的話,  雖然可以在 “保護現(xiàn)場” 之前 關中斷,但是 只要這個“現(xiàn)場”不牽涉到  DPTR , 是沒有必要關中斷的。 只有 姚老板的 STC15 系列的 11年~13年的部分產品(具體就不點名了),才會需要 關中斷。不然會跑飛。
回復

使用道具 舉報

板凳
ID:429003 發(fā)表于 2021-11-12 12:59 | 只看該作者
發(fā)生中斷保護現(xiàn)場的過程,CPU需要執(zhí)行多步操作(有多個寄存器需要入棧保存),無法在一個指令周期完成全部入棧操作。CPU執(zhí)行這個過程時不能被高優(yōu)先級中斷打斷,否則現(xiàn)場被破壞程序會跑飛。
回復

使用道具 舉報

地板
ID:401564 發(fā)表于 2021-11-12 14:28 | 只看該作者
現(xiàn)場保護:主要是把一些會有可能會被中斷內部改變,或者是中斷內部在使用到的數(shù)據(jù)保存起來,比如8051的CY(C標志位),這個CY在8051的很多計算中都要用到,如果在主程序中用到,在中斷中也要用到,那么,如果不保存起來,中斷中改變了CY,等到中斷返回之后,主程序中的計算就會出錯

恢復現(xiàn)場:就是把保存的數(shù)據(jù)恢復

至于執(zhí)行中斷時要關閉中斷,在8051中是沒有必要的,因為8051是軟件堆棧.
除非你中斷設計得非常不合理,比如:定時器2需要1秒時間來完成中斷操作,但你又開啟了定時器1,10mS中斷時間,定時器1的中斷等級設定成比定時器2高,這樣一來,在執(zhí)行定時器2中斷的時候,它就會不斷的被定時器1中斷打斷,整個的定時器2中斷時間可能很長,有時候程序都跑不動

對于其它的一般只有幾層的硬件堆棧單片機來說,就要關閉中斷,不然就會溢出,程序就跑飛了
回復

使用道具 舉報

5#
ID:57657 發(fā)表于 2021-11-12 20:09 | 只看該作者
xstong 發(fā)表于 2021-11-12 12:59
發(fā)生中斷保護現(xiàn)場的過程,CPU需要執(zhí)行多步操作(有多個寄存器需要入棧保存),無法在一個指令周期完成全部 ...

多級中斷嵌套,只要堆棧順序正確是是不會跑飛的,除非堆棧溢出或數(shù)組越界,指針錯誤等。
回復

使用道具 舉報

6#
ID:50910 發(fā)表于 2021-11-13 10:22 | 只看該作者
188610329 發(fā)表于 2021-11-12 12:22
這本書沒看過, “中斷服務子程序中在保護現(xiàn)場和恢復現(xiàn)場前應關中斷” 中的  中斷子程序 是 中斷程序本身? ...

回答:1、是中斷程序本身。2、8051單片機。3、匯編語言。
回復

使用道具 舉報

7#
ID:980554 發(fā)表于 2021-11-13 11:16 | 只看該作者
設置 9 個按鍵,每個按鍵遞進 10%,剛好
晶振選用11.0592,串口波特率一般采用9600
定時器內設置一個變量,用于控制占空比
回復

使用道具 舉報

8#
ID:624769 發(fā)表于 2021-11-13 11:19 | 只看該作者
brucekang 發(fā)表于 2021-11-13 10:22
回答:1、是中斷程序本身。2、8051單片機。3、匯編語言。

基于這個3個限定,結論是:

的確能在 中斷程序保護現(xiàn)場前,關中斷,但是,事實和你理解的一樣,毫無必要, 需要在保護現(xiàn)場前關中斷,只有2個可能。
1)單片機本身缺陷,目前只在姚老板的特定幾個版本單片機上遇到過,其他牌子可以忽略這個問題。
2)編程者自身能力問題,無法“完美”的保護現(xiàn)場,還可能會破壞現(xiàn)場。(可能你看得這本書的作者屬于這個情況。)
回復

使用道具 舉報

9#
ID:420836 發(fā)表于 2021-11-15 09:01 | 只看該作者
在中斷保護堆棧保存過程中,不得中斷該過程。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩中文字幕 | 国产日韩一区二区三免费高清 | 福利久久 | 最新国产精品 | 国产精品日韩一区二区 | 99视频在线免费观看 | 91麻豆产精品久久久久久 | 国产精品日韩 | 天天草天天射 | 一区二区三区国产 | 成人毛片网 | 国产精品久久久久久 | 日韩欧美在线一区二区 | 亚洲一区二区三区在线视频 | 成人黄色电影在线播放 | 精品久久久久久久久久久久 | 亚洲视频在线看 | 国产高清一区二区三区 | 久久精品亚洲 | 亚洲精品一区中文字幕乱码 | 欧美国产日韩精品 | 亚洲网站在线观看 | 综合亚洲视频 | 国产午夜精品福利 | 九色av| 久久国产成人 | 日韩av视屏 | 国产精品久久午夜夜伦鲁鲁 | 91国内在线观看 | 成人免费视频网站在线看 | 一区二区三区在线观看免费视频 | 久久久久久艹 | 国产精品久久亚洲 | 久久精品小短片 | 日本免费一区二区三区视频 | 精品av| 亚洲bt 欧美bt 日本bt | 成人欧美一区二区三区视频xxx | 日韩精品一区二区三区在线 | 欧美精品在线播放 | 欧美精品久久久久久久久久 |