女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]引導程序的運行―程序計數(shù)器一般來說,程序就是計算機將所要進行的處理按順序排列的指令集。在單片機中,將程序保存在地址空間(存儲器空間)中(上期曾介紹過),并由CPU來執(zhí)行

引導程序的運行―程序計數(shù)器

一般來說,程序就是計算機將所要進行的處理按順序排列的指令集。在單片機中,將程序保存在地址空間(存儲器空間)中(上期曾介紹過),并由CPU來執(zhí)行(處理)指令。假設地址空間中的一個地址保存一條指令,先執(zhí)行某個地址中的指令(如“將值置位到CPU中”處理),接著執(zhí)行下一個地址中的指令,接下來再執(zhí)行下一個地址中的指令……,像這樣通過連續(xù)執(zhí)行指令,便可執(zhí)行程序。

那么,CPU是如何判斷執(zhí)行指令的順序呢?在單片機中,程序被執(zhí)行的時候“程序計數(shù)器(PC)”的值也同時被更新。存放在CPU內(nèi)的指令地址中,程序計數(shù)器存儲有下一條CPU將要執(zhí)行的指令所在的地址。執(zhí)行了某個地址的指令后,下一個該執(zhí)行哪個地址中的指令呢?這個答案由程序計數(shù)器來告訴你。

一般來說,程序被保存在連續(xù)的地址中,再由CPU按順序執(zhí)行存放在各個地址中的指令。圖1為程序計數(shù)器的示意圖。圖中,假定(1)執(zhí)行地址1000h 中的指令,(2)執(zhí)行地址1000h中的指令后,程序計數(shù)器的値自動增加一個量并顯示出下一個地址1001h,接下來,(3)CPU執(zhí)行地址1001h中的指令。

 


那么,CPU執(zhí)行最初的指令時是一種什么狀況呢?單片機在接通電源或是復位時,如上期所說明的,保存在向量表的復位地址中的値(程序的起始地址)將被轉移到程序計數(shù)器中,該地址中的指令便得到執(zhí)行(請參照上期的圖2)。

⇒關于地址空間及向量表的內(nèi)容,請參照本系列的第五期《單片機與程序設計(上)》。

改變程序的運行路徑―轉移指令

編寫程序時,在執(zhí)行完某個指令的處理后有時必須先執(zhí)行保存“(非連續(xù))的下一個地址”中的指令。此時,程序計數(shù)器的值將被改寫,而所用的指令被稱為“轉移指令”。

圖2所示是轉移指令的示意圖。圖2示例中,(1)地址1000h中存放有轉移指令,即將(2)程序計數(shù)器的值改寫為下一個應執(zhí)行的地址(1100h)的指令。即CPU執(zhí)行完1000h地址的指令(轉移指令)后,接下來不是執(zhí)行1001h地址的指令,而是執(zhí)行(3)1100h地址的指令。

 


另外,在轉移指令中,能夠利用“從當前的程序計數(shù)器的值向前(更大的地址)/向后(更小的地址)移動”的方法來設定程序計數(shù)器的值。

信息的暫時存放處―堆棧

執(zhí)行程序時,在運算過程中僅僅依靠CPU內(nèi)的數(shù)據(jù)保存位置(CPU內(nèi)部寄存器)是不夠的,有時需在主存儲器中暫時存放信息。這種信息的暫時存放位置被稱為“堆棧”,而存放“下一個(暫時)存放的信息地址”的就是“堆棧指針(SP)”。如果一開始就設定好堆棧的地址,那么堆棧指針將自動更新,且總是指示 “下一個(暫時)存放的信息地址”。

⇒CPU內(nèi)部寄存器等單片機的結構請參照《單片機入門(1)》。

如果執(zhí)行“將該信息存放(有時也用“堆積”)在堆棧”的指令,那么被指定的信息將會被寫入堆棧指針所指定的地址中,且堆棧指針的值也將被更新為新的地址(一般為一個小地址)。該情形如圖3所示。如果(1)CPU將信息存放在堆棧指針所指的地址中,則(2)堆棧指針的値將被更新,然后(3)堆棧指針指向下一個存放信息的位置。

 


將存放在堆棧中的信息返回CPU時,也將用到堆棧指針。圖4所示的是將信息返回時的情形。(1)更新堆棧指針的値(更新為一個大的地址),(2)將暫時存放在堆棧中的信息返送回CPU。此時,(3)堆棧指針指向下一個寫入地址(先前將信息返回CPU后空出的地址)。

 


但是堆棧中并非可無限制地保存信息。由于堆棧能使用的范圍僅限于可改寫的被稱為RAM的存儲器。如果信息存放量過多而導致堆棧超出了RAM的區(qū)域,程序將無法正常運行。

理解中斷處理

本期是本系列的最后一期。下面我們將以前介紹過的內(nèi)容進行一個總結,并以此來理解單片機是如何運行(處理)的。

我們將以發(fā)生中斷時的處理為例來進行思考(圖5)。中斷處理就是指在執(zhí)行某個程序的過程中,由于某種原因(產(chǎn)生中斷)而導致開始執(zhí)行完全不同的程序。我們以來自外設功能之一的獨立的看門狗計時器(WDT、所謂的Watch Dog即看門狗的意思)的中斷為例來進行分析。在程序正常運行時獨立的看門狗定時器將什么也不做,但是在程序失去控制,且沒有按必要的步驟進行處理時就會產(chǎn)生中斷。使失去控制的程序停下并讓系統(tǒng)穩(wěn)定停止的處理是由通過中斷開始的程序來執(zhí)行的。中斷處理的流程請參照本系列《中斷功能》的圖2。

⇒關于中斷的結構和處理流程請參照本系列《中斷功能》的內(nèi)容。

⇒關于看門狗定時器請參照本系列的《定時器》的內(nèi)容。

 


(1)首先,在產(chǎn)生中斷時,必須使運行中的程序入棧。

(2)在中斷處理 “入棧”時,將信息存放在堆棧指針指向的地址(堆棧)中。進行中斷處理時存放在堆棧中的信息就是正在執(zhí)行的原先的程序(被中斷的程序)時的程序計數(shù)器的值,即原先的程序執(zhí)行到哪一步的信息(地址)。另外,顯示CPU內(nèi)部狀態(tài)的信息和暫時保存的值也存放在堆棧中。

(3)如果CPU內(nèi)部的信息存放在堆棧中且完成“交付”準備(入棧)后,將執(zhí)行中斷程序。中斷程序與正在執(zhí)行的程序不同且所保存的地址空間也不同,所以程序計數(shù)器的值與原先程序也完全不同。中斷程序的起始位置將被寫入向量表中。起始位置該寫在向量表中的哪一項取決于所產(chǎn)生的中斷。[!--empirenews.page--]

例如,如果存在不可屏蔽中斷(NMI,即CPU不能屏蔽的中斷),那就從寫有NMI項的地址開始進行處理(請參照《單片機與程序設計(上)》的圖2及圖3)。

⇒使用向量表進行處理的流程在本系列《單片機與程序設計(上)》中進行解說。

(4)如上所述,向量表的NMI項中的值(地址)將轉移到程序計數(shù)器中,并從該處開始執(zhí)行。此外,如將數(shù)值設為0而產(chǎn)生錯誤時,或者欲存取到無存儲器的位置時,CPU本身將產(chǎn)生中斷并從向量表中讀取開始處理的地址。此例中,由于在檢測到程序失控時是通過獨立的看門狗定時器進行中斷處理的,所以中斷程序將使系統(tǒng)停止下來。

(5)如為一般的周期性中斷,那么,中斷處理一結束,且在入棧時將存放在堆棧中的“執(zhí)行原先執(zhí)行程序時的信息”返回到CPU。最后返回程序計數(shù)器的值,并結束從中斷返回的處理“出棧”。

開始中斷程序時,通過來自外部的信號或從CPU本身發(fā)出的指令來開始入棧。出棧時使用“來自中斷的出棧指令”,因此編程人員無需考慮“堆棧中存放有什么信息又是按什么順序來存放的?”等問題,僅需一條指令便可進行出棧處理。

結合上期《單片機與程序設計(上)》的內(nèi)容,從執(zhí)行程序的觀點來分析,本期對于CPU中到底產(chǎn)生了什么變化進行了說明。程序存放在地址空間中,且在向量表中保存有起始地址,而且還有將信息暫時存放的被稱為堆棧的內(nèi)容等等……,在進行嵌入式編程時,必須同時考慮這些內(nèi)部動作后再進行編程。如果可通過程序對于更細微的部分發(fā)出指示,且能發(fā)揮出該單片機的能力的話,編程將變得更加容易。

本系列共分4期,本期為最后一期。盡管每一期都只介紹非?;A的內(nèi)容,對于那些內(nèi)容,我們也盡量做到即使對于完全不具備相關知識的讀者也能看得懂。所以,請您也反復閱讀,我們相信您一定會完全理解其內(nèi)容的。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉