ARM指令集(2) 1.跳轉(zhuǎn)指令 在ARM中有兩種方式可以實(shí)現(xiàn)程序的跳轉(zhuǎn):一種是刀‘轉(zhuǎn)指令;另一種是直接向PC寄存器(R15)中寫入目標(biāo)地址值。 通過直接向PC寄存器中寫入目標(biāo)地址值可以實(shí)現(xiàn)在46B地址空間中任意跳轉(zhuǎn),這種跳轉(zhuǎn)指令又稱為長跳轉(zhuǎn)。如果在長跳轉(zhuǎn)指令之前使用MOV LR,PC等指令,則可以保存將來返回的地址值,這樣就實(shí)現(xiàn)了在46B地址空間中的子程序調(diào)用。 在ARM版本5及以上的體系中,實(shí)現(xiàn)了ARM指令集和Thumb指令集的混合使用。指令使用目標(biāo)地址值的bit[0]來確定目標(biāo)程序的類型。bit[0]的值為1時,目標(biāo)程序?yàn)門humb指令;bit[0]值為0時,目標(biāo)程序?yàn)锳RM指令。 在ARM版本5以前的體系中,傳送到PC寄存器中的目標(biāo)地址值的低兩位bits[1∶0]被忽略,跳轉(zhuǎn)指令只能在ARM指令集中執(zhí)行,即程序不能從ARM狀態(tài)切換到Thumb狀態(tài)。非T系列ARM版本5體系不含Thumb指令,當(dāng)程序試圖切換到Thumb狀態(tài)時,將產(chǎn)生未定義指令異常中斷。 ARM跳轉(zhuǎn)指令可以從當(dāng)前指令向前或向后的32MB地址空間跳轉(zhuǎn)。這類跳轉(zhuǎn)指令有以下4種。
上傳時間: 2013-11-20
上傳用戶:妄想演繹師
arm指令集(1) ARM跳轉(zhuǎn)指令可以從當(dāng)前指令向前或向后的32MB地址空間跳轉(zhuǎn)。這類跳轉(zhuǎn)指令有以下4種。 ?。?)B 跳4專指令 B〔條件) (地址) B指令屬于ARM指令集,是最簡單的分支指令。一旦遇到一個B指令,ARM處理器將立即跳轉(zhuǎn)到給定的地址,從那里繼續(xù)執(zhí)行。注意:存儲在分支指令中的實(shí)際值是相對當(dāng)前R15的值的一個偏移量,而不是一個絕對地址。它的值由匯編器來計算,是24位有符號數(shù),左移兩位后有符號擴(kuò)展為32位,表示的有效偏移位為26位(+/- 32 MB)。 ?。?)BL 帶返回的跳轉(zhuǎn)指令 BI,〔條件) (地址) BL指令也屬于ARM指令集,是另一個分支指令。就在分支之前,在寄存器R14中裝載上R15的內(nèi)容,因此可以重新裝載R14到R15中來返回到這個分支之后的那個指令處執(zhí)行,它是子例程的一個基本但強(qiáng)力的實(shí)現(xiàn)。 ?。?)BLX 帶返回和狀態(tài)切換的跳轉(zhuǎn)指令 BLX <地址> BLX指令有兩種格式,第1種格式的BLX指令記作BLX(1)。BLX(1)從ARM指令集跳轉(zhuǎn)到指令中指定的目標(biāo)地址,并將程序狀態(tài)切換到Thumb狀態(tài),該指令同時將PC寄存器的內(nèi)容復(fù)制到LR寄存器中。 BLX(1)指令屬于無條件執(zhí)行的指令。 第2種格式的BLX指令記作BLX(2)。BLX(2)指令從ARM指令集跳轉(zhuǎn)到指令中指定的目標(biāo)地址,目標(biāo)地址的指令可以是ARM指令,也可以是Thumb指令。目標(biāo)地址放在指令中的寄存器<dest>中,該地址的bit[0]值為0,目標(biāo)地址處的指令類型由CPSR中的T位決定。該指令同時將PC寄存器的內(nèi)容復(fù)制到LR寄存器中。 ?。?)BX 帶狀態(tài)切換的跳轉(zhuǎn)指令 BX(條件) (dest) BX指令跳轉(zhuǎn)到指令中指定的目標(biāo)地址,目標(biāo)地址處的指令可以是ARM指令,也可以是Thumb指令。目標(biāo)地址值為指令的值和0xFl·FFFFFF做“與”操作的結(jié)果,目標(biāo)地址處的指令類型由寄存器決定。
上傳時間: 2014-12-27
上傳用戶:laomv123
C51 中的關(guān)鍵字關(guān)鍵字 用途 說明auto 存儲種類說明 用以說明局部變量,缺省值為此break 程序語句 退出最內(nèi)層循環(huán)case 程序語句 Switch 語句中的選擇項char 數(shù)據(jù)類型說明 單字節(jié)整型數(shù)或字符型數(shù)據(jù)const 存儲類型說明 在程序執(zhí)行過程中不可更改的常量值continue 程序語句 轉(zhuǎn)向下一次循環(huán)default 程序語句 Switch 語句中的失敗選擇項do 程序語句 構(gòu)成do..while 循環(huán)結(jié)構(gòu)double 數(shù)據(jù)類型說明 雙精度浮點(diǎn)數(shù)else 程序語句 構(gòu)成if..else 選擇結(jié)構(gòu)enum 數(shù)據(jù)類型說明 枚舉extern 存儲種類說明 在其他程序模塊中說明了的全局變量flost 數(shù)據(jù)類型說明 單精度浮點(diǎn)數(shù)for 程序語句 構(gòu)成for 循環(huán)結(jié)構(gòu)goto 程序語句 構(gòu)成goto 轉(zhuǎn)移結(jié)構(gòu)if 程序語句 構(gòu)成if..else 選擇結(jié)構(gòu)int 數(shù)據(jù)類型說明 基本整型數(shù)long 數(shù)據(jù)類型說明 長整型數(shù)register 存儲種類說明 使用CPU 內(nèi)部寄存的變量return 程序語句 函數(shù)返回short 數(shù)據(jù)類型說明 短整型數(shù)signed 數(shù)據(jù)類型說明 有符號數(shù),二進(jìn)制數(shù)據(jù)的最高位為符號位sizeof 運(yùn)算符 計算表達(dá)式或數(shù)據(jù)類型的字節(jié)數(shù)static 存儲種類說明 靜態(tài)變量struct 數(shù)據(jù)類型說明 結(jié)構(gòu)類型數(shù)據(jù)swicth 程序語句 構(gòu)成switch 選擇結(jié)構(gòu)typedef 數(shù)據(jù)類型說明 重新進(jìn)行數(shù)據(jù)類型定義union 數(shù)據(jù)類型說明 聯(lián)合類型數(shù)據(jù)unsigned 數(shù)據(jù)類型說明 無符號數(shù)數(shù)據(jù)void 數(shù)據(jù)類型說明 無類型數(shù)據(jù)volatile 數(shù)據(jù)類型說明 該變量在程序執(zhí)行中可被隱含地改變while 程序語句 構(gòu)成while 和do..while 循環(huán)結(jié)構(gòu)ANSIC 標(biāo)準(zhǔn)關(guān)鍵字關(guān)鍵字 用途 說明bit 位標(biāo)量聲明 聲明一個位標(biāo)量或位類型的函數(shù)sbit 位標(biāo)量聲明 聲明一個可位尋址變量
標(biāo)簽: C51
上傳時間: 2013-10-08
上傳用戶:waves_0801
MCS-51系列單片機(jī)芯片結(jié)構(gòu):2.1 MCS—51系列單片機(jī)的結(jié)構(gòu)原理2.1.1 MCS-51單片機(jī)邏輯結(jié)構(gòu) MCS-51單片機(jī)的系統(tǒng)結(jié)構(gòu)框圖如圖2.1所示。 圖2.1 MCS-51單片機(jī)的系統(tǒng)結(jié)構(gòu)框圖由圖2.1可以看出,單片機(jī)內(nèi)部主要包含下列幾個部件:u 一個8位CPU;u 一個時鐘電路;u 4Kbyte程序存儲器;u 128byte數(shù)據(jù)存儲器;u 兩個16位定時/計數(shù)器;u 64Kbyte擴(kuò)展總線控制電路;u 四個8-bit并行I/O端口;u 一個可編程串行接口;五個中斷源,其中包括兩個優(yōu)先級嵌套中斷 1. CPU CPU即中央處理器的簡稱,是單片機(jī)的核心部件,它完成各種運(yùn)算和控制操作,CPU由運(yùn)算器和控制器兩部分電路組成。(1)運(yùn)算器電路 運(yùn)算器電路包括ALU(算術(shù)邏輯單元)、ACC(累加器)、B寄存器、狀態(tài)寄存器、暫存器1和暫存器2等部件,運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算。 (2)控制器電路 控制器電路包括程序計數(shù)器PC、PC加1寄存器、指令寄存器、指令譯碼器、數(shù)據(jù)指針DPTR、堆棧指針SP、緩沖器以及定時與控制電路等??刂齐娐吠瓿芍笓]控制工作,協(xié)調(diào)單片機(jī)各部分正常工作。
標(biāo)簽: MCS 51 單片機(jī) 芯片結(jié)構(gòu)
上傳時間: 2013-10-27
上傳用戶:tianyi223
特性及優(yōu)點(diǎn)• 內(nèi)嵌FLASH和CAN的低成本器件– S12系列的低端產(chǎn)品– 16-位的性能8-位的價格• 引腳/封裝– 48/52 LQFP– 80 QFP, 與B&D 系列引腳兼容– Flash從16K-128K,易于產(chǎn)品升級• 8通道10位AD– 7μsec, 10-bit 單次轉(zhuǎn)換時間, 具有掃描模式
標(biāo)簽: Freescale 12C C64 MC9
上傳時間: 2013-10-28
上傳用戶:小寶愛考拉
MC9S08QG8英文資料 The MC9S08QG8 is the newest member of the Freescale 8-bit family of highly integratedmicrocontrollers, based on the high-performance yet low power HCS08 core. The MC9S08QG8is an excellent solution for power-sensitive applications with extended battery life and maximum performance down to 1.8VDC.
上傳時間: 2014-12-28
上傳用戶:dxxx
1.The C Programming Language is a powerful, flexible andpotentially portable high-level programming language. 2.The C language may be used successfully to create a programfor an 8-bit MCU, but to produce the most efficient machinecode, the programmer must carefully construct the C Languageprogram.3.The programmer must not only create an efficient high leveldesign, but also pay attention to the detailed implementation.
標(biāo)簽: FREESCALE 單片機(jī) 編程 教程
上傳時間: 2013-12-27
上傳用戶:huanglang
This application note describes how to decode standard DTMF tones using the minimum number of external discrete components and a PIC. The two examples use a PIC which has an 8 bit timer and either a comparator or an ADC, although it can be modified for use on a PIC which has only digital I/O. The Appendices have example code for the 16C662 (with comparator) and 16F877 (using the ADC). As the majority of the Digital Signal Processing is done in software, little is required in the way of external signal conditioning. Software techniques are used to model the individual elements of a DTMF Decoder IC.
標(biāo)簽: Decoding DTMF with PIC
上傳時間: 2013-11-21
上傳用戶:zhaoke2005
自動檢測80C51串行通訊中的波特率:本文介紹一種在80C51 串行通訊應(yīng)用中自動檢測波特率的方法。按照經(jīng)驗(yàn),程序起動后所接收到的第1 個字符用于測量波特率。這種方法可以不用設(shè)定難于記憶的開關(guān),還可以免去在有關(guān)應(yīng)用中使用多種不同波特率的煩惱。人們可以設(shè)想:一種可靠地實(shí)現(xiàn)自動波特檢測的方法是可能的,它無須嚴(yán)格限制可被確認(rèn)的字符。問題是:在各種的條件下,如何可以在大量允許出現(xiàn)的字符中找出波特率定時間隔。顯然,最快捷的方法是檢測一個單獨(dú)位時間(single bit time),以確定接收波特率應(yīng)該是多少??墒?,在RS-232 模式下,許多ASCII 字符并不能測量出一個單獨(dú)位時間。對于大多數(shù)字符來說,只要波特率存在合理波動(這里的波特率是指標(biāo)準(zhǔn)波特率),從起始位到最后一位“可見”位的數(shù)據(jù)傳輸周期就會在一定范圍內(nèi)發(fā)生變化。此外,許多系統(tǒng)采用8 位數(shù)據(jù)、無奇偶校驗(yàn)的格式傳輸ASCII 字符。在這種格式里,普通ASCII 字節(jié)不會有MSB 設(shè)定,并且,UART總是先發(fā)送數(shù)據(jù)低位(LSB),后發(fā)送數(shù)據(jù)高位(MSB),我們總會看見數(shù)據(jù)的停止位。在下面的波特率檢測程序中,先等待串行通訊輸入管腳的起始信號(下降沿),然后起動定時器T0。在其后的串行數(shù)據(jù)的每一個上升沿,將定時器T0 的數(shù)值捕獲并保存。當(dāng)定時器T0溢出時,其最后一次捕獲的數(shù)值即為從串行數(shù)據(jù)起始位到最后一個上升沿(我們假設(shè)是停止位)過程所持續(xù)的時間。
上傳時間: 2014-08-22
上傳用戶:dajin
The PCA9539; PCA9539R is a 24-pin CMOS device that provides 16 bits of GeneralPurpose parallel Input/Output (GPIO) expansion with interrupt and reset forI2C-bus/SMBus applications and was developed to enhance the NXP Semiconductorsfamily of I2C-bus I/O expanders. I/O expanders provide a simple solution when additionalI/O is needed for ACPI power switches, sensors, push buttons, LEDs, fans, etc.
上傳時間: 2013-11-10
上傳用戶:ewtrwrtwe
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1