吴忠躺衫网络科技有限公司

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>嵌入式開發>在執行程序及產生中斷時CPU內會發生什么變化?資料下載

在執行程序及產生中斷時CPU內會發生什么變化?資料下載

2021-04-04 | pdf | 311.96KB | 次下載 | 2積分

資料介紹

上期我們已經學習了將程序放在地址空間中,并在向量表中顯示保存位置的內容。本期將介紹在執行程序及產生中斷時CPU內會發生什么變化。 引導程序的運行―程序計數器 一般來說,程序就是計算機將所要進行的處理按順序排列的指令集。在單片機中,將程序保存在地址空間(存儲器 空間)中(上期曾介紹過),并由CPU來執行(處理)指令。假設地址空間中的一個地址保存一條指令,先執行某個地址中的指令(如“將值置位到CPU中”處理),接著執行下一個地址中的指令,接下來再執行下一個地址中的指令……,像這樣通過連續執行指令,便可執行程序。 那么,CPU是如何判斷執行指令的順序呢?在單片機中,程序被執行的時候“程序計數器(PC)”的值也同時被更新。存放在CPU內的指令地址中,程序計數器存儲有下一條CPU將要執行的指令所在的地址。執行了某個地址的指令后,下一個該執行哪個地址中的指令呢?這個答案由程序計數器來告訴你。 一般來說,程序被保存在連續的地址中, 再由CPU按順序執行存放在各個地址中的指令。圖1為程序計數器的示意圖。圖中,假定(1)執行地址1000h中的指令,(2)執行地址1000h中的指令后,程序計數器的値自動增加一個量并顯示出下一個地址1001h,接下來,(3)CPU執行地址1001h中的指令。 圖1:程序計數器 那么,CPU執行最初的指 令時是一種什么狀況呢?單片機在接通電源或是復位時,如上期所說明的,保存在向量表的復位地址中的値(程序的起始地址)將被轉移到程序計數器中,該地址中的指令便得到執行(請參照上期的圖2)。 ?關于地址空間及向量表的內容,請參照本系列的第五期: 改變程序的運行路徑―轉移指令 編寫程序時,在執行完某個指令的處理后有時必須先執行保存“(非連續)的下一個地址”中的指令。此時,程序計數器的值將被改寫,而所用的指令被稱為“轉移指令”。 圖2所示是轉移指令的示意圖。圖2示例中,(1)地址1000h中存放有轉移指令,即將(2)程序計數器的值改寫為下一個應執行的地址 (1100h)的指令。即CPU執行完1000h地址的指令(轉移指令)后,接下來不是執行1001h地址的指令,而是執行(3)1100h地址的指令。 圖2:轉移指令 另外,在轉移指令中,能夠利用“從當前的程序計數器的值向前(更大的地址)/向后(更小的地址)移動”的方法來設定程序計數器的值 。 信息的暫時存放處―堆棧 執行程序時,在運算過程中僅僅依靠CPU內的數據保存位置(CPU內部寄存器)是不夠的,有時需在主存儲器中暫時存放信息。這種信息的暫時存放位置被稱為“堆?!?而存放“下一個(暫時)存放的信息地址”的就是“堆棧指針(SP)”。如果一開始就設定好堆棧的地址,那么堆棧指針將自動更新,且總是指示“下一個(暫時)存放的信息地址”。 ?CPU內部寄存器等單片機的結構請參照。 如果執行“將該信息存放(有時也用 “堆積”)在堆?!钡闹噶?,那么被指定的信息將會被寫入堆棧指針所指定的地址中,且堆棧指針的值也將被更新為新的地址(一般為一個小地址)。該情形如圖3所示。如果(1)CPU將信息存放在堆棧指針所指的地址中,則(2)堆棧指針的値將被更新,然后(3)堆棧指針指向下一個存放信息的位置。 圖3:將信息存放在堆棧中" 將存放在堆棧中的信息返回CPU時,也將用到堆棧指針。圖4所示的是將信息返回時的情形。(1)更新堆棧指針的値(更新為 一個大的地址),(2)將暫時存放在堆棧中的信息返送回CPU。此時,(3)堆棧指針指向下一個寫入地址(先前將信息返回CPU后空出的地址)。 圖4:將信息從堆棧返回 但是堆棧中并非可無限制地保存信息。由于堆棧能使用的范圍僅限于可改寫的被稱為RAM的存儲器。如果信息存放量過多而導致堆棧超出了RAM的區域,程序將無法正常運行。 理解中斷處理 本期是《活學活用單片機基礎篇 學習“外設功能”》系列的最后一期。下面我們將以前介紹過的內容進行一個總結,并以此來理解單片機是如何運行(處理)的。 我們將以發生中斷時的處理為例來進行思考(圖5)。中斷處理就是指在執行某個程序的過程中,由于某種原因(產生中斷)而導致開始執行完全不同的程序。我們以來自外設功能之一的獨立的看門狗計時器(WDT、所謂的Watch Dog即看門狗的意思)的中斷為例來進行分析。在程序正常運行時獨立的看門狗定時器將什么也不做,但是在程序失去控制,且沒有按必要的步驟進行處理時就會產生中斷。使失去控制的程序停下并讓系統穩定停止的處理是由通過中斷開始的程序來執行的。中斷處理的流程請參照本系列第四期《中斷功能》的圖2。 ?關于中斷的結構和處理流程請參照本系列第四期的內容。 ?關于看門狗定時器請參照本系列的第二期的內容。 圖5:中斷處理的流程 1、首先,在產生中斷時,必須使運行中的程序入棧。 2、在中斷處理 “入棧”時,將信息存放在堆棧指針指向的地址(堆棧)中。進行中斷處理時存放在堆棧中的信息就是正 在執行的原先的程序(被中斷的程序)時的程序計數器的值,即原先的程序執行到哪一步的信息(地址)。另外,顯示CPU內部狀態的信息和暫時保存的值也存放 在堆棧中。 3、如果CPU內部的信息存放在堆棧中且完成“交付”準備(入棧)后,將執行中斷程序。中斷程序與正在執行的程序不同且所保 存的地址空間也不同,所以程序計數器的值與原先程序也完全不同。中斷程序的起始位置將被寫入向量表中。起始位置該寫在向量表中的哪一項取決于所產生 的中斷。 例如,如果存在不可屏蔽中斷(NMI,即CPU不能屏蔽的中斷),那就從寫有NMI項的地址開始進行處理(請參照本系列第五期《程序設計(上)》的圖 2及圖3)。 ?使用向量表進行處理的流程在本系列的第五期中進行解說。 4、如上所述,向量表的NMI項中的值(地址)將轉移到程序計數器中, 并從該處開始執行。此外,如將數值設為0而產生錯誤時,或者欲存取到無存儲器的位置時,CPU本身將產生中斷并從向量表中讀取開始處理的地址。此例中, 由于在檢測到程序失控時是通過獨立的看門狗定時器進行中斷處理的,所以中斷程序將使系統停止下來。 5、如為一般的周期性中斷,那么,中斷處理一結束,且在入棧時將存放在堆棧中的“執行原先執行程序時的信息”返回到CPU。最后返回程序計數器的值,并結束從中斷返回的處理“出?!?。 開始中斷程序時,通過來自外部的信號或從CPU本身發出的指令來開始入棧。出棧時使用“來自中斷的出棧指令”,因此編程人員無需考慮“堆棧 中存放有什么信息又是按什么順序來存放的?”等問題,僅需一條指令便可進行出棧處理。 結合上期《程序設計(上)》的內容,從執行程序的觀點來分析 ,本期對于CPU中到底產生了什么變化進行了說明。程序存放在地址空間中,且在向量表中保存有起始地址,而且還有將信息暫時存放的被稱為堆棧的內容等 等……,在進行嵌入式編程時,必須同時考慮這些內部動作后再進行編程。如果可通過程序對于更細微的部分發出指示,且能發揮出該單片機的能力的話,編程將變得更加容易。 本系列共分6期,本期為最后一期。盡管每一期都只介紹非?;A的內容,對于那些內容,我們也盡量做到即使對于完全不具備相關知識的讀者也能看得懂。所以,請您也反復閱讀,我們相信您一定會完全理解其內容的。? (mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關電源基礎知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統的設計與實現
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發板設計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
风水24山代表什么| 凉山| 百家乐官网平注法到65| 大发888官方网| 百家乐官网号解码器| 大发888客户端 运行| 百家乐官网博赌城| bet365备用主页| 天天百家乐游戏| 真人百家乐| 什么是百家乐赌博| 百家乐官网网络赌博地址| 御匾会百家乐的玩法技巧和规则 | 南宁百家乐赌机| 真人百家乐官网是啥游戏| 巴比伦百家乐的玩法技巧和规则| 百家乐官网平台送彩金| 边城棋牌游戏下载| 百家乐经验博彩正网| 百家乐官网赢钱皇冠| 百家乐桌码合| 网上百家乐官网| 云鼎百家乐的玩法技巧和规则 | 百家乐官网规则| 英山县| 博彩百家乐组选六六组| 火箭百家乐官网的玩法技巧和规则| 桂林市| 澳门百家乐论坛及玩法| 马德里百家乐官网的玩法技巧和规则 | 百家乐官网大白菜| 易发棋牌游戏| 网络百家乐骗局| 百家乐官网改单软件| 永利娱乐场| 金彩百家乐的玩法技巧和规则| 鸟巢百家乐官网的玩法技巧和规则| 青铜峡市| 乐宝百家乐的玩法技巧和规则| 吕百家乐官网赢钱律| 百家乐官网代理每周返佣|