DSP课件第6章 汇编语言.ppt_第1页
DSP课件第6章 汇编语言.ppt_第2页
DSP课件第6章 汇编语言.ppt_第3页
DSP课件第6章 汇编语言.ppt_第4页
DSP课件第6章 汇编语言.ppt_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 汇编语言,6.1 汇编语言格式,TMS320汇编语言源程序由源语句组成。源语句包括汇编指令、伪指令、宏指令。 源语句的一般格式为 标号: 助记符 操作数1,操作数2, ;注释 标号域 助记符域 操作数域 注释域 注:“ ”表示该项可缺省。 例6.1 SYM1 .set 2 ;符号SYM1等于2 BEGIN: LDP SYM1 ;将2装入DP .word 016h ;初始化一个字为16h,1、标号域,标号包含132个字母、数字、字符(AZ,a2,09,及$),可识别符号的大小写,且规定第一个字符不能是数字。 标号可以后随冒号(:),冒号并不作为标号的一部分被处理。 如果不使用标号,则第一

2、个字必须是空格或分号或星号。 当选用标号时,其值是段程序计数器(SPC)的当前值,标号指向与它们相关联的语句。例如,如果用.word伪指令初始化几个字,那么标号将指向第一个字。 行号 SPC 目标代码 源语句 10 0040 000A START:.word 0Ah,3,7 0041 0003 0042 0007 标号也可以单独出现在行中,此时它指向下一行中的指令。如: 3 0050 HERE: 4 0050 0003 .word 3 ;此行SPC无增量,2、助记符域,助记符是源语句中的关键部分,不能缺省,它表示本指令的操作类型。助记符不能从源语句的第一列开始,如果从第一列开始,将被解释为标号

3、。 助记符包括下列操作码之一: (1)汇编指令(例如ABS,MPY,SPH); (2)伪指令(例如.data,.fist,.set); (3)宏指令(例如.macro,.mexit)。,3、操作数域,操作数域是跟在助记符域后面的操作数列表,可缺省。如果多于两个操作数,则只用逗号隔开。操作数可以是常数、符号和表达式。,4、注释域,注释域可以从源语句行的任一列开始并直至本行的末尾,即仅包括注释的源语句是有效的。如果它从第一列开始则可以用分号(;)或星号(*)开始;在行的其他地方开始的注释,必须以分号开始。 上述各个域必须用一个或多个空格分开。,6.1.1 常数、字符串和符号,(1)二进制整数:以字

4、母B(或b)结尾,由二进制数字(0,1)组成的数字串。数字串长度长度最多可达16个二进制数字,如01000110B。 (2)八进制整数:以字母Q(或q)结尾,由八进制数字(07)组成的数字串。数字串长度最多可达6个八进制数字,如100000Q。 (3)十进制整数:以字母D(或d)结尾(也可缺省),十进制整数由09数字组成,范围从-3267865535,如-30000。 (4)十六进制整数:以字母H(或h)结尾,由十六进制数字09和AF(或af)组成的数字串。数字串长度最多可达4个十六进制数字。 (5)字符常数:包含在单引号中的一个或两个字符的串。每个字符表示为8位ASCII码,如a定义字符a,

5、并在内部用61H表示。 (6)汇编时间常数:用.set伪指令对符号进行赋值,赋值的内容不同,汇编时符号所表达的含义也就不同。,1、常数,例如,用.set向符号赋值,则符号成为常数,为了在表达式中使用此常数,赋予它的值必须是绝对值。 SHIFT .set 3 LACC *,SHIFT,AR1 也可用.set将寄存器名赋予符号常数,此时符号与寄存器为同一词,如: AUXR1 .set AR1 LACC *,0,AUXR1,2、字符串,字符串是包含在双引号内的一串字符,双引号是字符串的一部分。串的最大长度是变化的,并由每一个使用字符串的伪指令定义。字符在内部被表示为8位ASCII字符,如:“samp

6、le program”定义13个字符的字符串sample program。 字符串用于下列场合: (1).copy “filename”中的文件名; (2).sect “section name”中的段名; (3).byte “chasing”中数据初始化伪指令; (4).string伪指令的操作数。 字符串与字符常数不同,字符常数代表一个单独的整数值,而字符串是字符的列表。,3、符号,符号被用做标号、常数及替代符号。符号名最多可由32个字母和数字混合组成(AZ,az,09,$和_)。符号的第一个字符不能是数字,符号内不能有空格。用户定义的符号分大小写,例如汇编时ABC,Abc及abc被识别为

7、3个不同的符号。,表达式由运算符、常数和符号组成。有效表达式值的范围是 -32768+32767。,6.1.2 表达式和运算符,表达式内使用的运算符的优先级见下表:,高,6.2 宏指令,为了简化汇编语言源程序的书写,常常将一些频繁出现的程序段定义为宏指令。 TMS320系列DSP汇编器支持宏语言。使用宏的过程要经过以下3个步骤。 (1)定义宏:用户在使用宏之前必须先定义宏。在程序的任何地方都可以定义一个宏。一般是在源文件开始处定义,或者在.include.copy文件中定义,或者在宏库中定义。 宏定义语句格式如下: 宏名 .macro形式参数1,形式参数2,形式参数n . . .mexit .

8、endm,(2)调用宏:在定义了宏以后,就可以在源程序中将宏的名字作为操作码来调用。 格式: 宏名 实参数1,实参数2 ,实参数n (3)展开宏:汇编器在对源文件进行汇编时,对调用的宏进行展开。在展开过程中,汇编器用宏体取代宏调用语句,宏体中的形式参数(替代符号)用实际参数代替。 如果某个形式参数没有对应的实参数为其赋值,该形式参数将被空串(“ ”)代替。 如果实参数的个数多于形式参数,则余下的实参数将赋给最后一个形式参数(用逗号隔开)。 如果要把一串变量赋给一个形式参数,或者把一个逗号(或分号)传给一个形式参数,就必须用引号将它们引起来。 汇编时,汇编器先用实参数代替形式参数并展开宏,然后把

9、源语句汇编为目标代码,并输出到列表文件中。,例 宏定义: parms .macro x,y,z a=x b=y c=z .endm 调用宏: 汇编时展开宏 parms 100,200 ;a=100 ;b=200 ;c=“ ” parms “100,200,300”,55,66,77 ;a=“100,200,300” ;b=55 ;c=66,77,6.3 通用目标文件格式,CCS开发环境可以看成是一个大的软件包,里面包含了源代码编辑器,以及工程文件组织、编译和调试等一切功能模块。该软件包里,shell程序可以完成3个功能:编译、汇编和链接。shell程序缺省在C盘安装时,被安装在C:tic240

10、0cgtool子目录下,对应的文件名为dspcl.exe。,(1)编辑器:包括分析器、优化器、代码产生器。把C语言程序编译成汇编语言程序。 (2)汇编器:把汇编语言源代码或C语言已经编译成汇编语言代码进行汇编,以产生COFF目标文件。 (3)链接器:将文件链接,产生可执行的目标文件。,使用汇编器可以将汇编语言源程序汇编为目标文件,用链接器将若干个目标文件连接成个可被芯片执行的可执行文件。这些目标文件的格式称为通用目标文件格式(COFF,Common Object File Format)。 通用目标文件格式的核心是使程序员在编写DSP程序时基于代码块和数据块的概念,而不是一条条指令或一个个数据

11、,基于这种文件格式编写的DSP程序可读性强、可移植性好。 在COFF文件中,将代码块和数据块称为Section,编译器/汇编器和链接器都提供了有关的命令来创建块和对块进行处理,编译器/汇编器创建的块的名称有些是已经定义好的,程序员也可以自己定义块名。,6.3.1 块,目标文件的最小单位被称为块,它是在存储器中占有连续空间的一块代码或数据。目标文件中的每一个块都是独立的。一般地, COFF目标文件应包含3个缺省的块: .text块:通常包含可执行代码。 .data块:通常包含已初始化的数据。 .bss块:通常为未初始化的变量保留空间。 此外,汇编器和连接器允许用户建立和链接自定义的块,这些块与.

12、text,.data类似。所有的块可以分为两类: 已初始化块:包含程序代码和数据。如.text和.data及用.sect或.asect汇编器命令创建的块。 未初始化块:为未初始化数据在存储器映像中保留空间。.bss段和用.usect汇编器命令创建的块是未初始化的段。,6.3.2 汇编器对块的处理,汇编器对块的处理功能主要是确定汇编语言程序的各部分属于哪个特定的块。汇编器有六个命令来完成这种功能:.bss,.usect ,.text ,.data ,.sect及.asect 。 其中.bss和.usect 命令创建未初始化块,而.text ,.data ,.sect及.asect 命令则建立已初

13、始化块。如果在程序中未用任何命令来指示,汇编器将把所有程序块或数据块统一汇编至.text 中。,(1)未初始化块,未初始化块主要用来在存储器中保留空间,它们通常分配在RAM中。这些块在目标文件中没有实际内容,只是保留空间而已。程序可以在运行时利用这些空间建立和存储变量。,未初始化数据块是通过使用.bss和.usect汇编器命令来建立。 .bss命令在.bss块中保留空间,而.usect命令在自定义块中保留空间。格式为: .bss 符号, 字数 符号 .usect “块名” , 字数,其中,符号指向由.bss或.usect保留的第一个字,它对应于为变量保留空间的变量名,可以在其他任何块中被访问,

14、也可以用.global定义为全局符号。字数表示空间的大小,块名是程序员自己定义的名字。汇编器遇到.text,.data,.sect和. asect命令时立即停止汇编至当前块中且开始汇编至相应块中。汇编器遇到.bss或.usect命令并不结束当前块开始一个新块,它们只是暂时离开当前块。,(2)已初始化块,已初始化块包含可执行代码或已初始化数据。块的内容存储在目标文件中,当程序装入时存放在DSP存储器中。每个已初始化块可以独立地进行重定位,且可访问在其他块中定义的符号。链接器可自动解决块与块之间符号访问的问题。有四个命令通知汇编器将代码或数据存放在严格块中,格式为: .text .data .se

15、ct “块名” .asect “块名”,地址 上述命令中, .text 和 .data建立的块名就是.text 和 .data,而后两命令建立的是自定义块,其中.asect 建立的块有绝对地址,一般不建议使用。,当汇编器遇到上述命令时,立即停止汇编至当前块中,且开始将随后的代码或数据汇编至相应的块中。块是通过迭代过程建立的。如,当汇编器首次遇到一个.data命令, .data块是空的, .data后面的语句被汇编到.data块中,直到遇到一个.text,.sect或.asect命令为止。如果汇编器在后面又遇到.data命令,则将.data后面的语句加到已存在于.data块中语句的后面,这样建立

16、的唯一的.data块可以在存储器中分配一个连续的空间。,(3)自定义块,自定义块就是程序员自己建立的块,与缺省的.text,.data和.bss块一样使用,但它与缺省块分开汇编。如,重复使用.text命令在目标文件中只建立一个.text块,链接后这个.text块也作为一个单位分配到存储器中。有时候程序员想把一部分程序放至不同于.text的存储器中,则须使用自定义块,对数据也可同样处理。,有三条指令可建立自定义块:.usect,.sect和.asect,其中.usect建立的块用法类似于.bss,是在RAM中为变量保留空间;而.sect和.asect建立包含代码或数据的块,用法类似于.text和

17、.data。 .sect建立的块是可重定位的,而.asect建立具有绝对地址的块。 符号 .usect “块名”,字数 .sect “块名” .asect “块名”,地址,例 此例表示如何用.usect伪指令定义两个未初始化的命名段var1和var2。符号ptr指向var1段中保留的第一个字。符号array指向var1段中100个字块内的第一个字。符号dflag指向var1段中50个字块内的第一个字。符号vec指向Var2段中保留的第一个字。 0000 .text ;汇编到.text段 0000 2003 LAC 03h 0000 ptr .usect “var1”,1 ;在var1段保留1个

18、字 0001 array .usect “var1”,100 ;在var1段保留100个字 0001 0037 ADD 037h ;还在.text段 0065 dflag .usect “var1”,50 ;在var1段保留50个字 0002 0065 ADD dflag ;还在.text段 0000 vec .usect “var2”,100 ;在var2段保留100个字 0003 0000 ADD vec ;还在.text段 .global array ;将array定义为外部符号名,6.3.3 链接器对块的处理,链接器对块的处理有两个功能。首先,将COFF目标文件中的块用来建立程序块或数

19、据块,将输入块组合起来以建立可执行的COFF输出模块;其次,链接器为输出块选择存储器地址。链接器提供两个命令完成上述功能:MEMORY和SECTION。 MEMORY命令定义目标系统的存储器,程序员可定义每一块存储器,指定每一块的起始地址和长度。 SECTION命令告诉链接器如何组合输入块以及在存储器何处存放输出块。若不用这两个命令,则链接器采用缺省的分配算法。若要用这两条命令,则一般需要建立一个链接命令文件,扩展名为.cmd。,6.3.4 程序的重定位,汇编器对每块汇编时都假定其起始地址为0,每块中所有的重定位符号(标号)都是相对于0地址而言的。当然,实际上并不是所有块在存储器中都是以0地址

20、定位的,因此链接器必须通过下列方法对每块进行重定位。 (1)分配块至存储器,使各块有合适的起始地址。 (2)调整符号值,使之对应于新的块地址。 (3)调整重定位后符号的参考值,以反映调整后的符号值。 链接器利用重定位项来调整符号的参考值。汇编器每次在可重定位符号被参考时建立一个重定位项,链接器则在符号被重定位之后利用这些项来修正参考值。,COFF目标文件中的每一块都有一个重定位项目表。表中包含了块中每一个可重定位参考的一个重定位项。链接器在使用完重定位项后将其去除以防止对输出块再次重定位。,产生重定位项的代码,1 .ref X 2 0000 .text 3 0000 FF80 B X ;产生一

21、个重定位项 0001 0000! 4 0002 D001 LALK Y ;产生一个重定位项 0003 0004 5 0004 CEIF Y: IDLE,链接后,假定X重定位至地址100h,且.text块重定位到起始地址200h,则Y重定位后的地址为204h。链接器利用这两个重定位项在目标代码中补上这两个参考:,FF80 B X 变为 FF80 0000 0100 D001 LALK Y 变为 D001 0004 0204,有时,一块程序装入在某块存储器中但需在另一块存储器中运行。如,程序中的一段关键代码装在ROM中,但需在速度更高的RAM中运行。此时,必须进行运行时的重定位。实现运行时的重定位

22、的方法,可在链接器命令文件的SECTION中将块分配两次:一次设定装入地址,另一次则设定运行地址。如: .text: load=ROM, run=ROM0,6.3.5 COFF中的符号,COFF中包含一个存储程序中符号信息的信息表,链接器在进行重定位时要用到这个符号表。 在一个模块中定义在另一个模块中引用的符号称为外部符号。一般可用.def、.ref、.global等命令来标明某一符号为外部符号。在一个源模块中,外部符号可以用.def、.ref、.global来定义: (1)定义( .def ):在当前模块中定义,在其他模块中引用 (2)参考( .ref ): :在当前模块中引用,在其他模块中

23、定义 (3)全局( .global ):包含上两者,.globle X ; X在本模块中定义,可在其他模块中引用 .globle Y ; Y在其他模块中定义,在本模块中引用 X: ADD 056h ;定义X MPY Y ;引用Y,6.4 链接命令文件,链接器的缺省分配算法是: (1)程序存储器的起始地址是0 x1000h,长度为0 xEFFF。 (2)数据存储器的起始地址是0 x300h,长度为0 xFCFF。 (3)将.text分配到起始地址为0 x1000h的程序存储器中。 (4)将.data分配到紧跟在.text的程序存储器中。 (5)将. cinit分配到紧跟在. data的程序存储器

24、中。 (6)将自定义的已初始化块分配到紧跟在.data的存储器中,若自定义块不止1个,则按自定义块在输入文件的先后顺序存放。 (7)将.bss分配到起始地址为0 x300h的数据存储器中。 (8)将自定义的未初始化块分配到紧跟在.bss的存储器中,若自定义块不止1个,则按自定义块在输入文件的先后顺序存放。,1 、MEMORY伪指令,MEMORY伪指令的一般语句格式为: MEMORY PAGE0: 存储器名1(属性): origin=常数,length=常数 PAGEn: 存储器名n(属性): origin=常数,length=常数 ,(1)PAGE:定义一个存储器空间,用户可以定义多达255页

25、。通常PAGE0定义程序存储器,PAGE1定义数据存储器。如果用户没有使用PAGE选项,那么连接器把段定位到PAGE0。每个PAGE代表一个完全独立的地址空间。在PAGE0上已配置的存储器可以和在PAGE1上已配置的存储器重叠。 (2)存储器名:命名存储器范围。存储器名由18个字符组成,有效的字符包括AZ,az,$及_。名字对于连接器没有特殊的意义,仅指明存储器的区域。在不同页上存储器范围可以有相同的名字,而在同一页,所有的存储器范围不能有相同的名字,且不能重叠。 (3)属性:对于已命名的范围有14个属性。属性是可选项,当被使用时,必须用括号括起来。属性把输出段的定位限制在某些存储器范围内。如

26、果用户不使用任何属性,则输出段即可以定位到任何范围内。有效的属性包括: R:规定存储器可以被读出; W:规定存储器可以被写入; I:规定存储器可以被初始化。,(4)origin:指定一个存储器区域的起始地址,也可以写成org或0。这个值是以字节规定的16位常数,也可以是十进制、八进制或十六进制。 (5)length:指定一个存储器的长度,也可以写成len或l。数值的表示方法与origin相同。,例: MEMORY指令举例 * Sample Command file with MEMORY directive */ file1obj file2Obj -o prog.out MEMORY PAG

27、E0:ROM: ORIGIN=0h,LENGTH=1000h PAGE1:B2: ORIGIN=60h,LENGTH=20h B0B1: ORIGIN=200h,LENGTH=200h ,SECTIONS伪指令的一般语法形式是: SECTIONS 段名1:特性1,特性2, 段名2:特性1,特性2, . ,2、SECTION伪指令,特性列表的选项(块所具备的特性)有以下几种: (1)装载地址:规定块将被装载在存储器中的位置。 语法:load=allocation 或 allocation 或 allocation allocation是MEMORY伪指令所定义的范围内地址,包括ROM、RAM、实

28、际地址值(16位常数)等。 (2)运行地址:定义块在存储器内运行的位置。 语法:run=allocation 或 runallocation 如果在一个块中load和run的地址相同,run可以省略。,(3)调准地址:规定块应在地址边界上开始。调准可以使连接器把输出块放在位于n字边界的地址,其中2是2的幂。 语法:align=n 或 align=(n) 如 .text align=128,即将.text段定位于页边界。 (4)块地址:规定块必须装在两个地址边界之间,它把块定位在大小为n的块内任何地方,如果块大于大小为的n块,那么块将从该边界开始。和调准一样,n必须是2的幂。 语法:block=

29、n 或 block(n) 如 .bss load=block(0 x80)。 定位.bss块使其包含在单个128字的页内或者从新页开始。用户可以单独使用调准或块,也可以和装入地址、运行地址结合在一起使用,但是调准和块不能一起使用。,(5)输入块:定义组成输出块的输入块。 语法:input_sections 输入文件中的块组合起来形成输出块,连接器按照所列出的输入块的次序连接并组合它们。输出块的大小是组成它的输入块的大小之和。 通用类型的块的规格说明中没有输入块。 如SECTIONS .text: .data: .bss: 此时链接器从输入文件取出所有.text块并把它们组合到.text输出块内

30、。链接器按照它在输入文件中遇到的次序连接.text输入块,对.data和.bss块的操作与.text相同。,例: SECTIONS .text /*创建.text输出段* f1.obj(.text) /*从f1.obj输入文件中连接.text段* f2.obj (sec1) /*从f2.obj输入文件中连接.sec1段* f3.obj /*连接f3.obj输入文件中所有的段* f4.obj (.text,sec2) /*从f4.obj输入文件中连接.text和.sec1段* ,(6)块类型:定义特殊块类型的标志。 语法:type=COPY 或 type=DSECT 或 type=NOLOAD

31、用户可以把这3种特殊的类型赋予输出块。用COPY和DSECT创建的块是一个虚块,它不包括在输出块存储器分配内,也不占据存储器空间,不包括在存储器映象列表中。但在虚块中定义的全局符号可以被其他输入块引用,COPY段可以将块的内容、重定位信息及行号信息放在输出模块中,而DSECT块则不放置。 NOLOAD创建的块不将块的内容、重定位信息及行号信息放在输出模块中,但链接器为其分配空间并包括在存储器映象列表中。,例 SETIONS伪指令的使用 file1.obj file2.obj * 输入文件 * -o prog.out * 输出文件 * SECTIONS .text: load=ROM run=0

32、800h .const: load=ROM .bss: load=ROM Vectors: load=0h t1.obj(.intvec1) t2.obj(.intvec2) endvec= .; /*将vectors段的最后连接地址赋给endvec符号* .data:align=16 ,(7)填充值:定义用于填充初始化空位的数值。 语法:file=value 或 name:value 当初始化输出块内有空位存在时,链接器必须提供原始数据以填充它值填充空位,该数值在存储器内复制直至它填满空位为止。,程序存储器: 地址范围 内容 00000FFF 片内ROM FF00FFFF 片内RAM块B0

33、数据存储器: 地址范围 内容 00000005 I/O寄存器 0060007F 片内RAM块B2 030003FF 片内RAM块B1,3、链接器举例,命令文件exmpcmd /* 定义连接器选项 */ -e SETUP /* 定义程序入口 */ -o exmp.out /* 命名输出文件 */ -m exmp.map /* 创建一个输出列表文件 */ /* 定义输入文件 */ exmp.obj /* 连接三个目标文件 */ fft.obj tables.obj /* 定义存储器配置 */ MEMORY PAGE0: ROM: ORIGIN=0000h, LENGTH=1000h RAM_B0:

34、 ORIGIN=FF00h, LENGTH=100h PAGE1: IO: ORIGlN=0000h, LENGTH=06h RAM_B2: ORIGIN=0060h, LENGTH=20h RAM_B1: ORIGIN=0300h, LENGTH=100h RAM: ORIGIN=0400h, LENGTH=FC00h ,/* 定义输出段 SECTIONS .text:ROM, PAGE=0 /*将包含在exmp.obj和fft.obj中的.text块链接到 ROM中 */ int_vecs: load=0,PAGE=0 /*将来自table.obj中int_vecs块的一组中断矢量连接到R

35、OM中的0地址处*/ .data: file=7A1Ch, load=RAM_B0, PAGE=0 /*将tabales.obj和fft.obj中的.data块链接到程序存储器RAM块B0中,并在 其后创建256字的空位,用7Alh填充 */ tables.obj(.data) fft.obj(.data) .=l00h; ,fftvars:RAM_B2,page=1 /* 创建新块fftvars,并将来自fft.obj的.bss 块链入数据存储器RAM块的B2中*/ fft.obj(.bss) .bss:RAM_B1,PAGE=1,FILL=0FFFFh *exmp.obj中的.bss块链接

36、到RAM块B1中。RAM的未用部分被初始化为FFFh* /* 命令文件结束 */ 然后用下列命令调用连接器: dsplnk exmp.cmd 这样将生成一个名为exmp.out的输出文件,可以在TMS320上运行。同时还生成一个列表文件exmp.map。,6.5 程序举例,在程序设计时,如果需要在多个模块中使用相同的设置和中断处理,通常将芯片中映射至I/O空间的寄存器地址及标号、预置变量和常数的空间等设置语句集中在一个文件中,称为I/O寄存器头文件(.h);将转移中断矢量地址的指令集中在一个文件中,称为中断矢量头文件(.h);将定义程序、数据和I/O空间地址块大小和位置的伪指令集中在一个文件中

37、,称为命令文件(.cmd)。这3个文件称为公用文件。 用户在编写自己的应用程序时,用.copy或.include伪指令将I/O寄存器头文件和中断矢量头文件复制到该应用程序中,形成一个汇编源程序(如.asm),由汇编器进行汇编后生成一个目标文件(.obj)。再由连接器把该目标文件和命令文件相连接,生成一个可执行文件(.out)。 对于简单的单个应用程序也可不使用这两个头文件,直接在应用程序中对用到的I/O寄存器和中断转移地址进行设置。,1、公用文件,该文件可为LF2407芯片定义程序、数据和I/O空间地址块的大小和位置,用于和汇编后的TMS320C2000文件(*.obj)相连接,输出文件名为.

38、out。对于其他芯片,应对该文件作相应的修改。,/* File: LF2407_PM.cmd MEMORY PAGE0 : /* 程序存储空间 * PM : ORIGIN=0h, LENGTH=0044h /* 中断矢量 * PVECS : ORIGIN=0044h, LENGTH=0100h /* 外设中断矢量 * PROG : ORIGIN=0150h, LENGTH=7EAFh /* 以上为32K字片内闪速存储器(0000h8000h)*/ SARAM_P: ORIGIN=8000h, LENGTH=0800h /* 程序空间上的2K字SARAM */ EX1_PM : ORIGIN=8

39、800h, LENGTH=7600h /* 外部RAM */ B0_PM : ORIGIN=0FF00h, LENGTH=0100h /* 如果CNF=1为片上DARAM,否则为外部B0:FF00hFFFFh*/,(1)命令文件LF2407_PM.cmd:,PAGE1 : /* 数据存储空间 */ REGS : ORIGIN=0h, LENGTH=60h /*内存映射寄存区和保留地址*/ BLK_B2 : ORIGIN=60h, LENGTH=20h /* 块B2 */ BLK_B0 : ORIGIN=200h, LENGTH=100h /*块B0,如果CNF=0为片内DARAM*/ BLK_

40、B1 : ORIGIN=300h, LENGTH=100h /* 片内存储器块B1 */ SARAM_D : ORIGIN=0800h, LENGTH=0800h /*数据空间2K字SARAM */ PERIPH : ORIGIN=7000h, LENGTH=1000h /* 外设寄存器空间 */ EX1_DM : ORIGIN=8000h, LENGTH=0800h /* 数据空间2K字SARAM */,PAGE2 : /* I/O存储空间 */ IO_EX : ORIGIN=0000h, LENGTH=0FFF0h /* 外部I/O映射空间 */ IO_EX : ORIGIN=0FFF0h

41、, LENGTH=0Fh /* 片内的I/O映射空间*/ ,SECTIONS .vectors: PM PAGE0 .pvecs: PVECS PAGE0 .text: PROG PAGE0 .bss: BLK_B2 PAGE1 .data: BLlBl PAGEl ,(2)240 x寄存器头文件240 xA.h:,;Flle name: 240 xA.h ;240 xCPU核寄存器 IMR .set 0004h;中断屏蔽寄存器 IFR .set 0006h;中断标志寄存器 ;系统配置和中断寄存器 SCSR1 .set 7018h ;系统控制和状态寄存器l SCSR2 .set 7019h;系

42、统控制和状态寄存器2 DINR .set 701Ch ;器件版本号寄存器 PIVR .set 701Eh ;外部中断矢量寄存器 PIRQR0 .set 7010h ;外部中断请求寄存器0 PIRQR1 .set 7011h ;外部中断请求寄存器1 PIRQR2 .set 7012h ;外部中断请求寄存器2,该文件包含了240 x芯片所有外部寄存器的地址、标号、预置变量和常数,在片内,所有外部寄存器都被映射到数据空间。该文件还定义了看门狗宏指令。可用.copy或.include伪指令将240 xA.h复制到应用程序中。,PIACKR0 .set 7014h ;外部中断响应寄存器0 PIACKR1

43、 .set 7015h ;外部中断响应寄存器1 PIACKR2 .set 7016h ;外部中断响应寄存器2 ;外部中断配置寄存器 XINT1CR .set 7070h ;外部中断1控制寄存器 XINT2CR .set 7071h ;外部中断2控制寄存器 ;数据I/O寄存器 MCRA .set 7090h ;I/O复用控制寄存器A MCRB .set 7092h ;I/O复用控制寄存器B MCRC .set 7094h ;I/O复用控制寄存器C PADATDIR .set 7098h ;I/O口A数据和方向寄存器 PBDATDIR .set 709Ah ;I/O口B数据和方向寄存器 PCDAT

44、DIR .set 709Ch ;I/O口C数据和方向寄存器 PDDATDIR .set 709Eh ;I/O口D数据和方向寄存器 PEDATDIR .set 7095h ;I/O口E数据和方向寄存器 PFDATDIR .set 7096h ;I/O口F数据和方向寄存器,;看门狗(WD)寄存器 WDCNTR .set 7023h ;WD计数器寄存器 WDKEY .set 7025h ;WD复位关键字寄存器 WDCR .set 7029h ;WD定时器控制寄存器 :模数转换(ADC)寄存器 ADCCTRL1 .set 70A0h ; ADC控制寄存器1 ADCCTRL2 .set 70A1h ;A

45、DC控制寄存器2 MAXCONV .set 70A2h ;最大转换通道个数寄存器 CHSELSEQ1 .set 70A3h ;通道选择排序控制寄存器1 CHSELSEQ2 .set 70A4h ;通道选择排序控制寄存器2 CHSELSEQ3 .set 70A5h ;通道选择排序控制寄存器3 CHSELSEQ4 .set 70A6h ;通道选择排序控制寄存器4 AUTO SEQ-SR .set 70A7h ;自动排序状态寄存器 RESULT0 .set 70A8h ;A/D转换结果寄存器0 RESULT1 .set 70A9h ;A/D转换结果寄存器1 RESULT2 .set 70AAh ;A

46、/D转换结果寄存器2 RESULT3 .set 70ABh ;A/D转换结果寄存器3 RESULT4 .set 70ACh ;A/D转换结果寄存器4,RESULT5 .set 70ADh ;A/D转换结果寄存器5 RESULT6.set 70AEh ;A/D转换结果寄存器6 RESULT7.set 70AFh ;A/D转换结果寄存器7 RESULT8.set 70B0h ;A/D转换结果寄存器8 RESULT9.set 70B1h ;A/D转换结果寄存器9 RESULTl0.set 70B2h ;A/D转换结果寄存器10 RESULT11.set 70B3h ;A/D转换结果寄存器11 RES

47、ULT12.set 70B4h ;A/D转换结果寄存器12 RESULT13.set 70B5h ;A/D转换结果寄存器13 RESULT14.set 70B6h ;A/D转换结果寄存器14 RESULT15.set 70B7h ;A/D转换结果寄存器15 CALIBRATION.set 70B8h ;校准结果寄存器 :串行外设接口(SPI)寄存器 SPICCR.set 7040h ;配置控制寄存器 SPICTL.set 7041h ;操作控制寄存器 SPISTS.set 7042h ;状态寄存器 SPIBRR.set 7044h ;波特率控制寄存器 SPIEMU.set 7046h ;仿真缓

48、冲寄存器,SPIRXBUF.set 7047h ;串行接收缓冲寄存器 SPITXBUF.set 7048h ;串行发送缓冲寄存器 SPIDAT.set 7049h ;串行数据寄存器 SPIPRI .set 704Fh ;中断优先级控制寄存器 ;串行通信接口 SCICCR.set 7050h ;SCI通信控制寄存器 SCICTL1.set 7050h ;SCI控制寄存器1 SCIHBAUD.set 7050h ;SCI波特率高位字节寄存器 SCILBAUD.set 7050h ;SCI波特率低位字节寄存器 SCICTL2.set 7050h ; SCI控制寄存器2 SCIRXST.set 705

49、0h ;SCI接收状态寄存器 SCIRXEMU.set 7050h ;SCI接收数据缓冲寄存器 SCIRXBUF.set 7050h ;SCI仿真数据缓冲寄存器 SCITXBUF.set 7050h ;SCI发送数据缓冲寄存器 SCIPRI .set 7050h ;SCl中断优先级控制寄存器,;事件管理器A(EVA)寄存器 GPTCONA.set 7400h ;全局通用定时器控制寄存器A T1CNT.set 7401h ;通用定时器1计数寄存器 T1CMPR .set 7402h ;通用定时器1比较寄存器 T1PR.set 7403h ;通用定时器1周期寄存器 T1CON.set 7404h

50、;通用定时器1控制寄存器 T2CNT.set 7405h ;通用定时器2计数寄存器 T2CMPR.set 7406h ;通用定时器2比较寄存器 T2PR.set 7407h ;通用定时器2周期寄存器 T2CON.set 7408h ;通用定时器2控制寄存器 COMCONA.set 7411h ;比较控制寄存器A ACTRA.set 7413h ;全比较操作控制寄存器A DBTCONA.set 7415h ;死区时间控制寄存器A CMPR1.set 7417h ;全比较单元1比较寄存器 CMPR2.set 7418h ;全比较单元2比较寄存器 CMPR3.set 7419h ;全比较单元3比较寄

51、存器,CAPCONA.set 7420h ;捕获控制寄存器A CAPFIFOA.set 7422h ;捕获FIFO状态寄存器A CAP1FIFO.set 7423h ;捕获1 FIFO栈项寄存器 CAP2FIFO.set 7424h ;捕获2 FIFO栈顶寄存器 CAP3FIFO.set 7425h ;捕获3 FIFO栈顶寄存器 CAP1FBOT.set 7427h ;捕获1 FIFO栈底寄存器 CAP2FBOT.set 7428h ;捕获2 FIFO栈底寄存器 CAP3FBOT.set 7429h ;捕获3 FIFO栈底寄存器 EVAIMRA.set 742Ch ;EVA中断屏蔽寄存器A E

52、VAIMRB.set 742Dh ;EVA中断屏蔽寄存器B EVAIMRC.set 742Eh ;EVA中断屏蔽寄存器C EVAIFRA .set 742Fh ;EVA中断标志寄存器A EVAIFRB .set 7430h ;EVA中断标志寄存器B EVAIFRC .set 7431h ;EVA中断标志寄存器C,;事件管理器B(EVB) GPTCONB.set 7500h ;全局通用定时器控制寄存器B T3CNT .set 7501h ;通用定时器3计数寄存器 T3CMPR.set 7502h ;通用定时器3比较寄存器 T3PR.set 7503h ;通用定时器3周期寄存器 T3CON.set

53、 7504h ;通用定时器3控制寄存器 T4CNT.set 7505h ;通用定时器4计数寄存器 T4CMPR.set 7506h ;通用定时器4比较寄存器 T4PR.set 7507h ;通用定时器4周期寄存器 T4CON.set 7508h ;通用定时器4控制寄存器 COMCONB.set 7511h ;比较控制寄存器B ACTRB.set 7513h ;全比较操作控制寄存器B DBTCONB.set 7515h ;死区时间控制寄存器B CMPR4.set 7517h ;全比较单元比较寄存器4 CMPR5.set 7518h ;全比较单元比较寄存器5 CMPR6.set 7519h ;全比

54、较单元比较寄存器6 CAPCONB.set 7520h ;捕获控制寄存器B CAPFIFOB.set 7522h ;捕获FIFO状态寄存器B,CAP4FIFO.set 7523h ;捕获4 FIFO栈项寄存器 CAP5FIFO.set 7524h ;捕获5 FIFO栈顶寄存器 CAP6FIFO.set 7525h ;捕获6 FIFO栈顶寄存器 CAP4FBOT.set 7527h ;捕获4 FIFO栈底寄存器 CAP5FBOT.set 7528h ;捕获5 FIFO栈底寄存器 CAP6FBOT.set 7529h ;捕获6 FIFO栈底寄存器 EVBIMRA.set 752Ch ;EVB中断屏蔽寄存器A EVBIMRB.set 752Dh ;EVB中断屏蔽寄存器B EVBIMRC.set 752Eh ;EVB中断屏蔽寄存器C EVBIFRA .set 752Fh ;EVB中断标志寄存器A EVBIFRB .set 7530h ;EVB中断标志寄存器B EVBIFRC .set 7531h ;EVB中断标志寄存器C,;CAN寄存器 CANMDER .set 7100h ;CAN邮箱方向使能寄存器 CANTCR .set 7101h ;CAN发送控制寄存器 CANRCR .set 7102h ;CAN接收控制寄存器 CANMCR .set 7103h ;CAN主

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论