DSP28335汇编教程

合集下载

DSP 28335 教程 7

DSP 28335  教程 7

PCLKCR0.ADCENCLK = 1
ADCTRL3 ADCCLKPS bits
0110b
FCLK (12.5 MHz)
ADCTRL1 CPS bit
0b
ADCCLK =
FCLK/(CPS+1)
ADCCLK (12.5 MHz) ADCTRL1
To ADC pipeline sampling window
Reset SEQ2
0 = no action 1 = immediate reset SEQ2 to “initial state”
FCLK = HSPCLK/(2*ADCCLKPS)
ACQ_PS bits
0111b
sampling window = (ACQ_PS + 1)*(1/ADCCLK)
Note: Maximum F2833x ADCCLK is 25 MHz, but INL (integral nonlinearity error) is greater above 12.5 MHz. See the device datasheet for more information.
Interrupt Enable (SEQ1)
0 = interrupt disable 1 = interrupt enable
Interrupt Mode (SEQ1)
0 = interrupt every EOS 1 = interrupt every other EOS
ADC Control Register 2
Learning Objectives

Understand the operation of the Analog-to-Digital converter (ADC) Use the ADC to perform data acquisition

DSP 28335 教程 12

DSP  28335  教程 12

Idle-Line Wake-Up Mode


Idle time separates blocks of frames Receiver wakes up when SCIRXD high for 10 or more bit periods Two transmit address methods Deliberate software delay of 10 or more bits Set TXWAKE bit to automatically leave exactly 11 idle bits
MSB transmitted first
SPIDAT - Processor #1
11001001XXXXXXXX

Received data of less than 16 bits are right justified
User software must mask-off unused MSB’s



Allows numerous processors to be hooked up to the bus, but transmission occurs between only two of them Idle-line or Address-bit modes Sequence of Operation
Majority Vote SCICLK (Internal) SCIRXD
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
Start Bit
Falling Edge Detected

TMS320F28335教程

TMS320F28335教程
• 以达到0.05mW/MIPs的最低
功耗性能比而具有最长的电池 寿命。
• 最佳的代码密度 • 兼容C54x™ DSP软件
DSP技术应用
Broadband Infrastructure DSP
TI C64x™ DSP 核心: 世界上具有最高性能的 DSPs
• 工作频率将达到1.1GHz • 最好的DSP编译器, 便于
DMA Interrupt Management
C28xTM 32-bit DSC
32x32-bit Multiplier
32-bit Timers (3)
RealTime JTAG
RM W
Atomi c
ALU 32-bit
Floatin g-Point Unit
2 QEP 12-bit ADC
得益于F28335浮点运算单元,从 而简化
软件开发,缩短开发周期。降低开发成本。
DSP技术应用
采用高性能的静态CMOS技术 主频达150MHZ(6.67ns) 低功耗设计,1.9V内核电压,3.3V I/O电压 Flash编程电压为3.3V 支持JTAG边界扫描接口 高性能32位CPU 16*16位和32*32位的乘法累加操作 16*16位的双乘法累加器 哈佛总线结构
Flash RAM
▪ Configurable 16- or 32-bit EMIF 控制外设
Memory Bus
TMS320F28335
Boot ROM
12 PWM (6 HRPWM)
6 CAP
▪ PWM outputs interfaces for three
3-phase motors
DSP技术应用
TMS320F28335概述

DSP 28335 教程 13 BIOS

DSP  28335 教程  13 BIOS



Using Software Interrupts - SWI

Make each algorithm an independent software interrupt
SWI scheduling is handled by DSP/BIOS


HWI function triggered by hardware SWI function triggered by software
Lab Objective: Use DSP/BIOS Configuration Tool to:

Handle system memory and interrupt vectors Create a .tcf file
Learning Objectives

Introduction to DSP/BIOS DSP/BIOS Configuration Tool Scheduling DSP/BIOS threads Periodic Functions Real-time Analysis Tools Flash Programming with DSP/BIOS
DSP/BIOS
Module 12 TMS320C28x™ MCU Workshop
T TO
Technical Training Organization
Copyright © 2009 Texas Instruments. All rights reserved.
Learning Objectives

To create a new memory area:

Right-click on MEM and select insert memory Enter your choice of a name for the memory Right-click on the memory, and select Properties

DSP 28335 教程 附录4 DSP的C语言PPT课件

DSP  28335  教程  附录4  DSP的C语言PPT课件
C Programming
Appendix D TMS320C28x™ MCU Workshop
T TO
Technical Training Organization
Copyright © 2009 Texas Instruments. All rights reserved.
Learning Objectives
unsigned int
16
short (same as int or smaller) 16
unsigned short
16
Usually 0 .. 255, but can hold 16 bits -32K .. 32K, 16 bits signed 0 .. 64K, 16 bits unsigned same as int same as unsigned int
addresses.
Setting Up the Stack
Linker command file:
SECTIONS
{
.stack :>
RAM align=2
...
}
Boot.asm sets up SP to point at .stack
The .stack section has to be linked into the low 64k of data memory. The SP is a 16-bit register and cannot access addresses beyond 64K.
long (same as int or larger) 32 -2M .. 2M, 32 bits signed
unsigned long
32 0 .. 4M, 32 bits unsigned

DSP 28335 教程 附录2 寻址

DSP  28335  教程  附录2  寻址

Immediate Addressing – “#”
one word instruction
OPCODEBiblioteka 8-bit OPERAND
two word instruction
OPCODE 16-bit OPERAND

Fixed value part of program memory instruction Supports short (8-bit) and long (16-bit) immediate constants Long immediate can include a shift Used to initialize registers, and operate with constants
Direct Addressing – Example
Z=X+Y
x .usect .sect MOVW MOV ADD MOV “samp”,3 “code” DP,#x AL,@x AL,@y @z, AL
0 0 0 1 F F 0000 0000 0000 0001 1111 1111
DP offset
Data Page Offset 00 0000 0000 0000 00 00 0000 00 0000 0000 0000 00 11 1111 00 0000 0000 0000 01 00 0000 00 0000 0000 0000 01 11 1111 00 0000 0000 0000 10 00 0000 00 0000 0000 0000 10 11 1111 11 1111 1111 1111 11 00 0000 11 1111 1111 1111 11 11 1111

DSP 2835 教程 附录3 DSP汇编语言

DSP  2835  教程  附录3  DSP汇编语言

y
sum:
AR3 COUNT

Program Control ALU / Multiply Operations Data Move


Logical Operations
Special Instructions
ALU and Accumulator
16/32 data mem,
Product (32)
16/32 bit registers
MUX
8/16 Imm
ALU and Barrel Shifter
ST0, ST1
ACC AH (31-16) AL (15-0)
AH.MSB AH.LSB AL.MSB AL.LSB
Accumulator - Basic Math Instructions
Format
loc16,ACC <<shift loc16,ACC <<shift
MOV ADD SUB AND OR XOR AND NOT NEG MOV
Ax, loc16 Ax, loc16 Ax, loc16 Ax, loc16 Ax, loc16 Ax, loc16 Ax,loc16,#16b Ax Ax loc16,Ax
Function Short Branch Fast Short Branch Fast Branch Absolute Branch Dynamic Branch SB SBF BF LB LB BAR Instruction 8bit,cond 8bit,EQ|NEQ|TC|NTC 16bit,cond 16bit,cond 22bit *XAR7 16bit,ARn,ARn,EQ|NEQ Cycles T/F Size 7/4 4/4 7/4 4/4 4 4 1 1 2 2 2 1

DSP 28335 教程 附录4 DSP的C语言

DSP  28335  教程  附录4  DSP的C语言

SP 0x400 Caller’s local (reset) vars
Arguments passed on stack Return address Function return addr Temp results
64K 4M
Setting Up the Stack

Boot.asm sets up SP to point at .stack
C Programming
Appendix D TMS320C28x™ MCU Workshop
T TO
Technical Training Organization
Copyright © 2009 Texas Instruments. All rights reserved.
Learning Objectives
FUNCTION across blocks
}
{ . . .
FILE across functions
PROGRAM across files
}
FILE2.C { . . . }
Optimization Performance
–o0
LOCAL
–o1 –o2
FUNCTION
–o3
FILE
Performs control-flow-graph simplification Allocates variables to registers Performs loop rotation Eliminates unused code Simplifies expressions and statements Expands calls to functions declared inline Performs local copy/constant propagation Removes unused assignments Eliminates local common expressions Default (-o) Performs loop optimizations Eliminates global common sub-expressions Eliminates global unused assignments Removes all functions that are never called Simplifies functions with return values that are never used Inlines calls to small functions Identifies file-level variable characteristics

DSP 28335 教程 附录5 浮点运算单元

DSP  28335  教程  附录5  浮点运算单元


Insert NOPs or other non-conflicting instructions between operations
Floating-Point Unit Pipeline Delay Slots

Instructions requiring delay slots have a ‘p’ after their cycle count 2p stands for 2 pipelined cycles


Simplifications for the C28x floating-point unit

Negative zero is treated as positive zero

Denormalized values are treated as zero Not-a-number (NaN) is treated as infinity Round-to-Zero Mode Supported (truncate) Round-to-Nearest Mode Supported (even)
Math Conversion MPYF32, ADDF32, SUBF32, MACF32 I16TOF32, F32TOI16, F32TOI16R, etc… 2p cycles One delay slot 2p cycles One delay slot Single cycle No delay slot
ACC P XT XAR0 XAR1
Extended for FPU
FPU Registers
R0H
R1H R2H R3H R4H R5H R6H R7H DP SP ST0 ST1 IER IFR DBGIER STF RB

tms320f28335编程实例

tms320f28335编程实例

tms320f28335编程实例【原创实用版】目录1.TMS320F28335 简介2.TMS320F28335 编程实例的基本步骤3.TMS320F28335 编程实例的具体实现4.总结正文【1.TMS320F28335 简介】TMS320F28335 是一款 32 位定点数字信号处理器(DSP),广泛应用于各种实时控制系统中,如通信、音频处理、图像处理等领域。

TMS320F28335 具有高速、高效的运算能力,可实现大规模数据的快速处理。

同时,它还具有丰富的外设接口,方便与其他硬件设备相连。

【2.TMS320F28335 编程实例的基本步骤】编写 TMS320F28335 编程实例的基本步骤如下:(1)了解 TMS320F28335 的硬件结构和功能,确定处理器的工作模式。

(2)编写程序,实现所需功能。

编写程序时,需要使用 TMS320F28335 的编程语言,如 C 语言或汇编语言。

(3)将编写好的程序下载到 TMS320F28335 处理器中,进行运行测试。

(4)根据实际运行情况,对程序进行调试和优化,以满足实际应用需求。

【3.TMS320F28335 编程实例的具体实现】以一个简单的音频处理为例,具体实现如下:(1)首先,了解 TMS320F28335 的硬件结构,确定工作模式。

在本例中,我们使用 TMS320F28335 作为音频信号处理器,需要启用相应的外设接口,如串行通信接口、音频输入输出接口等。

(2)编写程序。

本例中,我们需要编写一个音频信号处理算法,如音频放大。

首先,我们需要配置 TMS320F28335 的音频输入输出接口,使其与外部音频设备相连。

然后,编写音频信号放大的算法,实现音频信号的实时处理。

(3)将编写好的程序下载到 TMS320F28335 处理器中,进行运行测试。

在测试过程中,我们需要对音频输入输出接口进行配置,以满足实际应用需求。

同时,通过观察音频信号处理结果,评估算法的性能。

DSP 28335 教程 10

DSP 28335  教程 10

CH0 CH0 CH0 CH1 CH1 CH1 CH2 CH2 CH2 CH3 CH3 CH3 CH4 CH4 CH4
The State Machine ‘Wrap’ Function
Provides another resource to manipulate the address pointers
6-channels McBSP-A
Triggers
McBSP-B
SEQ1INT / SEQ2INT MXEVTA / MREVTA MXEVTB / MREVTB XINT1-7 / 13 TINT0 / 1 / 2
PWM1 PWM2 PWM3 PWM4 PWM5 PWM6
DMA Definitions
Wait for event to start/continue transfer
Addr 0xF000 0xF001 0xF002 0xF003
Value 0x1111 0x2222 0x3333 0x4444
Read/Write Data
Moved “Burst Size” Words? Y Moved “Transfer Size” Bursts? Y

Transfer Size

16-bit ‘N-1’ value - exceeds any practical requirements
Simplified State Machine Operation
The DMA state machine at its most basic level is two nested loops
Data Binning Example
Objective: Bin 3 samples of 5 ADC channels, then interrupt the CPU

DSP 28335 教程 5

DSP  28335 教程 5

• • •
INT1.8 1
• • •
INT1
96
28x Core Interrupt logic INT1 – INT12
INTM
12 Interrupts
IFR
IER
28x
Core
INT12.x interrupt group
INT13 (TINT1 / XINT13) INT14 (TINT2) NMI
(x = 1 to 12)
6 5 4 3 2 1 0
reserved
INTx.8 INTx.7 INTx.6 INTx.5 INTx.4 INTx.3 INTx.2 INTx.1
PIE Interrupt Acknowledge Register (PIEACK)
15 - 12 11 10 9 8 7 6 5 4 3 2 1 0
/*** Interrupt Enable Register ***/ extern cregister volatile unsigned int IER;
IER |= 0x0008;
IER &= 0xFFF7;

//enable INT4 in IER
//disable INT4 in IER
Compiler generates atomic instructions (non-interruptible) for setting/clearing IER Register cleared on reset
Interrupt Global Mask Bit
Bit 0
ST1

INTM
INTM used to globally enable/disable interrupts:

DSP 28335 教程 9

DSP  28335  教程 9

Advantages


Easy to write code No scaling required
Somewhat higher device cost May offer insufficient precision for some calculations due to 23 bit mantissa and the influence of the exponent
.
Number Line Insight
Distributions
Floating-Point: non-uniform distribution (variable precision)
+
0
-
IQ Fractions: uniform distribution (same precision everywhere)

rts2800_fpu32.lib comes with compiler C28x_FPU_FastRTS.lib on TI web, #SPRC664 improved performance Strongly Recommended

fast RTS lib (optional)

// Convert unsigned 16-bit result to 32-bit float.
// Scale result by 1/4096. Gives value of 0 to ~1. // Scale result by AdcFsVoltage. }
Gives value of 0 to 4095.
31 30 1 bit sign 23 22 23 bit mantissa (fraction) then v = NaN then v = [(-1)s]*infinity then v = [(-1)s]*[2(e-127)]*(1.f) then v = [(-1)s]*[2(-126)]*(0.f) then v = [(-1)s]*0 0

DSP 28335 教程 2

DSP 28335 教程 2

reserved XINTF Zone 6 (1Mw) XINTF Zone 7 (1Mw) FLASH (256Kw)
PF 0 (6Kw)
reserved
0x300000
0x004000 XINTF Zone 0 (4Kw) 0x005000 PF 3 (4Kw) 0x006000 PF 1 (4Kw) reserved 0x007000 PF 2 (4Kw) 0x008000 L0 SARAM (4Kw) 0x009000 L1 SARAM (4Kw) 0x00A000 L2 SARAM (4Kw) 0x00B000 L3 SARAM (4Kw) 0x00C000 L4 SARAM (4Kw) 0x00D000 L5 SARAM (4Kw) 0x00E000 L6 SARAM (4Kw) 0x00F000 L7 SARAM (4Kw) 0x010000



C28x Block Diagram
Program Bus ePWM Sectored Flash XINTF
A(19-0)
Boot RAM ROM
DMA 6 Ch.
eCAP eQEP 12-bit ADC
DMA Bus
D(31-0)
Watchdog
PIE Interrupt Manager 3
Order of results are as written in source code

ቤተ መጻሕፍቲ ባይዱ
Programmer need not worry about the pipeline
C28x + FPU Pipeline
Fetch C28x Pipeline Decode Read Exe Write

DSP28335教程14-14页精选文档

DSP28335教程14-14页精选文档
TI Workshops Download Site Signal Processing Libraries TI Development Tools Additional Resources
Internet Product Information Center
TI Workshops Download Site
Device information Application notes Technical documentation
my.ti News and events Training
Enroll in Technical Training: ti/sc/training
USA - Product Information Center (PIC)
Available through TI authorized distributors and on the TI web
Part Number:
TMDSPREX28335
C2000 Digital Power Experimenter Kit
DPEK includes
2-rail DC/DC EVM using TI PowerTrain™ modules (10A)
Small form factor (9cm x 2.5cm) with standard 100-pin DIMM interface
analog I/O, digital I/O, and JTAG signals available at DIMM interface
GalvaniБайду номын сангаасally isolated RS-232 interface
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DSP28335汇编教程当硬件执行指令时,寻找指令所指定的参与运算飞操作数的方式——寻址方式。

根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。

汇编指令是可执行指令,每一条指令对应一条机器码,用来控制处理器仲的执行部分进行各种操作。

在本章节当中将主要以基于C28x的DSP芯片为例,为读者讲解DSP的寻址方式和汇编指令系统,其中大部分内容也可适用于其他Ti公司的DSP产品。

6.1汇编语言指令集概述在学习C28x系列DSP的寻址方式和汇编指令指令之前,先来对一些基础的知识进行讲解一下先,在汇编程序当中开发人员会常常使用到许多的特殊符号和标志,它们都具有特殊的含义,在学习汇编之前读者们必须先理解这些符号和标志含义,在这里会对其中最常用最重要的操作数符号和寄存器经行详细说明。

在进行汇编讲解之前先来了解一下开发的核心——CPU。

在TMS320C2000系列中,CPU 内核为:C20x/C24x/C240x:C2xLP:C27x/C28x:C27x、C28x这些CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具有最佳兼容性。

可通过状寄存器STl的位OBJMODE和位AMODE的组合,选定模式。

C28x芯片具有3种操作模式:1.C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址方式和指令系统,因此,一般应使C28x芯片工作于该种模式。

2.C27x目标——兼容模式:在复位时,C28x的CPU处于C27x目标-兼容模式。

在该模式下,目标码与C27xCPU完全兼容,且它的循环—计数也与C27xCPU兼容。

3.C2xLP源——兼容模式:该模式允许用户运行C2xLP的源代码,这些源代码是用C28x代码生成工具编译生成的。

在下面的讲解当中会牵涉到模式的转换,希望读者要搞清楚每一个模式的对应关系。

本节假设条件为芯片工作于C28x模式(OBJMODE=1,AMODE=0)。

复位后,通过执行指令C28OBJ或者SETC OBJMODE将ST1中的OBJMODE位置1,芯片即可工作于C28x模式。

6.1.1 DSP中的操作数汇编语言离不开操作符和操作数,操作符可以认为就是CPU的指令或者编译器上的伪指令,操作数是指令执行过程中的参与者,也可以说操作数就是指令所控制的对象。

如表6-1,表6-2和表6-3对指令中常用到的一些操作数符号进行说明在应用程序的开发过程当中少不了的就是算术运算还有比较运算,当然在汇编语言编程的时候也是一样的,在汇编语言当中进行算术运算的操作并不像C/C++那样直观、方便,需要掌握众多的助记符才行,接下来会通过表6-2来说明一下关于算术方面的助记符以及与其表6-2影响指令的判断条件的说明在汇编程序当中实现乘法操作时一件非常不简单的事,由于是属于纯寄存器操作,因此,开发人员需要准备保存乘法结果的地址,在表6-1当中讲解操作数符号的时候有一个关于乘表6-3 PM与结果保存方式的关系6.1.2汇编语法指令描述前一小节提到过,汇编指令一般都由操作符和操作数组成,操作符也被称为指令助记符,它是指令中的关键字,表示本条指令操作类型,不能省略。

操作数可以省略,也可以有很多,但各操作数之间要用“,”分开。

指令助记符与操作数之间要用空格分开。

ARn:n为数值0~7,ARn指定下次的辅助寄存器。

ind:选择一下7种符号之一:*,*+,*-,*0+,*0-,*BR0+,*BR0-(兼容模式使用)。

#:立即寻址方式中常用的前缀。

数值前面带“#”,表示该数值为一个立即数。

<<左移。

>>右移。

@:当使用C28x语法时,64位字段数据与通过“@”符号来表示,一帮组程序员理解当前正在使用哪种寻址模式。

@@:当使用C28x语法时,128位字段数据页通过“@@”符号来表示。

loc16:16位寻址方式指定地址单元的内容。

loc32:32位寻址方式指定地址单元的内容。

#16bitsigned:16位有符号立即数。

6.2寻址方式通过6.1节当中读者们应当对汇编语言编程有了一定的了解,仅仅了解了汇编语言的操作符还是不过的,接下来就从汇编语言最根本的开始学习——寻址方式寻址方式就是寻找操作数或者操作数地址的方式,在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式或堆栈存取方式。

几乎所有的计算机,在内存中都采用地址指定方式。

当采用地址指定方式时,形成操作数或指令地址的方式称为寻址方式。

C28x系列DSP的指令集采用7种寻址方式:1.直接寻址方式:DP(数据页指针),在此方式中,16位的DP寄存器被当做一个固定的页指针,讲指令中提供6未或者7位的地址偏移量与DP寄存器中的值组合起来就构成完整的地址。

当访问具有固定地址的数据结构时,这种寻址方式特别有用,例如,外设寄存器和C/C++中的全局及静态变量。

2.堆栈寻址方式:SP(堆栈指针),在这种方式下,16位的SP指针被用来访问软件堆栈的内容。

C28x系列的堆栈是从低端地址想高端地址生长的,SP总是指向下一个空的存储单元。

当需要访问堆栈中的数据时,SP的值减去指令仲提供的6位偏移量作为被访问数据的地址和,而堆栈指针将在入栈后加1,出栈前减1.3.间接寻址方式:XAR0到XAR7(辅助寄存器指针),在该方式下,32位的XARn寄存器被当做一般的数据指针来使用个。

通过相应的指令可以实现操作后XARn加1、操作前/后减1,还可以配合3位偏移量或者其他16位寄存器实现变址寻址。

4.寄存器寻址方式:这种方式下,另一个寄存器可以是该次访问的资源或者目的操作数。

这样在C28x中既能实现寄存器到寄存器的操作。

5.数据/程序/IO空间寻址方式:在这种方式下,存储器中操作数的地址被包含在指令中。

6.程序空间间接寻址方式:某些指令可以通过指针来访问位于程序空间中的存储器操作数。

由于在C28xCPU中存储器是统一寻址的,所以单周期内可以读取两个操作数。

7.字节寻址方式:该方式能访问到股东地址单元的最低有效位和最高有效位。

提示:对于基于C28x的DSP芯片来说,以上的7种寻址方式仲出了IO空间寻址方式外其他的都支持。

C28x的大多数指令都是利用操作符中的8位字段来选择寻址方式和对寻址方式进行修改.在C28x的指令系统中,这个8位字段用于以下寻址方式:1.loc16:为16位数据访问选择直接/堆栈/间接/寄存器寻址方式。

[loc16]表示loc16这种寻址方式对应的16位数据。

2.loc32:为32位数据访问选择直接/堆栈/间接/寄存器寻址方式。

[loc32]表示loc32这种寻址方式对应的32位数据。

在直接寻址方式下,loc16/loc32指的是一个用标号表示的地址,这个地址由16位的DP寄存器和操作码内8位字段的6位或7位偏移量共同决定。

[loc16]/[loc32]表示这个地址对应的16/32位数据。

以上7种寻址方式都与“loc16/loc32”组合起来使用。

在间接寻址方式下,loc16/loc32表示放在辅助寄存器(XAR0~XAR7)中的一个地址,[loc16]/[loc32]表示这个地址对应的16/32位数据。

在堆栈寻址方式下,loc16/loc32表示堆栈指针指向的一个堆栈单元,[loc16]/[loc32]表示这个单元内的16/32位数据。

在寄存寻址方式下, loc16/loc32表示一个16位或32位寄存器(如ACC、P、XT、AH 等), [loc16]/[loc32]表示这些寄存器内的16/32位数据。

由于C28x提供了多种寻址方式,因此用寻址方式选择位(AMODE)来选择8位字段(loc16/loc32)的解码。

该位属于状态寄存器ST1。

寻址方式可以大致归类如下:(1)AMODE=0——该方式是复位后的默认方式,也是C28x的C/C++编译器使用的方式。

这种方式与C2xLP CPU的寻址方式不完全兼容。

数据页指针偏移量是6位(在C2xLP CPU 中是7位),并且不支持所有的间接寻址方式。

(2)AMODE=1——该方式包括的寻址方式完全与C2xLP 器件的寻址方式兼容。

数据页指针的偏移量是7位并支持所有C2xLP 支持的间接寻址方式。

编译器总是假定AMODE=0,所以它只使用对AMODE=0有效的寻址模式。

而汇编器可以通过设置命令行选项实现默认AMODE=0或者AMODE=1。

v28:假定AMODE=0(C28x寻址方式)v28 – m20:假定AMODE=1(与C2xLP全兼容的寻址方式)在文件中使用内嵌伪指令:. c28_amode :告诉汇编器后面的代码段都假定AMODE=0(C28x寻址方式). lp_amode :告诉汇编器后面的代码段都假定AMODE=1(与C2xLP全兼容的寻址方式)6-4。

表6-4 loc16/loc32的寻址方式6.2.1直接寻址方式指令字中包含数据存储器的7位便宜地址与基地址构成16位数据存储器地址,基地址由数据页指针DP或堆栈指针SP提供,具体由ST1的CPL决定。

64K数据存储器包含512个数据页指针DP,DP的范围记为0~511.状态寄存器ST0内的第9位数据指针中的值来确定当前数据页。

具体的直接寻址方式如图6-1所示。

15~8位7位6~0位图6-1直接寻址方式表6-5直接寻址方式下loc16/loc32的语法说明假设需要访问数据空间地址0000105DH:(1)AMODE=0:使用直接寻址方式访问数据存储器时,必须首先对DP进行设置以确定数据页面,然后再书写进行某种操作的指令,该指令的操作数将确定数据页面内部的特定偏移单元。

其步骤如下:1. 设置数据页面将当前数据页面载入DP。

MOVW DP,#0041H ;初始化数据页面指针2. 设置偏移量给出6位偏移量作为指令的一个操作数。

ADD AL,@1Dh ; AL与当前数据页面内偏移1DH单元的内容相加,结果存入到AL中如图6-2所示直接寻址下AMODE为0的地址分配16bit6bit图6-2直接寻址下AMODE为0的地址分配(1)AMODE=1:1选择兼容选址模式SETC AMODE ;令AMODE=1.lp_amode ;通知编译器AMODE=12设置数据页面讲当前数据页面载入DPMOVW DP,#0040H ;初始化数据页面指针3设置偏移量给出7位偏移量作为指令的一个操作数。

ADD AL,@@5Dh ;AL与当前数据页面内偏移量5DH单元的内容相加,结果存入到AL中如图6-3所示直接寻址下AMODE为1的地址分配。

15bit7bit图6-3直接寻址下AMODE为1的地址分配6.2.2堆栈寻址方式在堆栈寻址方式下,16位的SP指针被用于访问软件堆栈的信息。

相关文档
最新文档