DSP第六章匯編語言課件_第1頁
DSP第六章匯編語言課件_第2頁
DSP第六章匯編語言課件_第3頁
DSP第六章匯編語言課件_第4頁
DSP第六章匯編語言課件_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第6章匯編語言6.1匯編語言格式

TMS320匯編語言源程序由源語句組成。源語句包括匯編指令、偽指令、宏指令。源語句的一般格式為[標號][:]助記符[操作數(shù)1,操作數(shù)2,…][;注釋]標號域

助記符域

操作數(shù)域

注釋域注:“[]”表示該項可缺省。例6.1SYM1.set2 ;符號SYM1等于2

BEGIN:LDPSYM1;將2裝入DP .word016h;初始化一個字為16h1、標號域標號包含1~32個字母、數(shù)字、字符(A~Z,a~2,0~9,—及$),可識別符號的大小寫,且規(guī)定第一個字符不能是數(shù)字。

標號可以后隨冒號(:),冒號并不作為標號的一部分被處理。

如果不使用標號,則第一個字必須是空格或分號或星號。

當選用標號時,其值是段程序計數(shù)器(SPC)的當前值,標號指向與它們相關聯(lián)的語句。例如,如果用.word偽指令初始化幾個字,那么標號將指向第一個字。

行號

SPC目標代碼

源語句100040000ASTART:.word0Ah,3,70041000300420007標號也可以單獨出現(xiàn)在行中,此時它指向下一行中的指令。如:30050HERE:400500003.word3;此行SPC無增量3、操作數(shù)域

操作數(shù)域是跟在助記符域后面的操作數(shù)列表,可缺省。如果多于兩個操作數(shù),則只用逗號隔開。操作數(shù)可以是常數(shù)、符號和表達式。4、注釋域注釋域可以從源語句行的任一列開始并直至本行的末尾,即僅包括注釋的源語句是有效的。如果它從第一列開始則可以用分號(;)或星號(*)開始;在行的其他地方開始的注釋,必須以分號開始。

上述各個域必須用一個或多個空格分開。

6、1、1常數(shù)、字符串和符號

(1)二進制整數(shù):以字母B(或b)結尾,由二進制數(shù)字(0,1)組成的數(shù)字串。數(shù)字串長度長度最多可達16個二進制數(shù)字,如B。(2)八進制整數(shù):以字母Q(或q)結尾,由八進制數(shù)字(0~7)組成的數(shù)字串。數(shù)字串長度最多可達6個八進制數(shù)字,如100000Q。(3)十進制整數(shù):以字母D(或d)結尾(也可缺省),十進制整數(shù)由0~9數(shù)字組成,范圍從-32678~65535,如-30000。(4)十六進制整數(shù):以字母H(或h)結尾,由十六進制數(shù)字0~9和A~F(或a~f)組成的數(shù)字串。數(shù)字串長度最多可達4個十六進制數(shù)字。(5)字符常數(shù):包含在單引號中的一個或兩個字符的串。每個字符表示為8位ASCII碼,如‘a(chǎn)’定義字符a,并在內(nèi)部用61H表示。(6)匯編時間常數(shù):用.set偽指令對符號進行賦值,賦值的內(nèi)容不同,匯編時符號所表達的含義也就不同。1、常數(shù)

例如,用.set向符號賦值,則符號成為常數(shù),為了在表達式中使用此常數(shù),賦予它的值必須是絕對值。

SHIFT .set3 LACC*,SHIFT,AR1也可用.set將寄存器名賦予符號常數(shù),此時符號與寄存器為同一詞,如: AUXR1.setAR1 LACC*,0,AUXR13、符號

符號被用做標號、常數(shù)及替代符號。符號名最多可由32個字母和數(shù)字混合組成(A~Z,a~z,0~9,$和_)。符號的第一個字符不能是數(shù)字,符號內(nèi)不能有空格。用戶定義的符號分大小寫,例如匯編時ABC,Abc及abc被識別為3個不同的符號。

表達式由運算符、常數(shù)和符號組成。有效表達式值的范圍是-32768~+32767。6、1、2表達式和運算符

表達式內(nèi)使用的運算符的優(yōu)先級見下表:高組運算符說明優(yōu)先級1+-~取正取負求反

低2*/%??乘除求模左移右移3+-^|&加減按位邏輯異或按位邏輯或按位邏輯與4<><=>==或==!=小于大于小于或等于大于或等于等于不等于(2)調(diào)用宏:在定義了宏以后,就可以在源程序中將宏的名字作為操作碼來調(diào)用。

格式:

宏名[實參數(shù)1][,實參數(shù)2][,實參數(shù)n](3)展開宏:匯編器在對源文件進行匯編時,對調(diào)用的宏進行展開。在展開過程中,匯編器用宏體取代宏調(diào)用語句,宏體中的形式參數(shù)(替代符號)用實際參數(shù)代替。

①如果某個形式參數(shù)沒有對應的實參數(shù)為其賦值,該形式參數(shù)將被空串(“”)代替。

②如果實參數(shù)的個數(shù)多于形式參數(shù),則余下的實參數(shù)將賦給最后一個形式參數(shù)(用逗號隔開)。③如果要把一串變量賦給一個形式參數(shù),或者把一個逗號(或分號)傳給一個形式參數(shù),就必須用引號將它們引起來。④匯編時,匯編器先用實參數(shù)代替形式參數(shù)并展開宏,然后把源語句匯編為目標代碼,并輸出到列表文件中。

宏定義:

parms.macrox,y,za=x b=y c=z .endm調(diào)用宏:

匯編時展開宏

parms100,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開發(fā)環(huán)境可以看成是一個大的軟件包,里面包含了源代碼編輯器,以及工程文件組織、編譯和調(diào)試等一切功能模塊。該軟件包里,shell程序可以完成3個功能:編譯、匯編和鏈接。shell程序缺省在C盤安裝時,被安裝在C:\ti\c2400\cgtool子目錄下,對應的文件名為dspcl.exe。(1)編輯器:包括分析器、優(yōu)化器、代碼產(chǎn)生器。把C語言程序編譯成匯編語言程序。(2)匯編器:把匯編語言源代碼或C語言已經(jīng)編譯成匯編語言代碼進行匯編,以產(chǎn)生COFF目標文件。(3)鏈接器:將文件鏈接,產(chǎn)生可執(zhí)行的目標文件。6.3.1塊

目標文件的最小單位被稱為塊,它是在存儲器中占有連續(xù)空間的一塊代碼或數(shù)據(jù)。目標文件中的每一個塊都是獨立的。一般地,COFF目標文件應包含3個缺省的塊:.text塊:通常包含可執(zhí)行代碼。.data塊:通常包含已初始化的數(shù)據(jù)。.bss塊:通常為未初始化的變量保留空間。

此外,匯編器和連接器允許用戶建立和鏈接自定義的塊,這些塊與.text,.data類似。所有的塊可以分為兩類:已初始化塊:包含程序代碼和數(shù)據(jù)。如.text和.data及用.sect或.asect匯編器命令創(chuàng)建的塊。未初始化塊:為未初始化數(shù)據(jù)在存儲器映像中保留空間。.bss段和用.usect匯編器命令創(chuàng)建的塊是未初始化的段。

6.3.2匯編器對塊的處理

匯編器對塊的處理功能主要是確定匯編語言程序的各部分屬于哪個特定的塊。匯編器有六個命令來完成這種功能:.bss,.usect,.text,.data,.sect及.asect

。其中.bss和.usect

命令創(chuàng)建未初始化塊,而.text

,.data

,.sect及.asect

命令則建立已初始化塊。如果在程序中未用任何命令來指示,匯編器將把所有程序塊或數(shù)據(jù)塊統(tǒng)一匯編至.text

中。(1)未初始化塊

未初始化塊主要用來在存儲器中保留空間,它們通常分配在RAM中。這些塊在目標文件中沒有實際內(nèi)容,只是保留空間而已。程序可以在運行時利用這些空間建立和存儲變量。未初始化數(shù)據(jù)塊是通過使用.bss和.usect匯編器命令來建立。.bss命令在.bss塊中保留空間,而.usect命令在自定義塊中保留空間。格式為:

.bss符號,字數(shù)符號.usect“塊名”,字數(shù)其中,符號指向由.bss或.usect保留的第一個字,它對應于為變量保留空間的變量名,可以在其他任何塊中被訪問,也可以用.global定義為全局符號。字數(shù)表示空間的大小,塊名是程序員自己定義的名字。匯編器遇到.text,.data,.sect和.

asect命令時立即停止匯編至當前塊中且開始匯編至相應塊中。匯編器遇到.bss或.usect命令并不結束當前塊開始一個新塊,它們只是暫時離開當前塊。當匯編器遇到上述命令時,立即停止匯編至當前塊中,且開始將隨后的代碼或數(shù)據(jù)匯編至相應的塊中。塊是通過迭代過程建立的。如,當匯編器首次遇到一個.data命令,.data塊是空的,.data后面的語句被匯編到.data塊中,直到遇到一個.text,.sect或.asect命令為止。如果匯編器在后面又遇到.data命令,則將.data后面的語句加到已存在于.data塊中語句的后面,這樣建立的唯一的.data塊可以在存儲器中分配一個連續(xù)的空間。(3)自定義塊

自定義塊就是程序員自己建立的塊,與缺省的.text,.data和.bss塊一樣使用,但它與缺省塊分開匯編。如,重復使用.text命令在目標文件中只建立一個.text塊,鏈接后這個.text塊也作為一個單位分配到存儲器中。有時候程序員想把一部分程序放至不同于.text的存儲器中,則須使用自定義塊,對數(shù)據(jù)也可同樣處理。有三條指令可建立自定義塊:.usect,.sect和.asect,其中.usect建立的塊用法類似于.bss,是在RAM中為變量保留空間;而.sect和.asect建立包含代碼或數(shù)據(jù)的塊,用法類似于.text和.data。.sect建立的塊是可重定位的,而.asect建立具有絕對地址的塊。符號.usect“塊名”,字數(shù)

.sect“塊名”.asect“塊名”,地址例此例表示如何用.usect偽指令定義兩個未初始化的命名段var1和var2。符號ptr指向var1段中保留的第一個字。符號array指向var1段中100個字塊內(nèi)的第一個字。符號dflag指向var1段中50個字塊內(nèi)的第一個字。符號vec指向Var2段中保留的第一個字。0000.text;匯編到.text段00002003LAC03h0000ptr.usect“var1”,1;在var1段保留1個字0001array.usect“var1”,100;在var1段保留100個字00010037ADD037h;還在.text段0065dflag.usect“var1”,50;在var1段保留50個字00020065ADDdflag;還在.text段0000vec.usect“var2”,100;在var2段保留100個字00030000ADDvec;還在.text段.globalarray;將array定義為外部符號名

6.3.4程序的重定位

匯編器對每塊匯編時都假定其起始地址為0,每塊中所有的重定位符號(標號)都是相對于0地址而言的。當然,實際上并不是所有塊在存儲器中都是以0地址定位的,因此鏈接器必須通過下列方法對每塊進行重定位。(1)分配塊至存儲器,使各塊有合適的起始地址。(2)調(diào)整符號值,使之對應于新的塊地址。(3)調(diào)整重定位后符號的參考值,以反映調(diào)整后的符號值。鏈接器利用重定位項來調(diào)整符號的參考值。匯編器每次在可重定位符號被參考時建立一個重定位項,鏈接器則在符號被重定位之后利用這些項來修正參考值。

COFF目標文件中的每一塊都有一個重定位項目表。表中包含了塊中每一個可重定位參考的一個重定位項。鏈接器在使用完重定位項后將其去除以防止對輸出塊再次重定位。產(chǎn)生重定位項的代碼

1.refX

20000.text30000FF80BX;產(chǎn)生一個重定位項

00010000!

40002D001LALKY;產(chǎn)生一個重定位項0003000450004CEIFY:IDLE鏈接后,假定X重定位至地址100h,且.text塊重定位到起始地址200h,則Y重定位后的地址為204h。鏈接器利用這兩個重定位項在目標代碼中補上這兩個參考:FF80BX變?yōu)镕F80

00000100D001LALKY變?yōu)镈001000402046.4鏈接命令文件鏈接器的缺省分配算法是:(1)程序存儲器的起始地址是0x1000h,長度為0xEFFF。(2)數(shù)據(jù)存儲器的起始地址是0x300h,長度為0xFCFF。(3)將.text分配到起始地址為0x1000h的程序存儲器中。(4)將.data分配到緊跟在.text的程序存儲器中。(5)將.cinit分配到緊跟在.data的程序存儲器中。(6)將自定義的已初始化塊分配到緊跟在.data的存儲器中,若自定義塊不止1個,則按自定義塊在輸入文件的先后順序存放。(7)將.bss分配到起始地址為0x300h的數(shù)據(jù)存儲器中。(8)將自定義的未初始化塊分配到緊跟在.bss的存儲器中,若自定義塊不止1個,則按自定義塊在輸入文件的先后順序存放。1、MEMORY偽指令

MEMORY偽指令的一般語句格式為:

MEMORY{PAGE0:存儲器名1[(屬性)]:origin=常數(shù),length=常數(shù)··········PAGEn:存儲器名n[(屬性)]:origin=常數(shù),length=常數(shù)}(1)PAGE:定義一個存儲器空間,用戶可以定義多達255頁。通常PAGE0定義程序存儲器,PAGE1定義數(shù)據(jù)存儲器。如果用戶沒有使用PAGE選項,那么連接器把段定位到PAGE0。每個PAGE代表一個完全獨立的地址空間。在PAGE0上已配置的存儲器可以和在PAGE1上已配置的存儲器重疊。(2)存儲器名:命名存儲器范圍。存儲器名由1~8個字符組成,有效的字符包括A~Z,a~z,$及_。名字對于連接器沒有特殊的意義,僅指明存儲器的區(qū)域。在不同頁上存儲器范圍可以有相同的名字,而在同一頁,所有的存儲器范圍不能有相同的名字,且不能重疊。(3)屬性:對于已命名的范圍有1~4個屬性。屬性是可選項,當被使用時,必須用括號括起來。屬性把輸出段的定位限制在某些存儲器范圍內(nèi)。如果用戶不使用任何屬性,則輸出段即可以定位到任何范圍內(nèi)。有效的屬性包括:

R:規(guī)定存儲器可以被讀出;

W:規(guī)定存儲器可以被寫入;

I:規(guī)定存儲器可以被初始化。(4)origin:指定一個存儲器區(qū)域的起始地址,也可以寫成org或0。這個值是以字節(jié)規(guī)定的16位常數(shù),也可以是十進制、八進制或十六進制。(5)length:指定一個存儲器的長度,也可以寫成len或1。數(shù)值的表示方法與origin相同。例:

MEMORY指令舉例/*SampleCommand*/file1.objfile2.Obj-oprog.outMEMORY{PAGE0:ROM:ORIGIN=0h,LENGTH=1000hPAGE1:B2:ORIGIN=60h,LENGTH=20hB0B1:ORIGIN=200h,LENGTH=200h}SECTIONS偽指令的一般語法形式是:

SECTIONS{段名1:[特性1,特性2,……]段名2:[特性1,特性2,……]…….}2、SECTION偽指令

特性列表的選項(塊所具備的特性)有以下幾種:(1)裝載地址:規(guī)定塊將被裝載在存儲器中的位置。

語法:load=allocation

allocation

或{}>allocationallocation是MEMORY偽指令所定義的范圍內(nèi)地址,包括ROM、RAM、實際地址值(16位常數(shù))等。(2)運行地址:定義塊在存儲器內(nèi)運行的位置。

語法:run=allocation

run>allocation

如果在一個塊中l(wèi)oad和run的地址相同,run可以省略。(3)調(diào)準地址:規(guī)定塊應在地址邊界上開始。調(diào)準可以使連接器把輸出塊放在位于n字邊界的地址,其中/2是2的冪。

語法:align=n

align=(n)

如.textalign=128,即將.text段定位于頁邊界。(4)塊地址:規(guī)定塊必須裝在兩個地址邊界之間,它把塊定位在大小為n的塊內(nèi)任何地方,如果塊大于大小為的n塊,那么塊將從該邊界開始。和調(diào)準一樣,n必須是2的冪。語法:block=n或

block(n)如.bssload=block(0x80)。定位.bss塊使其包含在單個128字的頁內(nèi)或者從新頁開始。用戶可以單獨使用調(diào)準或塊,也可以和裝入地址、運行地址結合在一起使用,但是調(diào)準和塊不能一起使用。(5)輸入塊:定義組成輸出塊的輸入塊。

語法:{input_sections}輸入文件中的塊組合起來形成輸出塊,連接器按照所列出的輸入塊的次序連接并組合它們。輸出塊的大小是組成它的輸入塊的大小之和。通用類型的塊的規(guī)格說明中沒有輸入塊。如SECTIONS{.text:.data:.bss:}此時鏈接器從輸入文件取出所有.text塊并把它們組合到.text輸出塊內(nèi)。鏈接器按照它在輸入文件中遇到的次序連接.text輸入塊,對.data和.bss塊的操作與.text相同。例:SECTIONS{.text/*創(chuàng)建.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用戶可以把這3種特殊的類型賦予輸出塊。用COPY和DSECT創(chuàng)建的塊是一個虛塊,它不包括在輸出塊存儲器分配內(nèi),也不占據(jù)存儲器空間,不包括在存儲器映象列表中。但在虛塊中定義的全局符號可以被其他輸入塊引用,COPY段可以將塊的內(nèi)容、重定位信息及行號信息放在輸出模塊中,而DSECT塊則不放置。

NOLOAD創(chuàng)建的塊不將塊的內(nèi)容、重定位信息及行號信息放在輸出模塊中,但鏈接器為其分配空間并包括在存儲器映象列表中。例SETIONS偽指令的使用

/*輸入文件*/-oprog.out/*輸出文件*/

SECTIONS{.text:load=ROMrun=0800h .const:load=ROM .bss:load=ROM Vectors:load=0h { t1.obj(.intvec1) t2.obj(.intvec2) endvec=.;/*將vectors段的最后連接地址賦給endvec符號*/ } .data:align=16 }(7)填充值:定義用于填充初始化空位的數(shù)值。語法:或

name:…{…}:value當初始化輸出塊內(nèi)有空位存在時,鏈接器必須提供原始數(shù)據(jù)以填充它值填充空位,該數(shù)值在存儲器內(nèi)復制直至它填滿空位為止。

程序存儲器:

地址范圍

內(nèi)容 0000~0FFF片內(nèi)ROM FF00~FFFF片內(nèi)RAM塊B0數(shù)據(jù)存儲器:

地址范圍

內(nèi)容 0000~0005I/O寄存器 0060~007F片內(nèi)RAM塊B20300~03FF片內(nèi)RAM塊B13、鏈接器舉例命令文件exmp.cmd/**定義連接器選項**/-eSETUP/*定義程序入口*/-oexmp.out/*命名輸出文件*/-mexmp.map

/*創(chuàng)建一個輸出列表文件*//**定義輸入文件**/exmp.obj/*連接三個目標文件*/fft.objtables.obj/**定義存儲器配置**/MEMORY{PAGE0:ROM:ORIGIN=0000h,LENGTH=1000hRAM_B0:ORIGIN=FF00h,LENGTH=100hPAGE1:IO:ORIGlN=0000h,LENGTH=06hRAM_B2:ORIGIN=0060h,LENGTH=20hRAM_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塊的一組中斷矢量連接到ROM中的0地址處*/.data:,load=RAM_B0,PAGE=0/*將tabales.obj和fft.obj中的.data塊鏈接到程序存儲器RAM塊B0中,并在其后創(chuàng)建256字的空位,用7Alh填充*/{tables.obj(.data)fft.obj(.data).=l00h;}fftvars:{}>RAM_B2,page=1

/*創(chuàng)建新塊fftvars,并將來自fft.obj的.bss

塊鏈入數(shù)據(jù)存儲器RAM塊的B2中*/{

fft.obj(.bss)}.bss:{}>RAM_B1,PAGE=1,FILL=0FFFFh

/*exmp.obj中的.bss塊鏈接到RAM塊B1中。RAM的未用部分被初始化為FFFh*/}/**命令文件結束**/

然后用下列命令調(diào)用連接器:

dsplnkexmp.cmd

這樣將生成一個名為exmp.out的輸出文件,可以在TMS320上運行。同時還生成一個列表文件exmp.map。

6.5程序舉例在程序設計時,如果需要在多個模塊中使用相同的設置和中斷處理,通常將芯片中映射至I/O空間的寄存器地址及標號、預置變量和常數(shù)的空間等設置語句集中在一個文件中,稱為I/O寄存器頭文件(如init.h);將轉(zhuǎn)移中斷矢量地址的指令集中在一個文件中,稱為中斷矢量頭文件(如vector.h);將定義程序、數(shù)據(jù)和I/O空間地址塊大小和位置的偽指令集中在一個文件中,稱為命令文件(如F206.cmd)。這3個文件稱為公用文件。用戶在編寫自己的應用程序時,用.copy或.include偽指令將I/O寄存器頭文件和中斷矢量頭文件復制到該應用程序中,形成一個匯編源程序(如delay.asm),由匯編器進行匯編后生成一個目標文件(如delay.obj)。再由連接器把該目標文件和命令文件相連接,生成一個可執(zhí)行文件(如delay.out)。對于簡單的單個應用程序也可不使用這兩個頭文件,直接在應用程序中對用到的I/O寄存器和中斷轉(zhuǎn)移地址進行設置。1、公用文件該文件可為LF2407芯片定義程序、數(shù)據(jù)和I/O空間地址塊的大小和位置,用于和匯編后的TMS320C2000文件(*.obj)相連接,輸出文件名為.out。對于其他芯片,應對該文件作相應的修改。/*File:LF2407_PM.cmdMEMORY{PAGE0: /*程序存儲空間*/PM:ORIGIN=0h,LENGTH=0044h/*中斷矢量*/PVECS:ORIGIN=0044h,LENGTH=0100h/*外設中斷矢量*/PROG:ORIGIN=0150h,LENGTH=7EAFh/*以上為32K字片內(nèi)閃速存儲器(0000h~8000h)*/SARAM_P:ORIGIN=8000h,LENGTH=0800h/*程序空間上的2K字SARAM*/EX1_PM:ORIGIN=8800h,LENGTH=7600h/*外部RAM*/B0_PM:ORIGIN=0FF00h,LENGTH=0100h/*如果CNF=1為片上DARAM,否則為外部B0:FF00h~FFFFh*/(1)命令文件LF2407_PM.cmd:PAGE1:/*數(shù)據(jù)存儲空間*/REGS:ORIGIN=0h,LENGTH=60h/*內(nèi)存映射寄存區(qū)和保留地址*/BLK_B2:ORIGIN=60h,LENGTH=20h/*塊B2*/BLK_B0:ORIGIN=200h,LENGTH=100h/*塊B0,如果CNF=0為片內(nèi)DARAM*/BLK_B1:ORIGIN=300h,LENGTH=100h/*片內(nèi)存儲器塊B1*/SARAM_D:ORIGIN=0800h,LENGTH=0800h/*數(shù)據(jù)空間2K字SARAM*/PERIPH:ORIGIN=7000h,LENGTH=1000h/*外設寄存器空間*/EX1_DM:ORIGIN=8000h,LENGTH=0800h/*數(shù)據(jù)空間2K字SARAM*/PAGE2:/*I/O存儲空間*/IO_EX:ORIGIN=0000h,LENGTH=0FFF0h/*外部I/O映射空間*/IO_EX:ORIGIN=0FFF0h,LENGTH=0Fh/*片內(nèi)的I/O映射空間*/}SECTIONS{.vectors:{}>PMPAGE0.pvecs:{}>PVECSPAGE0.text:{}>PROGPAGE0.bss:{}>BLK_B2PAGE1.data:{}>BLlBlPAGEl}(2)240x寄存器頭文件240xA.h:;Fllename:240xA.h;240xCPU核寄存器IMR .set0004h ;中斷屏蔽寄存器IFR .set0006h ;中斷標志寄存器;系統(tǒng)配置和中斷寄存器SCSR1 .set7018h ;系統(tǒng)控制和狀態(tài)寄存器lSCSR2 .set7019h ;系統(tǒng)控制和狀態(tài)寄存器2DINR .set701Ch ;器件版本號寄存器PIVR .set701Eh ;外部中斷矢量寄存器PIRQR0 .set7010h ;外部中斷請求寄存器0PIRQR1 .set7011h ;外部中斷請求寄存器1PIRQR2 .set7012h ;外部中斷請求寄存器2該文件包含了240x芯片所有外部寄存器的地址、標號、預置變量和常數(shù),在片內(nèi),所有外部寄存器都被映射到數(shù)據(jù)空間。該文件還定義了看門狗宏指令??捎?copy或.include偽指令將240xA.h復制到應用程序中。PIACKR0 .set7014h;外部中斷響應寄存器0PIACKR1 .set7015h;外部中斷響應寄存器1PIACKR2 .set7016h;外部中斷響應寄存器2;外部中斷配置寄存器XINT1CR .set7070h;外部中斷1控制寄存器XINT2CR .set7071h;外部中斷2控制寄存器;數(shù)據(jù)I/O寄存器MCRA .set7090h;I/O復用控制寄存器AMCRB .set7092h;I/O復用控制寄存器BMCRC .set7094h;I/O復用控制寄存器CPADATDIR .set7098h;I/O口A數(shù)據(jù)和方向寄存器PBDATDIR .set709Ah;I/O口B數(shù)據(jù)和方向寄存器PCDATDIR .set709Ch;I/O口C數(shù)據(jù)和方向寄存器PDDATDIR .set709Eh;I/O口D數(shù)據(jù)和方向寄存器PEDATDIR .set7095h;I/O口E數(shù)據(jù)和方向寄存器PFDATDIR .set7096h;I/O口F數(shù)據(jù)和方向寄存器;看門狗(WD)寄存器WDCNTR .set7023h;WD計數(shù)器寄存器WDKEY .set7025h;WD復位關鍵字寄存器WDCR .set7029h;WD定時器控制寄存器:模數(shù)轉(zhuǎn)換(ADC)寄存器ADCCTRL1 .set70A0h;ADC控制寄存器1ADCCTRL2 .set70A1h;ADC控制寄存器2MAXCONV .set70A2h;最大轉(zhuǎn)換通道個數(shù)寄存器CHSELSEQ1 .set70A3h;通道選擇排序控制寄存器1CHSELSEQ2 .set70A4h;通道選擇排序控制寄存器2CHSELSEQ3 .set70A5h;通道選擇排序控制寄存器3CHSELSEQ4 .set70A6h;通道選擇排序控制寄存器4AUTOSEQ-SR.set70A7h;自動排序狀態(tài)寄存器RESULT0 .set70A8h;A/D轉(zhuǎn)換結果寄存器0RESULT1 .set70A9h;A/D轉(zhuǎn)換結果寄存器1RESULT2 .set70AAh;A/D轉(zhuǎn)換結果寄存器2RESULT3 .set70ABh;A/D轉(zhuǎn)換結果寄存器3RESULT4 .set70ACh;A/D轉(zhuǎn)換結果寄存器4RESULT5 .set70ADh;A/D轉(zhuǎn)換結果寄存器5RESULT6 .set70AEh;A/D轉(zhuǎn)換結果寄存器6RESULT7 .set70AFh;A/D轉(zhuǎn)換結果寄存器7RESULT8 .set70B0h;A/D轉(zhuǎn)換結果寄存器8RESULT9 .set70B1h;A/D轉(zhuǎn)換結果寄存器9RESULTl0 .set70B2h;A/D轉(zhuǎn)換結果寄存器10RESULT11 .set70B3h;A/D轉(zhuǎn)換結果寄存器11RESULT12 .set70B4h;A/D轉(zhuǎn)換結果寄存器12RESULT13 .set70B5h;A/D轉(zhuǎn)換結果寄存器13RESULT14 .set70B6h;A/D轉(zhuǎn)換結果寄存器14RESULT15 .set70B7h;A/D轉(zhuǎn)換結果寄存器15CALIBRATION .set70B8h;校準結果寄存器:串行外設接口(SPI)寄存器SPICCR .set7040h;配置控制寄存器SPICTL .set7041h;操作控制寄存器SPISTS .set7042h;狀態(tài)寄存器SPIBRR .set7044h;波特率控制寄存器SPIEMU .set7046h;仿真緩沖寄存器SPIRXBUF .set7047h;串行接收緩沖寄存器SPITXBUF .set7048h;串行發(fā)送緩沖寄存器SPIDAT .set7049h;串行數(shù)據(jù)寄存器SPIPRI .set704Fh;中斷優(yōu)先級控制寄存器;串行通信接口SCICCR .set7050h;SCI通信控制寄存器SCICTL1 .set7050h;SCI控制寄存器1SCIHBAUD .set7050h;SCI波特率高位字節(jié)寄存器SCILBAUD .set7050h;SCI波特率低位字節(jié)寄存器SCICTL2 .set7050h;SCI控制寄存器2SCIRXST .set7050h;SCI接收狀態(tài)寄存器SCIRXEMU .set7050h;SCI接收數(shù)據(jù)緩沖寄存器SCIRXBUF .set7050h;SCI仿真數(shù)據(jù)緩沖寄存器SCITXBUF .set7050h;SCI發(fā)送數(shù)據(jù)緩沖寄存器SCIPRI .set7050h;SCl中斷優(yōu)先級控制寄存器;事件管理器A(EVA)寄存器GPTCONA .set7400h;全局通用定時器控制寄存器AT1CNT .set7401h;通用定時器1計數(shù)寄存器T1CMPR .set7402h;通用定時器1比較寄存器T1PR .set7403h;通用定時器1周期寄存器T1CON .set7404h;通用定時器1控制寄存器T2CNT .set7405h;通用定時器2計數(shù)寄存器T2CMPR .set7406h;通用定時器2比較寄存器T2PR .set7407h;通用定時器2周期寄存器T2CON .set7408h;通用定時器2控制寄存器COMCONA .set7411h;比較控制寄存器AACTRA .set7413h;全比較操作控制寄存器ADBTCONA .set7415h;死區(qū)時間控制寄存器ACMPR1 .set7417h;全比較單元1比較寄存器CMPR2 .set7418h;全比較單元2比較寄存器CMPR3 .set7419h;全比較單元3比較寄存器CAPCONA .set7420h;捕獲控制寄存器ACAPFIFOA .set7422h;捕獲FIFO狀態(tài)寄存器ACAP1FIFO .set7423h;捕獲1FIFO棧項寄存器CAP2FIFO .set7424h;捕獲2FIFO棧頂寄存器CAP3FIFO .set7425h;捕獲3FIFO棧頂寄存器CAP1FBOT .set7427h;捕獲1FIFO棧底寄存器CAP2FBOT .set7428h;捕獲2FIFO棧底寄存器CAP3FBOT .set7429h;捕獲3FIFO棧底寄存器EVAIMRA .set742Ch;EVA中斷屏蔽寄存器AEVAIMRB .set742Dh;EVA中斷屏蔽寄存器BEVAIMRC .set742Eh;EVA中斷屏蔽寄存器CEVAIFRA.set742Fh;EVA中斷標志寄存器AEVAIFRB.set7430h;EVA中斷標志寄存器BEVAIFRC.set7431h;EVA中斷標志寄存器C;事件管理器B(EVB)GPTCONB .set7500h;全局通用定時器控制寄存器BT3CNT .set7501h;通用定時器3計數(shù)寄存器T3CMPR .set7502h;通用定時器3比較寄存器T3PR .set7503h;通用定時器3周期寄存器T3CON .set7504h;通用定時器3控制寄存器T4CNT .set7505h;通用定時器4計數(shù)寄存器T4CMPR .set7506h;通用定時器4比較寄存器T4PR .set7507h;通用定時器4周期寄存器T4CON .set7508h;通用定時器4控制寄存器COMCONB .set7511h;比較控制寄存器BACTRB .set7513h;全比較操作控制寄存器BDBTCONB .set7515h;死區(qū)時間控制寄存器BCMPR4 .set7517h;全比較單元比較寄存器4CMPR5 .set7518h;全比較單元比較寄存器5CMPR6 .set7519h;全比較單元比較寄存器6CAPCONB .set7520h;捕獲控制寄存器BCAPFIFOB .set7522h;捕獲FIFO狀態(tài)寄存器BCAP4FIFO .set7523h;捕獲4FIFO棧項寄存器CAP5FIFO .set7524h;捕獲5FIFO棧頂寄存器CAP6FIFO .set7525h;捕獲6FIFO棧頂寄存器CAP4FBOT .set7527h;捕獲4FIFO棧底寄存器CAP5FBOT .set7528h;捕獲5FIFO棧底寄存器CAP6FBOT .set7529h;捕獲6FIFO棧底寄存器EVBIMRA .set752Ch;EVB中斷屏蔽寄存器AEVBIMRB .set752Dh;EVB中斷屏蔽寄存器BEVBIMRC .set752Eh;EVB中斷屏蔽寄存器CEVBIFRA.set752Fh;EVB中斷標志寄存器AEVBIFRB.set7530h;EVB中斷標志寄存器BEVBIFRC.set7531h;EVB中斷標志寄存器C;CAN寄存器CANMDER.set7100h;CAN郵箱方向/使能寄存器CANTCR .set7101h;CAN發(fā)送控制寄存器CANRCR .set7102h;CAN接收控制寄存器CANMCR .set7103h;CAN主控制寄存器CANBCR2 .set7104h;CAN位配置寄存器2CANBCR1 .set7105h;CAN位配置寄存器1CANESR .set7106h;CAN錯誤狀態(tài)寄存器CANGSR .set7107h;CAN全局狀態(tài)寄存器CANCEC .set7108h;CAN傳送和接收錯誤計數(shù)器CANIFR .set7109h;CAN中斷標志寄存器CANIMR .set710ah;CAN中斷屏蔽寄存器CANLAM0H.set710bh;CAN本地接收屏蔽高位字寄存器(MBX0/1)CANLAM0L.set710ch;CAN本地接收屏蔽低位字寄存器(MBX0/1)CANLAM1H.set710dh;CAN本地接收屏蔽高位字寄存器(MBX2/3)CANLAM1L.set710eh;CAN本地接收屏蔽低位字寄存器(MBX2/3)CANMSGIDOL.set7200h;CAN郵箱0消息標識符(低16位字)CANMSGIDOH.set7201h;CAN郵箱0消息標識符(高16位字)CANMSGCTRl0.set7202h;CAN郵箱0消息控制域寄存器CANMBX0A .set7204h;CAN郵箱0中郵箱RAM的2個字節(jié)CANMBX0B .set7205h;CAN郵箱0中郵箱RAM的2個字節(jié)CANMBX0C .set7206h;CAN郵箱0中郵箱RAM的2個字節(jié)CANMBX0D .set7207h;CAN郵箱0中郵箱RAM的2個字節(jié)CANMSGID1L .set7208h;CAN郵箱1消息標識符(低16位字)CANMSGID1H .set7209h;CAN郵箱1消息標識符(高16位字)CANMSGCTRL1 .set720Ah;CAN郵箱1消息控制域寄存器CANMBX1A .set720Ch;CAN郵箱1中郵箱RAM的2個字節(jié)CANMBX1B .set720Dh;CAN郵箱1中郵箱趾M的2個字節(jié)CANMBX1C .set720Eh;CAN郵箱1中郵箱RAM的2個字節(jié)CANMBX1D .set720Fh;CAN郵箱1中郵箱RAM的2個字節(jié)CANMSGID2L .set7210h;CAN郵箱2消息標識符(低16位字)CANMSGID2H .set7211h;CAN郵箱2消息標識符(高16位字)CANMSGCTRL2 .set7212h;CAN郵箱2消息控制域寄存器CANMBX2A .set7214h;CAN郵箱2中郵箱RAM的2個字節(jié)CANMBX2B .set7215h;CAN郵箱2中郵箱RAM的2個字節(jié)CANMBX2C .set7216h;CAN郵箱2中郵箱RAM的2個字節(jié)CANMBX2D .set7217h;CAN郵箱2中郵箱RAM的2個字節(jié)CANMSGID3L .set7218h;CAN郵箱3消息標識符(低16位字)CANMSGID3H .set7219h;CAN郵箱3消息標識符(高16位字)CANMSGCTRL3 .set721Ah;CAN郵箱3消息控制域寄存器CANMBX3A .set721Ch;CAN郵箱3中郵箱RAM的2個字節(jié)CANMBX3B .set721Dh;CAN郵箱3中郵箱RAM的2個字節(jié)CANMBX3C .set721Eh;CAN郵箱3中郵箱RAM的2個字節(jié)CANMBX3D .set721Fh;CAN郵箱3中郵箱RAM的2個字節(jié)CANMSGID4L .set7220h;CAN郵箱4消息標識符(低16位字)CANMSGID4H .set7221h;CAN郵箱4消息標識符(高16位字)CANMSGCTRL4 .set7222h;CAN郵箱4消息控制域寄存器CANMBX4A .set7224h;CAN郵箱4中郵箱RAM的2個字節(jié)CANMBX4B .set7225h;CAN郵箱4中郵箱RAM的2個字節(jié)CANMBX4(2 .set7226h;CAN郵箱4中郵箱RAM的2個字節(jié)CANMBX4D .set7227h;CAN郵箱4中郵箱RAM的2個字節(jié)CANMSGID5L .set7228h;CAN郵箱5消息標識符(低16位字)CANMSGID5H .set7229h;CAN郵箱5消息標識符<高16位字)CANMSGCTRL5 .set722Ah;CAN郵箱5消息控制域寄存器CANMBX5A .set722Ch;CAN郵箱5中郵箱RAM的2個字節(jié)CANMBX5B .set722Dh;CAN郵箱5中郵箱RAM的2個字節(jié)CANMBX5C .set722Eh;CAN郵箱5中郵

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論