ARM處理器的工作模式 ARM處理器狀態 ARM微處理器的工作狀態一般有兩種,并可在兩種狀態之間切換:第一種為ARM狀態,此時處理器執行32位的字對齊的ARM指令;第二種為Thumb狀態,此時處理器執行16位的、半字對齊的Thumb指令。在程序的執行過程中,微處理器可以隨時在兩種工作狀態之間切換,并且,處理器工作狀態的轉變并不影響處理器的工作模式和相應寄存器中的內容。但ARM微處理器在開始執行代碼時,應該處于ARM狀態。 ARM處理器狀態 進入Thumb狀態:當操作數寄存器的狀態位(位0)為1時,可以采用執行BX指令的方法,使微處理器從ARM狀態切換到Thumb狀態。此外,當處理器處于Thumb狀態時發生異常(如IRQ、FIQ、Undef、Abort、SWI等),則異常處理返回時,自動切換到Thumb狀態。 進入ARM狀態:當操作數寄存器的狀態位為0時,執行BX指令時可以使微處理器從Thumb狀態切換到ARM狀態。此外,在處理器進行異常處理時,把PC指針放入異常模式鏈接寄存器中,并從異常向量地址開始執行程序,也可以使處理器切換到ARM狀態。ARM處理器模式 ARM微處理器支持7種運行模式,分別為:用戶模式(usr):ARM處理器正常的程序執行狀態。快速中斷模式(fiq):用于高速數據傳輸或通道處理。外部中斷模式(irq):用于通用的中斷處理。管理模式(svc):操作系統使用的保護模式。數據訪問終止模式(abt):當數據或指令預取終止時進入該模式,可用于虛擬存儲及存儲保護。系統模式(sys):運行具有特權的操作系統任務。定義指令中止模式(und):當未定義的指令執行時進入該模式,可用于支持硬件協處理器的軟件仿真。ARM處理器模式 ARM微處理器的運行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。大多數的應用程序運行在用戶模式下,當處理器運行在用戶模式下時,某些被保護的系統資源是不能被訪問的。 除用戶模式以外,其余的所有6種模式稱之為非用戶模式,或特權模式;其中除去用戶模式和系統模式以外的5種又稱為異常模式,常用于處理中斷或異常,以及需要訪問受保護的系統資源等情況。ARM寄存器 ARM處理器共有37個寄存器。其中包括:31個通用寄存器,包括程序計數器(PC)在內。這些寄存器都是32位寄存器。以及6個32位狀態寄存器。 關于寄存器這里就不詳細介紹了,有興趣的人可以上網找找,很多這方面的資料。異常處理 當正常的程序執行流程發生暫時的停止時,稱之為異常,例如處理一個外部的中斷請求。在處理異常之前,當前處理器的狀態必須保留,這樣當異常處理完成之后,當前程序可以繼續執行。處理器允許多個異常同時發生,它們將會按固定的優先級進行處理。當一個異常出現以后,ARM微處理器會執行以下幾步操作:進入異常處理的基本步驟:將下一條指令的地址存入相應連接寄存器LR,以便程序在處理異常返回時能從正確的位置重新開始執行。將CPSR復制到相應的SPSR中。根據異常類型,強制設置CPSR的運行模式位。強制PC從相關的異常向量地址取下一條指令執行,從而跳轉到相應的異常處理程序處。如果異常發生時,處理器處于Thumb狀態,則當異常向量地址加載入PC時,處理器自動切換到ARM狀態。 ARM微處理器對異常的響應過程用偽碼可以描述為: R14_ = Return LinkSPSR_= CPSRCPSR[4:0] = Exception Mode NumberCPSR[5] = 0 ;當運行于 ARM 工作狀態時If == Reset or FIQ then;當響應 FIQ 異常時,禁止新的 FIQ 異常CPSR[6] = 1PSR[7] = 1PC = Exception Vector Address異常處理完畢之后,ARM微處理器會執行以下幾步操作從異常返回:將連接寄存器LR的值減去相應的偏移量后送到PC中。將SPSR復制回CPSR中。若在進入異常處理時設置了中斷禁止位,要在此清除。
上傳時間: 2013-11-15
上傳用戶:hanbeidang
隨著經濟的快速發展,交通安全成為危及人生安全的重要因素,車輛的限速行駛,將顯著的降低交通事故的發生。文章主要探討了基于MM908E624 單片機來控制車速的技術,介紹了系統的結構及工作原理,實現了節氣門系統位置的手動控制,提高了車輛行駛的安全性。
上傳時間: 2013-10-27
上傳用戶:zhyiroy
該例用于令與 PORTD 口相連的8 個發光二極管前4 個點亮,后4 個熄滅。在調試程序前,應使與PORTD 口相連的8 位拔碼開關拔向相應的位置。
上傳時間: 2014-01-23
上傳用戶:cooran
在單片機應用系統中,為了提高系統的抗干擾能力,目前廣泛采用了監視定量器來監視程序的運行情況,及時發現程序跑飛并將其拉回正軌。然而在很多情況下這種方法并不是很有效的,針對這一問題,提出了通過軟件設計進一步提高系統可靠性的方法,并以MCS一51單片機為例,詳細地說明主程序、中斷服務程序和監視定時器之間如何相制約、相互監視,達到迅速發現程序跑飛的位置并進行相應的錯誤處理的具體方法。
上傳時間: 2013-11-05
上傳用戶:13160677563
P89V51RD2看門狗的啟動和關閉通過WDTC寄存器的SWDT位實現,該位被置位啟動看門狗,該位被清零時關閉看門狗。要使能WDT復位,用戶必須將WDTC寄存器的WDRE位置1。當看門狗使能且發生溢出時,它將會在RST腳產生一個復位脈沖執行復位。為避免看門狗溢出產生復位,用戶需要定期執行“喂狗”操作。執行“喂狗”操作時,在向WDTD寫入重裝值后,必須立即執行看門狗定時器刷新(置位WDT)才能將數據成功寫入WDTD寄存器中,否則數據不能被寫入。
上傳時間: 2013-11-16
上傳用戶:Pzj
WDT可以理解為一種監控型定時器,其獨立于系統單獨工作,如果該定時器溢出時,則系統復位;因此為了保證系統的正常運行,需要在該定時器每次溢出前,對其計數器執行清0操作。根據這一概念,在實際的應用中又衍生出:硬件看門狗與軟件看門狗。硬件看門狗可細分為外部WDT及內部WDT(嵌入MCU內部)。而軟件看門狗一般采用系統中的一個定時器作為WDT,將該定時器設置為最高優先級,并在系統初始化時對該定時器進行初始化,如果系統正常運行,則在相應位置對其計數器進行清0。如果系統在某處卡死/跑飛,該定時器將溢出,并將進入中斷,最后在定時器中斷中執行一些復位操作,使系統恢復正常的工作狀態。
上傳時間: 2014-12-28
上傳用戶:阿譚電器工作室
用EasyFPGA030開發套件,游戲電路是模擬乒乓球比賽,可供兩人游戲。甲乙各持一按鍵作為球拍,實驗板上一行16只發光二極管為乒乓球運動軌跡,用一只亮點代表乒乓球,它可以在此軌跡上左右移動。擊球位置應在左右端第2只發光二極管位置,若擊球鍵恰好當球到達擊球位置時按下,則發出短短的擊球聲,球即向相反方向移動,若按鍵偏早或偏晚,則擊球無效,無球聲發出,球將繼續向前運行至移位寄存器末端,并停止在該位置上不動也可以設計為亮點熄滅,此時判擊球者失敗,記分板上給勝球者加1分,再經過1s后,亮點自動按乒乓球比賽規則移到發球者的擊球位置上,發球者按動擊球按鍵,下一次比賽開始。
標簽: 模擬
上傳時間: 2013-11-12
上傳用戶:hopy
MCU(單片機)對可控硅的控制:交流市電控制――MCU對可控硅的控制 郭江辛 07-23-03在用可控硅對交流市電控制中,主要注意以下幾個方面:一, 同步信號 (弄不好都會產生不均勻的斬波,控制白熾燈表現為燈閃)1) 清楚同步信號在交流周期中的位置,最好在交流零點選取.在一些阻容降壓對MCU 供電電路中,最好直接在交流電源兩端取同步信號(過零點),以避免計算阻容產生的象移(PHASE SHIFT)2) 同步信號要穩定二, 控制信號 (弄不好則可控硅不能通,或一直通)1) 可控硅斷路時,可控硅控制極(GATE)最好是開路,沒有開極的MCU可加如下電路:
上傳時間: 2014-05-05
上傳用戶:comer1123
看門狗定時器的工作原理:WDT 工作原理使能時,WDT 將遞增,直到溢出,或稱“超時”。除非處于休眠或空閑模式,WDT 超時會強制器件復位。為避免WDT 超時復位,用戶必須定期用PWRSAV 或CLRWDT 指令將看門狗定時器清零。如果WDT 在休眠或空閑模式下超時,器件將喚醒并從PWRSAV 指令執行處繼續執行代碼。在上述兩種情況下,WDTO 位(RCON<4>)都會置1,表示該器件復位或喚醒事件是由于WDT超時引起的。如果WDT 將CPU 從休眠或空閑模式喚醒,“休眠”狀態位(RCON<3>)或“空閑”狀態位(RCON<2>)也會置1,表示器件之前處于省電模式。9.2.1 使能和禁止WDT通過FWDTEN(CW1<7>)配置位可將WDT 使能或禁止。FWDTEN 配置位置1 時,使能WDT。這是已擦除器件的默認值。關于閃存配置字寄存器的更多詳細信息,請參見器件數據手冊。
上傳時間: 2014-01-20
上傳用戶:mikesering
單片機的數學基礎:本章基本要求:單片機是現代電子智能儀器儀表及嵌入式系統的主要組成部分,應用非常廣泛,是現代工程技術人員必須掌握的知識之一。本章要求掌握數的進制及其相互轉換、帶符號數的表示方法、溢出的判別方法、ASCII 碼和BCD 碼等單片機的數學基礎知識;掌握單片機的概念、特點、應用范圍、發展歷程等基礎知識;了解常用單片機系列。為后續章節的學習打下基礎。1.1 單片機的數學基礎1.1.1 數的進位制及其相互轉換(1) 數的幾種常用進制數制是人們利用符號來計數的方法,數制有很多種,人們熟悉的是十進制。但由于數在機器中是以器件的物理狀態來表示的,所以一個具有兩種穩定狀態且能相互轉換的器件,就可以用來表示一位二進制數。二進制數的表示是最簡單而且是最可靠的,另外二進制的運算規則也是最簡單的。因此,迄今為止,所有計算機都是以二進制進行算術運算和邏輯運算的。但是在使用二進制編寫程序時既繁鎖又容易出錯,所以人們在編寫程序時又經常用到十進制、十六進制或八進制。下面分別予以介紹。任何一種數制都有兩個要素,即基數和權。基數為數制中所使用的數碼的個數。當基數為R 時,該數制可使用的數碼為0~(R-1)。例如在二進制中基數為2,可使用0 和1 兩個數碼。在進行運算時按逢R 進一,借1當R的規則進行。權是數制中某一數位上單位數的大小,它是一個指數,底是基數R,冪是數碼的位置號,數碼的位置號從0 開始。將一個數中某一位的數碼與該位的權相乘,即為該位數碼的數值。
標簽: 單片機
上傳時間: 2013-11-16
上傳用戶:mahone