DSP匯編編程及應(yīng)用舉例._第1頁
DSP匯編編程及應(yīng)用舉例._第2頁
DSP匯編編程及應(yīng)用舉例._第3頁
DSP匯編編程及應(yīng)用舉例._第4頁
DSP匯編編程及應(yīng)用舉例._第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1. DSP匯編語言程序的編寫(1)匯編語言源程序以.asm為其擴(kuò)展名。匯編語言源程序的每一行都可以由4個部分組成,句法如下:標(biāo)號:助記符操作數(shù);注釋其中可用空格或TAB鍵隔開標(biāo)號一一供本程序的其他部分或其他程序調(diào)用。標(biāo)號是任選項(xiàng),標(biāo)號后面可以加也可以不加冒號“:”。標(biāo)號必須從第一列寫起,標(biāo)號最多可達(dá)到32個字符(AZ , az , 09 , _以及$),但第1個字符不能以數(shù)字開頭。引用標(biāo)號時,標(biāo)號的大小寫必須一致。標(biāo)號的值就是SPC (段程序計(jì)數(shù)器)的值。如果不用標(biāo)號,則第一個字符必須為空格、分號或星號(* )。助記符 助記符指令、匯編指令、宏指令和宏調(diào)用。作為助記符指令,一般用大寫;匯編命

2、令和宏指令,以英文句號“.”開始,且為小寫。 匯編命令可以形成常數(shù)和變量,當(dāng)用它1列??刂茀R編和連接過程時,可以不占用存儲空間。指令和匯編命令都不能寫在第操作數(shù)指令中的操作數(shù)或匯編命令中定義的內(nèi)容。操作數(shù)之間必須用逗號“,”分開。有的指令操作無操作數(shù),如NOP、 RESET。注釋一一注釋從分號“;”開始,可以放在指令或匯編命令的后面,也可以放在單獨(dú)的一行或數(shù)行。注釋是任選項(xiàng)。如果注釋從第1列開始,也可以用“ *”表示注釋。(3)常用的匯編命令如表所示。匯編命令作用舉例.title緊隨其后的是匯編語言程序正文.title“ exa mp le.asm”.end結(jié)束匯編命令放在匯編語言程序的最后.

3、text緊隨其后的是匯編語言程序正文經(jīng)匯編后,緊隨.text后的是可執(zhí)行程 序代碼.data緊隨其后的是已初始化數(shù)據(jù)有兩種數(shù)據(jù)形式:.i nt和.用來設(shè)置一個或多個16位無符號整型量常數(shù).word.word用來設(shè)置一個或多個 16位符 號整型量常數(shù)table: .word 1,2,3,4.word 6,8,4,2表示在程序存儲器標(biāo)號為table開始的8個單兀中存放初始化數(shù)據(jù) 1, 2, 3, 4, 6, 8, 4, 2.bss.bss為未初始化變量保留存儲空間.bss x,4表示在數(shù)據(jù)存儲器中空出4個存儲單兀存放變量 x1 , x2 , x3和x4.sect建立包含代碼

4、和數(shù)據(jù)的自定義段.sect“ vectors ”定義向量表,緊隨其后的是復(fù)位向量和中斷向量,名為vectors.usect為未初始化變量保留存儲空間的自定義段STACK .usect“STACK ,10h在數(shù)據(jù)存儲器中留出16個單元作為堆棧區(qū),名為STACK匯編語言程序中的數(shù)據(jù)形式如表所示形式舉例二進(jìn)制1110001b或 1111001B八進(jìn)制226q或 572Q十進(jìn)制1234 或+ 1234 或1234 (缺省型)十八進(jìn)制0A40h 或 0A40H 或 0xA40浮點(diǎn)數(shù)1.654e 23 (僅C語言程序中能用,匯編程序中不能用)字符 D'字符串this IS a stri ng2.程

5、序2. 1程序 編程目的:了解 DSP的輸入和輸出方法程序功能:求乘積之和y=a1*x1+a2*x2+a3*x3+a4*x4.title "mp y_add.asm".mmregs;將存儲映像寄存器導(dǎo)入列表STACK.usect"STACK",10h;給堆棧段分配空間.bss a,4;將9個字空間分配給各個變量.bss x,4.bss y,1PA0.set 0;將端口 PA0全部置0.def start;定義標(biāo)號start.data;定義數(shù)據(jù)代碼段table:.word4,4,4,4.word4,4,4,4.text;定義文本代碼段start:STM#0

6、,SWWSR;將等待寄存器設(shè)為 0,表示不等待STM#STACK+10h,S P#a,AR1#7;;設(shè)堆棧指針;將AR1指向變量a的地址從程序存儲空間轉(zhuǎn)移 7+1個值到數(shù)據(jù)儲存空間STMRPTMVPDtable,*AR1 +CALLSUM;調(diào)用SUM子程序en d:Bend;循環(huán)等待SUM:STM#a,AR3;將AR3指向變量a的地址STM#x,AR4;將AR4指向變量X的地址RPTZA,#3;將A清0,并重復(fù)執(zhí)行下一條指令3 + 1次MAC*AR3+,*AR4+,ASTLA,y;將寄存器A中的低16位存入y地址空間PORTWy, PA0;將y地址中的值輸出到輸出口RET;子程序返回.end;

7、程序結(jié)束等待位的設(shè)置:編程等待狀態(tài)發(fā)生器可將外部總線周期延長多達(dá)C54X片內(nèi)有一部件一一軟件可編程等待狀態(tài)發(fā)生器,控制著外部總線的工作。軟件可 7個周期,這樣一來,C54X能很方便的與外部慢速器件相接口。如果外部器件要求插入7個以上的等待周期,則可以利用硬件READY先來接口。當(dāng)所有的外部尋址都配置在0等待狀態(tài)時,加到等待狀態(tài)發(fā)生器的時鐘 被關(guān)斷;來自內(nèi)部時鐘的這些通道被切斷后,可以降低處理器的功耗。軟件可編程等待狀態(tài)發(fā)生器的工作由16位的軟件等待狀態(tài)寄存器(SWWSR )的控制,它是存儲器映象寄存器,在數(shù)據(jù)空間的地址為0028h。將程序空間和數(shù)據(jù)空間都分成兩個32K字塊,I/O空間由一個64

8、K字塊組成。這5個字塊空間在SWWSR中都相應(yīng)的有一個 3位字段,用來定義各個空間插入等待狀態(tài)的數(shù)目 :1514 12119865320保留/XPA(僅 C548,'C549)I/O空間(64K)數(shù)據(jù)空間(高32K)數(shù)據(jù)空間(低32位)程序空間(高32位)程序空間(低32位)RR/WR/WR/WR/WR/W上述SWWSR的各個3位字段規(guī)定的插入等待狀態(tài)的最小數(shù)為0 (不插入等待周期),最大數(shù)為 7( 111b)。2. 2程序二編程目的:熟悉 DSP匯編程序設(shè)計(jì)技巧,完善輸出功能程序功能:實(shí)現(xiàn)一8位LED燈由左到右循環(huán)閃爍.title "bubble.asm".mmr

9、egs;將存儲映像寄存器導(dǎo)入列表STACK.usect"STACK",5h ;給堆棧段分配空間.bss y,1.def start.dataPAO.set 0.textstart:STM#7000,SWWSR;設(shè)等待位STM#2,AR3;將輔助寄存器 AR3設(shè)為2 (乘2,實(shí)現(xiàn)左移)STM#6,AR1;將輔助寄存器AR1設(shè)為6 (左移7次)STM#3,AR2;將輔助寄存器 AR2設(shè)為3 (循環(huán)執(zhí)行4次)LDAR3,T;將T (乘法寄存器)設(shè)為 2loo p1:LD#1,A;A寄存器值為1STLA,y;y= 1PORTWy, PA0;輸出y地址內(nèi)的值到輸出口STM#10000

10、,AR4;將輔助寄存器 AR4設(shè)為10000loop 3:RPT#10000;重復(fù)執(zhí)行下一指令 10000+ 1次NOP;等待BANZloo p3,*AR4-;循環(huán)AR4值10000 + 1次Ioop2:MPYy,A;將yx T,其值存入A寄存器STLA,y;將A的值存入y地址中P ORTWy, PA0;輸出y地址值到輸出口STM#10000,AR5;將輔助寄存器 AR5設(shè)為10000loop 4:RPT#10000;實(shí)現(xiàn)第8個燈跳轉(zhuǎn)到第1個燈時的時間延遲NOPBANZloo p4 ,*AR5-BANZloo p2,*AR1-BANZloo p1,*AR2-end:Bend.end數(shù)據(jù)尋址方式

11、:C54X共有7種數(shù)據(jù)尋址方式,如表所示:尋址方式用途舉例指令含義立即尋址主要用于初始化LD# 10, A將立即數(shù)10傳送至累加器A絕對尋址利用16位地址尋址存儲單元STL A, *(y)將累加器A的低16 位存放到變量y所在 的存儲單元中累加器尋址把累加器的內(nèi)容作為地址READY A X按累加器A作為地址 讀程序存儲器,并存 入變量X所在的數(shù)據(jù) 存儲器單元直接尋址利用數(shù)據(jù)頁指針和堆棧指針尋址LD x,A(DP+X的低7位地址)>A間接尋址利用輔助寄存器作為地址指針LD *AR1,A(AR1)>A存儲器映象寄存器尋址快速尋址存儲器映象寄存器LDM ST1 , B(ST1) >

12、B堆棧尋址壓入/彈出數(shù)據(jù)存儲 器和MMR (存儲器 映象寄存器)PSHM AG(SP) 1 >SP,(AG ) >TOS'C54X尋址存儲器有兩種基本的數(shù)據(jù)形式:16位數(shù)和32位數(shù)。大多數(shù)指令能夠?qū)ぶ?6位數(shù),但是,只有雙精度和長字指令才能尋址32位數(shù)。1個字處在偶地在32位尋址時,先處理高有效字,然后處理低有效字。如果尋址的第址,那么第2個字就處在下一個(較高的)地址;如果第 1個字處在奇地址,那么第 2個 字就處在前一個(較低的)地址。循環(huán)操作:BANZ在程序設(shè)計(jì)時,經(jīng)常需要重復(fù)執(zhí)行某一段程序。利用BANZ (當(dāng)輔助寄存器部位 0時轉(zhuǎn)移)指令執(zhí)行循環(huán)技術(shù)和操作是十分方便

13、的。如果要重復(fù)執(zhí)行n次,則重復(fù)指令中應(yīng)規(guī) 定計(jì)數(shù)值為n 1次。重復(fù)操作:C54X有3條重復(fù)操作指令:RPT (重復(fù)下條指令)、RPTZ (累加器清0并重復(fù)下條指 令)以及RPTB (塊重復(fù)指令)。n次,重復(fù)指令RPT或RPTZ允許重復(fù)執(zhí)行緊隨其后的那一條指令。如果要重復(fù)執(zhí)行 則重復(fù)指令中應(yīng)規(guī)定計(jì)數(shù)值為 n- 1次。2 3 程序三 編程目的:實(shí)現(xiàn) DSP 分時輸入與輸出功能再從該地址將數(shù)據(jù)輸出到另一個程序功能: 先從一個 I/O 口讀入一數(shù)據(jù)并將其存入某地址,I/O 口.title "dspio.asm".mmregsPA0.set 0PA1.set 1STACK.usect

14、 "STACK",10h.bss y,1y 所在的地址PORTR PA1,ystart:中(便于觀察 y 中數(shù)值的變化情況).textend:PORTW y,PA0 ;將 y 所在地址中的數(shù)據(jù)輸出到 I/O 口B end.end2.4 程序四編程目的:實(shí)現(xiàn) DSP 循環(huán)輸入與輸出功能程序功能:令 DSP 反復(fù)執(zhí)行從輸入裝置讀取數(shù)據(jù),并將數(shù)據(jù)存入某一地址,數(shù)據(jù)輸出到輸出設(shè)備.title "dspio2.asm".mmregsPA0.set 0PA1.set 1STACK.usect"STACK",10h.bss y,1.textstar

15、t:STM#4000,AR1; AR1 作循環(huán)計(jì)數(shù)器LOOP1:PORTRPA1,y ;循環(huán)讀寫LDy,APORTWy,PA0BANZLOOP1,*AR1;從 I/O 口讀入數(shù)據(jù)并儲存到;將 y 中的數(shù)據(jù)寫入累加器 Ay,ALD再從該地址將end:end.end2.5程序五編程目的:應(yīng)用 DSP實(shí)現(xiàn)對壓水堆大破口事故(LOCA )進(jìn)行事故后果判斷編程背景:當(dāng)始發(fā)事件大 LOCA發(fā)生時,需要下列功能響應(yīng)以消除或緩解事故:(1)停堆(RS),中止核裂變過程;(2)安全殼噴淋系統(tǒng)動作,以降低安全殼壓力(COI );向堆芯注入應(yīng)急冷卻水(ECI),以冷卻堆芯;(4)安全殼再循環(huán)冷卻(COR),由循環(huán)噴

16、淋水導(dǎo)出安全殼內(nèi)熱量,控制安全殼的溫度核壓力;(5)堆芯再循環(huán)冷卻(ECR),進(jìn)行堆芯再循環(huán)冷卻階段。功能事件樹圖如下圖所示破口堆次臨界安全殼降堆芯應(yīng)急完全殼降壓堆芯再循序列號堆芯是PBRS壓COI冷卻ECICOR環(huán)冷去卩ECR否熔化程序功能:反復(fù)從輸入口讀取數(shù)據(jù)(不同位分別代表執(zhí)行不同的功能響應(yīng)),經(jīng)DSP處理后將判斷結(jié)果輸出到輸出口,通過指示燈(不同的燈代表不同事故結(jié)果)顯示出來.title "LOCA.asm".mmregsPAO.set 0PA1.set 1STACK.usect.bss y,1.bss x,1.def start.data"STACK&q

17、uot;,10htable:.word0,128,0,128,0,32,0,32,0,128,0.word128,0,32,0,32,0,0,0,0,0.word4,0,4,0,0,0,0,0,4,0.word4,0,0,0,0,0,0,0,0,0;事故分析列表start:LOOP1:.word0,0,0,0,0,0,0,0,0,0.word0,0,2,0,2,0,0,0,0,0.word2,0,2,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word16,0,16,

18、0,0,0,0,0,16,0.word16,0,0,0,0,0,1,0,1,0.word0,0,0,0,1,0,1,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,0,0.word0,0,0,0,0,0,0,0,8,0.word8,0,0,0,0,0,8,0,8,0.word64,0,64,0,0,0,0,0,64,0.word64,0,0,0,0,0,0,0,0,0

溫馨提示

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

最新文檔

評論

0/150

提交評論