欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      DSP實驗教案(5篇范文)

      時間:2019-05-13 00:21:06下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《DSP實驗教案》,但愿對你工作學(xué)習(xí)有幫助,當然你在寫寫幫文庫還可以找到更多《DSP實驗教案》。

      第一篇:DSP實驗教案

      匯編語言程序設(shè)計實驗

      實驗一 程序的控制與轉(zhuǎn)移

      一、實驗?zāi)康?/p>

      1、掌握條件算符的使用。

      2、掌握循環(huán)操作指令(BNAZ)

      二、實驗設(shè)備

      計算機、DSP實驗箱、ccs5000軟件。

      三、實驗內(nèi)容:

      編寫程序,實現(xiàn)計算的值。

      四、實驗步驟

      1、用仿真器將計算機與DSP實驗箱連接好,并依次打開實驗箱電源、仿真器電源,然后運行CCS 軟件。

      2、新建一個項目:點擊Project-New,將項目命名為example2,并將項目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因為CCS 軟件不能識別以中文命名的文件夾。

      3、新建一個源文件:點擊File-New-Source File可以打開一個文本編輯窗口,點擊保存按鍵,保存在和項目相同的一個文件夾下面(example2),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實驗中的例程是使用匯編語言編寫的,所以選擇*.ASM 為保存類型),我們在這里將保存名字命名為example2.asm。

      4、在項目中添加源文件:在新建了一個源文件以后,要想使用CCS 編譯器對該源文件進行編譯還需要將源文件添加到項目中去。添加方法是在工程管理器中右鍵單擊example2.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的example2.asm 文件添加到該項目中去。

      5、編寫源程序:

      在工程管理器中雙擊example2.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容:

      .title “example2.asm”.mmregs STACK.usect “STACK”,10H;堆棧的設(shè)置

      .bss x,5;為變量分配6 個字的存儲空間.bss y,1.def _c_int00;start.data table:.word 10,20,3,4,5;x1,x2,x3,x4,x5.text;start: STM #0,SWWSR;插入0 個等待狀態(tài) _c_int00: STM #0,SWWSR STM #STACK+10H,sp;設(shè)置堆棧指針 STM #x,AR1;AR1指向x RPT #4;下一條被重復(fù)執(zhí)行5 遍

      MVPD table,*AR1+;把程序存儲器中的數(shù)據(jù)傳送到數(shù)據(jù)存儲器 LD #0,A;A清零

      CALL SUM;調(diào)用求和函數(shù) end: B end

      SUM: STM #x,AR3;AR3指向x STM #4,AR2;AR2=4 loop: ADD *AR3+,A;*AR3+A-->A,然后AR3+ BANZ loop,*AR2-;如果AR2 的值不為0,則跳到loop 處;;否則執(zhí)行下一條指令

      STL A,*(y);把A 的低16 位賦給變量y RET.end 提示:

      (1)源代碼的書寫有一定的格式,初學(xué)者往往容易忽視。每一行代碼分為三個區(qū):標號區(qū)、指令區(qū)和注釋區(qū)。標號區(qū)必須頂格寫,主要是定義變量、常量、程序標識時的名稱。指令區(qū)在標號區(qū)之后,以空格或TAB 格開。如果沒有標號,也必須在指令前面加上空格或TAB,不能頂格。注釋區(qū)在標號區(qū)、程序區(qū)之后,以分號開始。注釋區(qū)前面可以沒有標號區(qū)或程序區(qū)。另外還有專門的注釋行,以*打頭,必須頂格開始。(2)一般區(qū)分大小寫,除非加編譯參數(shù)忽略大小寫。

      (3)標點符號有時不注意會打成中文全角版本號導(dǎo)致錯誤。

      6、編寫鏈接配置文件:

      只有匯編源程序是不夠的,一個完整的DSP 程序至少包含三個部分:主程序、中斷向量表、鏈接配置文件(*.cmd)。這里先介紹一下鏈接配置文件。鏈接配置文件有很多功能,這里先介紹最常用的也是必須的兩條:1.存貯器的分配 2.標明程序入口。

      由于每個程序都需要一個鏈接配置文件,每個程序的鏈接配置文件根據(jù)實際情況的需要都略有不同,下面就為本實驗的程序編寫一個鏈接配置文件,其它實驗的鏈接配置文件都可以參考與本書配套的相應(yīng)例程來完成: /*example2.cmd */ vectors.obj /*中斷向量的目標文件*/ example2.obj /*產(chǎn)生目標文件*/-o example2.out /*產(chǎn)生可執(zhí)行下載文件,文件名可以根據(jù)不同項目而定*/-m example2.map /*產(chǎn)生存儲器映射文件,文件名可以根據(jù)不同項目而定 */

      MEMORY {

      PAGE 0: /*定義程序存貯區(qū)*/ EPROG:

      origin = 0x4000, len = 0x3f80

      VECT:

      origin = 0x7f80,len = 0x80

      PAGE 1: /*定義數(shù)據(jù)存貯區(qū)*/ SYSREGS:

      origin = 0x00,len = 0x60

      BIOSREGS:

      origin = 0x60,len = 0x20

      IDATA:

      origin = 0x80,len = 0x3f00

      EDATA:

      origin = 0x8000,len = 0x8000 } SECTIONS {

      .text :> EPROG PAGE 0 /*將.text 段映射到PAGE0 的EPROM 區(qū)*/.data :> EPROG PAGE 0 /*將.data 段映射到PAGE0 的EPROM 區(qū)*/.vectors: > VECT PAGE 0/*將中斷向量表定位到PAGE0 的VECS 區(qū)*/

      .bss: > IDATA PAGE 1 /*將.bss 段映射到PAGE1 的IDATA 區(qū)*/

      STACK: > IDATA PAGE 1 /*將.stack 段映射到PAGE1 的IDATA 區(qū)*/ }

      7、編寫中斷向量表文件;/* vectors.asm */.title “vectors.asm”;/*中斷向量表的文件名*/.ref _c_int00;start /*引用外部定義的標號*/.sect “.vectors”;/*定義初始化的段名*/ B _c_int00;start /*引用start*/.end

      8、對項目進行編譯和鏈接:

      把 example2.asm、vectors.asm、example2.cmd 依次添加到項目后,點擊Project-Compile File,在項目編譯成功之后點擊Project-Build 選項對該項目進行鏈接,生成*.OUT文件。

      9、裝載可執(zhí)行文件:

      要讓程序代碼在DSP內(nèi)部運行必需將生成的*.OUT文件裝載到DSP 內(nèi)部,裝載方法是點擊:File-Load Programe再選擇生成的example2.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲器中。

      10、運行程序并查看結(jié)果:

      a)首先打開欲查看的數(shù)據(jù)空間:點擊View-Memory,彈出“Memory Window Options”對話框,把欲查看的地址改為0x0080,如右圖所示。

      b)點擊 OK 按鈕,然后點擊 Debug-Run 讓程序在DSP 內(nèi)部運行,最后點擊Debug -Halt,再觀察“Memory ” 對話框,看是否與右圖一致。

      實驗二 堆棧的使用方法

      一、實驗?zāi)康?/p>

      掌握堆棧的使用方法。

      二、實驗設(shè)備

      計算機、DSP 實驗箱。

      三、實驗內(nèi)容

      編寫程序,觀察堆棧的使用情況。

      四、實驗步驟

      1、用仿真器將計算機與DSP 實驗箱連接好,并依次打開實驗箱電源、仿真器電源,然后運行CCS 軟件。

      2、新建一個項目:點擊Project-New,將項目命名為example3,并將項目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因為CCS 軟件不能識別以中文命名的文件夾。

      3、新建一個源文件:點擊File-New-Source File 可以打開一個文本編輯窗口,點擊保存按鍵,保存在和項目相同的一個文件夾下面(example3),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實驗中的例程是使用匯編語言編寫的,所以選擇*.ASM 為保存類型),我們在這里將保存名字命名為example3.asm。

      4、在項目中添加源文件:在新建了一個源文件以后,要想使用CCS 編譯器對該源文件進行編譯還需要將源文件添加到項目中去。添加方法是在工程管理器中右鍵單擊example3.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的example3.asm 文件添加到該項目中去。

      5、編寫源程序:

      在工程管理器中雙擊example3.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容:

      .title “example3.asm”.mmregs size.set 100 stack.usect “STK”,size;堆棧的設(shè)置

      .bss length,10H.def _c_int00;start.text _c_int00: B start;start: STM #0,SWWSR;插入0 個等待狀態(tài)

      STM #stack+size,SP;設(shè)置堆棧的指針 LD #-8531,A STM #size,AR1 MVMM SP,AR7 loop: STL A,*AR7-BANZ loop,*AR1-.end

      6、編寫鏈接配置文件:

      參照實驗一,需要更改的地方如下:

      7、編寫中斷向量表文件 參照實驗一,可不作修改。

      8、對項目進行編譯和鏈接:

      把 example3.asm、vectors.asm、example3.cmd 依次添加到項目后,點擊Project-CompileFile,在項目編譯成功之后點擊Project-Build 選項對該項目進行鏈接,生成*.out 文件。

      9、裝載可執(zhí)行文件:

      要讓程序代碼在 DSP 內(nèi)部運行必需將生成的*.OUT 文件裝載到DSP 內(nèi)部,裝載方法是點擊:File-Load Programe 再選擇生成的example3.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲器中。

      10、運行程序并查看結(jié)果:

      a)首先打開欲查看的數(shù)據(jù)空間:點擊View-Memory,彈出“Memory Window Options”對話框,把欲查看的地址改為0x0090,如右圖所示。

      b)點擊OK 按鈕,然后點擊Debug-Run 讓程序在DSP內(nèi)部運行,最后點擊Debug-Halt,再觀察“Memory ”對話框,看是否與下圖一致:

      實驗三 加減法和乘法運算

      一、實驗?zāi)康?/p>

      掌握加減法和乘法運算指令。

      二、實驗設(shè)備

      計算機、DSP 實驗箱。

      三、實驗內(nèi)容

      編寫程序,分別實現(xiàn)計算 z=x+y-w、y=mx+b、y=x1×a2+x2×a2、。

      四、實驗步驟

      1、用仿真器將計算機與DSP 實驗箱連接好,并依次打開實驗箱電源、仿真器電源,然后運行CCS 軟件。

      2、新建一個項目:點擊Project-New,將項目命名為example4,并將項目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因為CCS 軟件不能識別以中文命名的文件夾。

      3、新建一個源文件:點擊File-New-Source File 可以打開一個文本編輯窗口,點擊保存按鍵,保存在和項目相同的一個文件夾下面(example4),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實驗中的例程是使用匯編語言編寫的,所以選擇*.ASM 為保存類型),我們在這里將保存名字命名為example4.asm。

      4、在項目中添加源文件:在新建了一個源文件以后,要想使用CCS 編譯器對該源文件進行編譯還需要將源文件添加到項目中去。添加方法是在工程管理器中右鍵單擊example4.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的example4.asm 文件添加到該項目中去。

      5、編寫源程序:

      在工程管理器中雙擊example4.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容:

      ********** 計算 z=x+y-w **********.title “example4.asm”.mmregs STACK.usect “STACK”,10H;堆棧的設(shè)置

      .bss x,1;為變量分配4 個字的存儲空間.bss y,1.bss w,1.bss z,1.def _c_int00.data table.word 10,26,23;x,y,w.text _c_int00: STM #0,SWWSR;插入0 個等待狀態(tài)

      STM #STACK+10H,SP;設(shè)置堆棧指針 STM #x,AR1;AR1指向x RPT #2 MVPD table,*AR1+;把程序存儲器中的數(shù)據(jù)移動到數(shù)據(jù)存儲器 CALL SUMB end: B end

      SUMB: LD *(x),A ADD *(y),A SUB *(w),A STL A,*(z)RET.end

      6、編寫鏈接配置文件:

      參照實驗一,需要更改的地方如下:

      7、編寫中斷向量表文件 參照實驗一,可不作修改。

      8、對項目進行編譯和鏈接: 把 example4.asm、vectors.asm、example4.cmd 依次添加到項目后,點擊Project-Compile File,在項目編譯成功之后點擊Project-Build 選項對該項目進行鏈接,生成*.out 文件。

      9、裝載可執(zhí)行文件:

      要讓程序代碼在DSP 內(nèi)部運行必需將生成的*.OUT 文件裝載到DSP 內(nèi)部,裝載方法是點擊:File-Load Programe 再選擇生成的example4.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲器中。

      10、運行程序并查看結(jié)果:

      a)首先打開欲查看的數(shù)據(jù)空間:點擊View-Memory,彈出“Memory Window Options”對話框,把欲查看的地址改為0x0080,如右上圖所示。b)點擊OK 按鈕,然后點擊Debug-Run 讓程序在DSP 內(nèi)部運行,最后點擊Debug-Halt,再觀察“Memory ”對話框,看是否與右圖一致:

      11、建立其它項目工程文件

      建立項目工程文件 example5,使之實現(xiàn)計算y=mx+b;建立項目工程文件example6,使之實現(xiàn)計算y=x1×a2+x2×a2;建立項目工程文件example7,使之實現(xiàn)計算

      注:各源程序操作步驟均與前面相似,需要觀察的數(shù)據(jù)存儲器的地址均為0x0080;另外要注意對相應(yīng)的鏈接配置文件作相應(yīng)的修改。下面是它們的實驗結(jié)果:

      example5 的結(jié)果

      example6結(jié)果

      Example7 的結(jié)果

      實驗四 重復(fù)操作

      一、實驗?zāi)康?/p>

      掌握各種重復(fù)操作指令。

      二、實驗設(shè)備

      計算機、DSP 實驗箱。

      三、實驗內(nèi)容

      編寫程序,實現(xiàn)對數(shù)組初始化后再對每個元素加 1。

      四、實驗步驟

      1、用仿真器將計算機與DSP 實驗箱連接好,并依次打開實驗箱電源、仿真器電源,然后運行CCS 軟件。

      2、新建一個項目:點擊Project-New,將項目命名為example9,并將項目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因為CCS 軟件不能識別以中文命名的文件夾。

      3、新建一個源文件:點擊File-New-Source File 可以打開一個文本編輯窗口,點擊保存按鍵,保存在和項目相同的一個文件夾下面(example9),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實驗中的例程是使用匯編語言編寫的,所以選擇*.ASM為保存類型),我們在這里將保存名字命名為example9.asm。

      4、在項目中添加源文件:在新建立了一個源文件以后,要想使用CCS 編譯器對該源文件進行編譯還需要將源文件添加到項目中去。添加方法是在工程管理器中右鍵單擊example9.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的example9.asm 文件添加到該項目中去。

      5、編寫源程序:

      在工程管理器中雙擊example9.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容:

      ********** 學(xué)習(xí)塊重復(fù)操作指令:RPTB **********.title “example9.asm”.mmregs STACK.usect “STACK”,10H.bss x,5.def _c_int00.text _c_int00: STM #x,AR1 LD #2H,A;將數(shù)組每個元素初始化為2 RPT #4 STL A,*AR1+;把A 的低16 位賦給AR1 指向的變量x,然后AR1+1 LD #1,16,B;為每個元素加1 作準備 STM #4,BRC STM #x,AR4 RPTB next-1;next-1為循環(huán)結(jié)束地址 add *AR4,16,B,A STH A,*AR4+ next: LD #0,B end: B end.end

      6、編寫鏈接配置文件:

      參照實驗一,需要更改的地方如下: 更改前 更改后

      7、編寫中斷向量表文件 參照實驗一,可不作修改。

      8、對項目進行編譯和鏈接: 把 example9.asm、vectors.asm、example9.cmd依次添加到項目后,點擊Project-Compile File,在項目編譯成功之后點擊Project-Build 選項對該項目進行鏈接,生成*.out 文件。

      9、裝載可執(zhí)行文件:

      要讓程序代碼在 DSP 內(nèi)部運行必需將生成的*.OUT 文件裝載到DSP 內(nèi)部,裝載方法是點擊:File-Load Programe 再選擇生成的example9.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲器中。

      10、運行程序并查看結(jié)果:

      a)首先打開欲查看的數(shù)據(jù)空間:點擊View-Memory,彈出“Memory Window Options”對話框,把欲查看的地址改為0x0080,如右圖所示。b)點擊OK 按鈕,然后點擊Debug-Run 讓程序在DSP 內(nèi)部運行,最后點擊Debug-Halt,再觀察“Memory ”對話框,看是否與下圖一致:

      11、試用數(shù)據(jù)塊傳送指令實現(xiàn)數(shù)組初始化:把上述程序中的“STLA,*AR1+”改成“MVPD table,*AR1+”,看實現(xiàn)結(jié)果是否一致。

      實驗五 數(shù)據(jù)塊傳送

      一、實驗?zāi)康?/p>

      掌握各種數(shù)據(jù)塊傳送操作指令。

      二、實驗設(shè)備

      計算機、DSP 實驗箱.三、實驗內(nèi)容

      編寫程序,實現(xiàn)把數(shù)據(jù)從程序存儲器傳送到數(shù)據(jù)存儲器,以及從數(shù)據(jù)存儲器傳送到程序存儲器。

      四、實驗步驟

      1、用仿真器將計算機與DSP 實驗箱連接好,并依次打開實驗箱電源、仿真器電源,然后運行CCS 軟件。

      2、新建一個項目:點擊Project-New,將項目命名為zhao3,并將項目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因為CCS 軟件不能識別以中文命名的文件夾。

      3、新建一個源文件:點擊File-New-Source File 可以打開一個文本編輯窗口,點擊保存按鍵,保存在和項目相同的一個文件夾下面(zhao3),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實驗中的例程是使用匯編語言編寫的,所以選擇*.ASM為保存類型),我們在這里將保存名字命名為zhao3.asm。

      4、在項目中添加源文件:在新建立了一個源文件以后,要想使用CCS 編譯器對該源文件進行編譯還需要將源文件添加到項目中去。添加方法是在工程管理器中右鍵單擊zhao3.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的zhao3.asm 文件添加到該項目中去。

      5、編寫源程序:

      在工程管理器中雙擊zhao3.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容: ************ 學(xué)習(xí)數(shù)據(jù)塊傳送指令:MVPD、MVDD ************.title “zhao3.asm”.mmregs STACK.usect “STACK”,30H.bss x,20.bss y,20.data table:.word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20.def _c_int00.text _c_int00: STM #x,AR1 RPT #19 MVPD table,*AR1+;程序存儲器傳送到數(shù)據(jù)存儲器 STM #x,AR2 STM #y,AR3 RPT #19 MVDD *AR2+,*AR3+;數(shù)據(jù)存儲器傳送到數(shù)據(jù)存儲器 end: B end.end

      6、編寫鏈接配置文件: 參照實驗一,需要更改的地方如下: 更改前 更改后

      7、編寫中斷向量表文件 參照實驗一,可不作修改。

      8、對項目進行編譯和鏈接:

      把 zhao3.asm、vectors.asm、zhao3.cmd 依次添加到項目后,點擊Project-Compile File,在項目編譯成功之后點擊Project-Build 選項對該項目進行鏈接,生成*.out 文件。

      9、裝載可執(zhí)行文件:

      要讓程序代碼在DSP 內(nèi)部運行必需將生成的*.OUT 文件裝載到DSP 內(nèi)部,裝載方法是點擊:File-Load Programe 再選擇生成的zhao3.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲器中。

      10、運行程序并查看結(jié)果:

      a)首先打開欲查看的數(shù)據(jù)空間:點擊View-Memory,彈出“Memory Window Options”對話框,把欲查看的地址改為0x0080,如右圖所示。

      c)點擊 OK 按鈕,然后點擊Debug-Run 讓程序在DSP 內(nèi)部運行,最后點擊Debug-Halt,再觀察“Memory ”對話框,看是否與下圖一致:

      實驗六 除法運算

      一、實驗?zāi)康?/p>

      掌握除法運算的實現(xiàn)方法。

      二、實驗設(shè)備

      計算機、DSP 實驗箱。

      三、實驗內(nèi)容

      分別編寫程序,實現(xiàn)計算 0.4÷(-0.8)和16384÷512 的值。

      四、實驗步驟

      1、用仿真器將計算機與DSP 實驗箱連接好,并依次打開實驗箱電源、仿真器電源,然后運行CCS 軟件。

      2、新建一個項目:點擊Project-New,將項目命名為zhao9f,并將項目保存在自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,因為CCS 軟件不能識別以中文命名的文件夾。

      3、新建一個源文件:點擊File-New-Source File 可以打開一個文本編輯窗口,點擊保存按鍵,保存在和項目相同的一個文件夾下面(zhao9f),保存類型選擇*.ASM(如果源文件是C 語言編寫的,保存類型選擇*.C,本實驗中的例程是使用匯編語言編寫的,所以選擇*.ASM為保存類型),我們在這里將保存名字命名為zhao9f.asm。

      4、在項目中添加源文件:在新建立了一個源文件以后,要想使用CCS 編譯器對該源文件進行編譯還需要將源文件添加到項目中去。添加方法是在工程管理器中右鍵單擊zhao9f.pjt,在彈出的菜單中選擇Add Files,然后將剛才建立的zhao9f.asm 文件添加到該項目中去。

      5、編寫源程序:

      在工程管理器中雙擊zhao9f.asm,將出現(xiàn)文本編輯窗口,在該文本編輯窗口中輸入如下內(nèi)容:

      ********************************* * |被除數(shù)|<|除數(shù)|,商為小數(shù) * * 計算0.4÷(-0.8)的值 * *********************************.title “zhao9f.asm”.mmregs STACK.usect “STACK”,10H.bss num,1;分子.bss den,1;分母.bss quot,1;商.data table:.word 4*32768/10;-128.word-8*32768/10;1024.def _c_int00.text _c_int00: LD #1H,DP;設(shè)置數(shù)據(jù)頁指針,使DP 指向第1 頁(80H 處)STM #num,AR1 RPT #1 MVPD table,*AR1+;傳送2 個數(shù)據(jù)至分子、分母 LD @den,16,A;將分母移到累加器A(31~16)MPYA @num;(num)*(A(31~16))->B,獲取商的符號;(在累加器B 中)ABS A;分母取絕對值

      STH A,@den;分母取絕對值存回原處

      LD @num,16,A;將分子移到累加器A(32~16)ABS A;分子取絕對值

      RPT #14;15次減法循環(huán),完成除法 SUBC @den,A XC 1,BLT;如果B<0(商為負數(shù)),則需要變號 NEG A STL A,@quot;保存商 end: B end.end

      6、編寫鏈接配置文件:

      參照實驗一,需要更改的地方如下:

      7、編寫中斷向量表文件 參照實驗一,可不作修改。

      8、對項目進行編譯和鏈接:把 zhao9f.asm、vectors.asm、zhao9f.cmd 依次添加到項目后,點擊Project-Compile File,在項目編譯成功之后點擊Project-Build 選項對該項目進行鏈接,生成*.out 文件。

      9、裝載可執(zhí)行文件:

      要讓程序代碼在 DSP 內(nèi)部運行必需將生成的*.OUT文件裝載到DSP 內(nèi)部,裝載方法是點擊:File-LoadPrograme 再選擇生成的zhao9f.out 文件就可以將程序裝載到DSP 的內(nèi)部存儲器中。

      10、運行程序并查看結(jié)果: a)首先打開欲查看的數(shù)據(jù)空間:點擊View-Memory,彈出“Memory Window Options”對話框,把欲查看的地址改為0x0080,如右圖所示。

      b)點擊OK 按鈕,然后點擊Debug-Run 讓程序在 DSP 內(nèi)部運行,最后點擊Debug-Halt,再觀察“Memory ”對話框,看是否與右圖一致:

      11、上述程序是商為小數(shù)的除法,下面編寫商為整數(shù)的除法:

      a)建立項目工程文件zhao9g,編寫源程序zhao9g.asm,并與zhao9f.asm 作一比較。以下是源程序:

      ******************************** * |被除數(shù)|>=|除數(shù)|,商為整數(shù) * * 計算16384÷512 的值 * ********************************.title “zhao9g.asm”.mmregs STACK.usect “STACK”,10H.bss num,1;分子.bss den,1;分母.bss quot,1;商.data table:.word 16384;更改被除數(shù) 66*32768/100.word 512

      ;更改除數(shù)-33*32768/100.def _c_int00.text _c_int00: LD #0020H,DP;指定數(shù)據(jù)頁指針

      STM #num,AR1 RPT #1 MVPD table,*AR1+;傳送2 個數(shù)據(jù)至分子、分母 LD @den,16,A;將分母移到累加器A(31~16)MPYA @num;(num)*(A(31~16))->B,獲取商的符號;(在累加器B 中)ABS A;分母取絕對值

      STH A,@den;分母取絕對值存回原處 LD @num,A;將分子移到累加器A(32~16)ABS A;分子取絕對值

      RPT #15;16次減法循環(huán),完成除法 SUBC @den,A XC 1,BLT;如果B<0(商為負數(shù)),則需要變號 NEG A STL A,@quot;保存商 end: B end.end b)編寫鏈接配置文件:

      參照實驗一,需要更改的地方如下:

      c)編寫中斷向量表文件 參照實驗一,可不作修改。

      d)把各文件添加到項目中并對項目進行編譯和鏈接并下載到DSP 內(nèi)部,具體方法請參照前面的步驟。

      d)運行程序并查看結(jié)果:

      首先打開欲查看的數(shù)據(jù)空間:點擊View-Memory,彈出“Memory Window Options” 對話框,把欲查看的地址改為0x0080,如右圖所示。運行程序后,結(jié)果如下:

      實驗七 定時器中斷實驗

      一、實驗?zāi)康?/p>

      1、掌握DSP 中斷技術(shù),學(xué)會對DSP 中斷的處理方法。

      2、掌握中斷對于程序流程的控制,理解DSP 對于中斷的響應(yīng)時序。

      3、掌握匯編語言編寫中斷的基本方法。

      二、實驗設(shè)備

      計算機、DSP實驗箱。

      二、實驗原理

      DSP一般情況下均支持軟件中斷和硬件中斷。軟件中斷由指令引起,如INTR、TRAP、RESET;硬件中斷由外部中斷信號和內(nèi)部中斷信號引起,外部硬件中斷如INT0-INT2,內(nèi)部硬件中斷包括定時器、串口、主機接口等引起的中斷。軟件中斷不分優(yōu)先級,硬件中斷有優(yōu)先級。中斷寄存器有中斷標志寄存器IFR 和中斷屏蔽寄存器IMR。

      1、中斷標志寄存器(Interrupt Flag Register,IFR)是一個存儲器映像寄存器,當某個中斷觸發(fā)時,寄存器的相應(yīng)位置1,直到中斷處理完畢為止。IFR 各位的意義如圖:

      不同型號DSP 的IFR的5-0 位對應(yīng)的中斷源完全相同,是外部中斷和通信中斷標志位。其它15-6 位中斷源根據(jù)芯片的不同,定義的中斷源不同。當對芯片進行復(fù)位、中斷處理完畢,寫1于IFR的某位,執(zhí)行INTR 指令等硬件或軟件中斷操作時,IFR的相應(yīng)位置1,表示中斷發(fā)生。通過讀IFR 可以了解是否有已經(jīng)被掛起的中斷,通過寫IFR可以清除被掛起的中斷。在以下3 種情況下將清除被掛起的中斷。(1)復(fù)位(包括軟件和硬件復(fù)位)。(2)置位1 寫入相應(yīng)的IFR 標志位。

      (3)使用相應(yīng)的中斷號響應(yīng)該中斷,即使用INTR #K 指令。若有掛起的中斷,在IFR中該標志位為1,通過寫IFR 的當前內(nèi)容,就可以清除所有正被掛起的中斷;為了避免來自串口的重復(fù)中斷,應(yīng)在相應(yīng)的中斷服務(wù)程序中清除IFR 位。

      2、中斷屏蔽寄存器

      中斷屏蔽寄存器(Interrupt Mask Register,IMR),是用于屏蔽外部和內(nèi)部的硬件中斷。通過讀IMR 可以檢查中斷是否被屏蔽,通過寫可以屏蔽中斷(或解除中斷屏蔽),在IMR 位置0,則屏蔽該中斷。IMR 不包含/RS 和NMI,復(fù)位時IMR 均設(shè)為0,TMS320C5410a 中斷屏蔽寄存器IMR 各位的意義如下:

      硬件中斷信號產(chǎn)生后能否引起DSP 執(zhí)行相應(yīng)的中斷服務(wù)程序還取決于以下四點(復(fù)位和NMI 除外,它們不可屏蔽):

      (1)、狀態(tài)寄存器ST1 的INTM 位為0,即中斷方式位,允許可屏蔽中斷;INTM 為1,禁止可屏蔽中斷。若中斷響應(yīng)后INTM 自動置1,則其它中斷將不被響應(yīng)。在ISR(中斷服務(wù)程序)中以RETE 指令返回時,INTM 位自動清0,INTM 位可用軟件置位,如指令SSBX INTM(置1)和RSBX INTM(清0)。

      (2)、當前沒有響應(yīng)更高優(yōu)先級的中斷。

      (3)、中斷屏蔽寄存器IMR 中對應(yīng)此中斷的位為1。在IMR 中相應(yīng)位為1,表明允許該中斷。(4)、在中斷標志寄存器(IFR)中對應(yīng)位置為1。

      TMS320C54x 中,中斷向量地址由PMST 寄存器中的9 位中斷向量地址指針I(yè)PTR 和左移2位后的中斷向量序號(中斷向量序號位0~31,左移2 位后變成7 位)所組成。例如:已知中斷向量序號INT0=0001 0000B=10H,中斷向量地址指針I(yè)PTR=0001H,求中斷向量地址?

      因為中斷向量序號左移2 位后變成100 0000B=40H 所以中斷向量地址為0000 0000 1100 0000B=00C0H 復(fù)位時,IPTR 位置全1(IPTR=1FFH),并按此值將復(fù)位中斷向量映射到程序存儲器的511頁空間。所以硬件復(fù)位后,程序地址總是PC=1111 1111 1000 0000B=0FF80H,即總是從0FF80H開始執(zhí)行程序。而且,硬件復(fù)位地址是固定不變的,其他中斷向量可以通過改變內(nèi)容重新安排中斷程序的地址。例如中斷向量地址指針I(yè)PTR=0001H,中斷向量就被移到0080H 開始的程序存儲空間。

      當DSP響應(yīng)中斷時,將依次完成以下步驟:

      (1)、發(fā)出IACK 信號,并清除IFR 中相應(yīng)的中斷標志位。(2)、將PC 值(返回地址)壓入堆棧。(3)、取中斷向量。

      (4)、跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序。

      (5)、保存應(yīng)保護的寄存器和變量,壓入堆棧。(6)、執(zhí)行中斷處理程序。

      (7)、恢復(fù)保護的內(nèi)容,從堆棧彈出。(8)、中斷返回,從堆棧中彈出返回地址。(9)、繼續(xù)執(zhí)行原先的程序。

      本實驗是利用DSP內(nèi)部的定時器產(chǎn)生中斷來完成中斷實驗,這里先簡要介紹一下DSP內(nèi)部的定時器:TMS320VC5410a有一個16 位的定時器,定時器帶有一個4位預(yù)分頻器PSC和16位定時計數(shù)器TIM。CPUCLOCK時鐘先經(jīng)PSC預(yù)分頻后,用分頻的時鐘再對TIM 作減1計數(shù),當TIM減為0 時,將在定時器輸出管腳TOUT上產(chǎn)生一個脈沖,同時產(chǎn)生定時器中斷請求,并將定時器周期寄存器PRD的值裝入TIM。

      定時器由TIM、PRD、TCR 三個寄存器和相應(yīng)的輸出管腳TOUT組成。(1)TIM 在數(shù)據(jù)存儲器中的地址為0024H,是減1計數(shù)器。(2)PRD 地址為0025H,存放定時時間常數(shù)。

      (3)TCR 地址為0026H,存儲定時器的控制及狀態(tài)位。定時器產(chǎn)生中斷的計算公式如下:

      定時周期=CLKOUT*(TDDR+1)*(PRD+1)TMS320VC5410a 的定時器可以被特定的狀態(tài)位實現(xiàn)停止、重新啟動、重新設(shè)置或禁止??梢允褂迷摱〞r器產(chǎn)生周期性的CPU 中斷。

      定時器初始化的步驟為:

      (1)、將TCR 中的TSS 位置1,關(guān)閉定時器。(2)、修改PRD。

      (3)、重新設(shè)置TCR:令TSS=0,TRB=1,并按要求設(shè)置SOFT,F(xiàn)REE、TDDR。

      設(shè)置定時器中斷的步驟為(設(shè)INTM=1):

      (1)、將IFR 中TINT 位置為1,清除以前的定時器中斷請求。(2)、將IMR 中的TINT 位置為1,打開定時器中斷。(3)、將ST1 中的INTM 位置為0,使能所有中斷。

      每當TIM 減為0 時,會產(chǎn)生一個定時器中斷,并在相應(yīng)的TOUT 管腳上產(chǎn)生一個寬度為CLKOUT 周期的正脈沖。

      在RESET 后,TIM 和PRD 被設(shè)置為最大值(FFFFH),TCR 中的TDDR 置0,定時器啟動。定時控制寄存器(TCR)為一個映射到片內(nèi)的16 位寄存器:

      RESERVED:常常設(shè)置為0。

      FREE 和SOFT: 軟件調(diào)試組合控制位,用于控制調(diào)試程序斷點操作情況下的定時器狀態(tài)。當free=0 且soft=0 時,定時器立即停止工作。當free=0 且soft=1 且計數(shù)器TIM 減為1 時,定時器停止工作。當free=1 且soft=x 時,定時器繼續(xù)工作。PSC: 預(yù)定標計數(shù)器。每個CLKOUT 作減1 操作,減為0 時,“TDDR”寄存器的值裝載到“PSC”寄存器,TIM 減1,PSC 的作用相當于預(yù)分頻器。

      TRB: 定時器重新加載控制位,用于復(fù)位片內(nèi)定時器。當TRB 置1 時,“PRD”寄存器的值裝載到“TIM”寄存器,“TDDR”寄存器的值裝載到“PSC”寄存器,TRB 常常設(shè)置為0。TSS: TSS=0,定時器開始。TSS=1,定時器停止。TDDR: 定時器分頻比。以此數(shù)對CLKOUT 分頻后再去對TIM 做減1 操作,當“PSC”為0,“TDDR”寄存器的值裝載到“PSC”寄存器中。

      四、實驗內(nèi)容

      利用定時器中斷制作方波發(fā)生器,通過XF 引腳控制LED 發(fā)光來檢測方波的周期。

      五、實驗步驟

      1、新建一個項目:testxf.pjt;

      2、在項目中編輯以下匯編語言文件:

      有時定時的長度不能滿足需要,比如F=10Mhz時,定時最大是:10ns*2^4*2^16=10.485760ms。如果需要更長的定時,就要在定時器中斷子程序中再加一個計數(shù)器,直到產(chǎn)生一定次數(shù)的定時中斷后再執(zhí)行相應(yīng)的操作。如下程序可以產(chǎn)生1Hz 的方波:

      ;;fangbo.asm;利用定時器Timer0 在XF 腳產(chǎn)生周期1s 的的方波;.title “fangbo.asm”.mmregs.def _c_int00;程序入口

      .def TINT0_ISR;Timer0中斷服務(wù)程序 STACK.usect “STACK”,10H;分配堆棧空間;設(shè)定定時器0 控制寄存器的內(nèi)容

      K_TCR_SOFT.set 0B<<11;TCR第11位soft=0 K_TCR_FREE.set 0B<<10;TCR第10位free=0 K_TCR_PSC.set 0B<<6;TCR第9-6位,可設(shè)跟TDDR 一樣,也可不設(shè)自動加載 K_TCR_TRB.set 1B<<5;TCR第5位TRB=1此位置1,PSC會自動加載的 K_TCR_TSS.set 0B<<4;TCR第4位TSS=0 K_TCR_TDDR.set 0100B<<0;TCR第3-0位TDDR=0100B K_TCR.set K_TCR_SOFT|K_TCR_FREE|K_TCR_PSC|K_TCR_TRB|K_TCR_TSS|K_TCR_TDDR K_TCR_STOP.set 1B<<4;TSS=1時計數(shù)器停止

      .data DATA_DP: XF_Flag:.word 1;當前XF的輸出電平標志,如果XF_Flag=1,則XF=1;==;主程序:

      ;==.text _c_int00: STM #STACK+10H,SP;設(shè)堆棧指針SP LD #DATA_DP,DP;設(shè)數(shù)據(jù)地址DP STM #XF_Flag,AR2;AR 指向XF 標志;改變中斷向量表位置

      K_IPTR.set 7F80h;指向7f80H,默認是FF80 LDM PMST,A AND #7FffH,A;保留低7位,清掉高位

      OR #K_IPTR,A;STLM A,PMST;初始化定時器0;f=20Mhz,定時最大是:50ns*2^4*2^16=50ms,;要輸出1s 的方波,可定時25ms,再在中斷程序中加個40計數(shù)器;Tt=50ns*(1+4)*(1+49999)=5ms;f=20M, Tt=50ns*(1+4)*(1+49999)=25ms;再加40 計數(shù)器

      CounterSet.set 39;定義計數(shù)次數(shù) PERIOD.set 49999;定義計數(shù)周期

      .asg AR1,Counter;AR1做計數(shù)指針,重新命名以便識別

      STM #CounterSet,Counter;設(shè)計數(shù)器初值

      STM K_TCR_STOP,TCR;停止計數(shù)器0;STM #PERIOD,TIM;可設(shè)成跟PRD 一樣,也可不設(shè)自動加載

      STM #PERIOD,PRD;設(shè)定計數(shù)周期

      STM #K_TCR,TCR;開始Timer0 stm #0008h,IMR;允許Timer0中斷

      STM #0008h,IFR;清除掛起的中斷

      RSBX INTM;開中斷 end1: nop B end1;==;Timer0 中斷服務(wù)程序:TIN0_ISR;== TINT0_ISR: PSHM ST0;本中斷程序影響TC,位于ST0 中

      BANZ Next,*Counter-;判斷不等于0 時跳轉(zhuǎn),然后計數(shù)器減1 STM #CounterSet,Counter;恢復(fù)初值

      ;判斷當前XF狀態(tài)并作電平變化

      BITF *AR2,#1;IF XF_Flag=1 then TC=1 else TC=0 BC ResetXF,TC;IF TC=1 then XF=0 else XF=1 setXF: SSBX XF;置XF為高電平

      ST #1,*AR2;相應(yīng)修改標志

      B Next ResetXF: RSBX XF;;置XF為低電平

      ST #0,*AR2;相應(yīng)修改標志 Next: POPM ST0 RETE.end

      3、編寫存儲器配置文件:(fangbo.cmd)/*-e _c_int00 This is the entry point reset vector */-m map.map-o fangbo.out MEMORY { PAGE 0: /*定義程序存貯區(qū)*/ EPROM: origin = 0x4000, len = 0x3f80 VECT: origin = 0x7f80, len = 0x80 PAGE 1: /*定義數(shù)據(jù)存貯區(qū)*/ SYSREGS: origin = 0x00, len = 0x60 BIOSREGS: origin = 0x60, len = 0x20 IDATA: origin = 0x80, len = 0x3f00 EDATA: origin = 0x8000, len = 0x8000 } SECTIONS {.text :>EPROM PAGE 0 /*將.text 段映射到PAGE0 的EPROM 區(qū)*/.data :>EPROM PAGE 0 /*將.data 段映射到PAGE0 的EPROM 區(qū)*/.vectors: > VECT PAGE 0/*將中斷向量表定位到PAGE0 的VECS 區(qū)*/.bss: > IDATA PAGE 1 /*將.bss 段映射到PAGE1 的IDATA 區(qū)*/ STACK > IDATA PAGE 1 /*將.stack 段映射到PAGE1 的IDATA 區(qū)*/ }

      4、編寫中斷向量表文件(vectors.asm)

      中斷向量表是DSP 程序的重要組成部分,下面是5410a 中斷向量表的一個示例,可以作為模板:

      ***************************************************************** *vectors.asm *完整的5410a 中斷向量表示例

      *5410a 共有30 個中斷向量,每個向量占4 個字的空間。

      *使用的向量一般加一條跳轉(zhuǎn)指令轉(zhuǎn)到相應(yīng)中斷服務(wù)子程序,其余空位用NOP 填充

      *未使用的向量直接用RETE 返回,是為了防止意外進入未用中斷。

      *****************************************************************.sect “.vectors”;開始命名段.vecotrs.global _c_int00;引用程序入口的全局符號定義

      ;引用其它中斷程序入口的全局符號定義

      .align 0x80;中斷向量必須對齊頁邊界

      .global TINT0_ISR RESET: B _c_int00;Reset 中斷向量,跳轉(zhuǎn)到程序入口 STM #200,SP;stack size of 200 nmi: RETE;enable interrupts and return from one NOP NOP NOP;NMI~;software interrupts sint17.space 4*16 sint18.space 4*16 sint19.space 4*16 sint20.space 4*16 sint21.space 4*16 sint22.space 4*16 sint23.space 4*16 sint24.space 4*16 sint25.space 4*16 sint26.space 4*16 sint27.space 4*16 sint28.space 4*16 sint29.space 4*16 sint30.space 4*16

      int0: RETE;External user interrupt #0 NOP NOP NOP int1: RETE;External user interrupt #1 NOP NOP NOP int2: RETE;External user interrupt #2 NOP NOP NOP tint: BD TINT0_ISR;Timer0 中斷

      NOP

      NOP rint0: RETE;McBSP #0 receive interrupt(default)NOP NOP NOP xint0: RETE;McBSP #0 transmit interrupt(default)NOP NOP NOP rint2: RETE;McBSP #2 receive interrupt(default)NOP NOP NOP xint2: RETE;McBSP #2 transmit interrupt(default)NOP NOP NOP int3: RETE;External user interrupt #3 NOP NOP NOP hint: RETE;HPI interrupt NOP NOP NOP rint1: RETE;McBSP #1 receive interrupt(default)NOP NOP NOP xint1: RETE;McBSP #1 transmit interrupt(default)NOP NOP NOP.space 16*16.end 技巧提示:第一個中斷(Reset 中斷)是每個程序都應(yīng)該有的,在不需要其它中斷的情況下,可以只用這一部分,后面全部省掉。另外一個重要問題是中斷向量表的位置,上電時默認是在FF80H 處,但實際上很多情況下無法把中斷向量表加載到FF80 處,一般重定向到0080H,并在程序開頭重新設(shè)置一下IPTR的值。K_IPTR.set 7f80h;指向7f80H,默認是FF80 LDM PMST,A AND #7FffH,A;保留低7位,清掉高位 OR #K_IPTR,A;STLM A,PMST 要注意的是這段代碼要用到累加器A,所以嵌入這段代碼的地方必須在用到累加器A 之前。

      5、在testxf.pjt 文件中添加fangbo.asm、vector.asm、fangbo.cmd 文件,進行編譯和鏈接,注意該項目是由匯編語言編寫的,應(yīng)該注意實驗一的步驟9 的選項是否正確。

      6、裝載fangbo.out 文件到DSP 芯片并運行程序,觀測XF 的變化。也可以觀察CLKOUT管腳電平的變化。

      第二篇:DSP實驗教案(一)

      實驗一 CCS使用和數(shù)據(jù)存儲實驗

      一、實驗?zāi)康?/p>

      1.掌握CCS的使用

      2.掌握 TMS320C54X 程序空間的分配; 3.掌握 TMS320C54X 數(shù)據(jù)空間的分配;

      4.能夠熟練運用TMS320C54X 數(shù)據(jù)空間的指令。

      二、實驗設(shè)備

      計算機,CCS 3.1版軟件,DSP仿真器,E300實驗箱,DSP-54XP CPU板。

      三、實驗步驟與內(nèi)容

      1.在進行 DSP實驗之前,需先連接好仿真器、實驗箱及計算機,連接方法如下所示:

      2.E300 底板的開關(guān)SW4 的第1位置ON,其余位置OFF。其余開關(guān)設(shè)置為OFF。3.上電復(fù)位

      在硬件安裝完成后,確認安裝正確、各實驗部件及電源連接無誤后,啟動計算機,接通仿真器電源,此時,仿真器上的“紅色指示燈”應(yīng)點亮,否則DSP開發(fā)系統(tǒng)與計算機連接存在問題。

      4.運行CCS程序

      1)待計算機啟動成功后,實驗箱220V電源置“ON”,實驗箱上電

      2)啟動CCS3.1,進入CCS界面后,點擊“Debug—Connect”

      3)此時仿真器上的“綠色指示燈”應(yīng)點亮,CCS正常啟動,表明系統(tǒng)連接正常;否則仿真器的連接、JTAG 接口或CCS 相關(guān)設(shè)置存在問題,這時需掉電檢查仿真器的連接、JTAG 接口連接是否正確,或檢查CCS相關(guān)設(shè)置是否存在問題。5.成功運行CCS 程序后,首先應(yīng)熟悉CCS的用戶界面;

      6.學(xué)會在CCS環(huán)境下創(chuàng)建工程文件、添加程序文件、編寫程序、編譯、裝載、調(diào)試,學(xué)習(xí)如何使用觀察窗口等。

      7.用“Projectopen”打開“normal 01_mem mem.pjt”.編譯并裝載“ 01_memDebugmem.out”

      8.用“Edit”下拉菜單中的“Memory/Fill”編輯內(nèi)存單元,參數(shù)設(shè)置如下圖:

      單擊“OK”此時以0x1000 為起始地址的16個內(nèi)存單元被修改成:0x0009 9.用“View”下拉菜單“Memory”觀察內(nèi)存單元變化,輸入要查看的內(nèi)存單元地址,本實驗要查看0x1000H~0x100FH 單元的數(shù)值變化,輸入地址0x1000H;

      單擊“OK”如下圖所示:

      10.點擊“DebugGo main”進入主程序,在程序中“加軟件斷點1”和“加軟件斷點2”處施加軟件斷點。11.單擊“DebugRun”運行程序,也可以“單步”運行程序;當程序運行到“軟件斷點1”處時,查看0x1000H~0x1007H單元的值變化,12.再單擊“DebugRun”,當程序運行到“軟件斷點2”處時,查看0x1008~0x100F 單元的變化。

      13.閉各窗口,本實驗完畢

      四、程序流程圖

      五、實驗程序

      #include “DspRegDefine.h”

      //VC54x 寄存器定義 #include “stdio.h”

      //輸入輸出頭文件 #include “e300_codec.h” //**********************子函數(shù)聲明********************************// void cpu_init(void);//初始化CPU //************************* 主函數(shù) *******************************// void main(){

      UINT16 i;

      UINT16 * room;

      UINT16 * room1;

      room=(UINT16 *)0x1000;// 設(shè)指針px為1000H

      room1=(UINT16 *)0x1008;// 設(shè)指針px為1000H //**********************CPU初始化*********************************//

      cpu_init();/*將0xAAAA寫入從數(shù)據(jù)空間的地址0x1000開始的8個單元中*/

      for(i=0;i<8;i++)

      {

      * room=0xAAAA;

      room++;

      }

      asm(“ nop”);//加軟件斷點1 /*從0x1000開始的8個空間讀出數(shù)據(jù)依次寫入從0x1008開始的8個單元中*/

      for(i=0;i<8;i++)

      {

      *room1=*(room-1);

      room--;

      room1++;

      }

      for(;;)

      {

      } //加軟件斷點2 }

      //*************************結(jié)束**********************************// cpu_init()函數(shù)見附錄

      六 實驗結(jié)果

      1、程序運行到斷點1處數(shù)據(jù)存儲器的內(nèi)容如下圖:

      2、程序運行到斷點2處數(shù)據(jù)存儲器的內(nèi)容如下圖:

      實驗二 撥碼開關(guān)實驗

      —、實驗?zāi)康?/p>

      1.了解DSP開發(fā)系統(tǒng)的組成和結(jié)構(gòu) 2.了解IO 的基本編程方法

      二、實驗設(shè)備

      計算機,CCS3.1版本軟件,DSP 仿真器,E300 實驗箱,DSP-54XP CPU板

      三、實驗原理 位的數(shù)字量輸入(由撥碼開關(guān)產(chǎn)生),當撥碼打到靠近LED時為低。相反為高。通過74LS244緩沖連接到DSP的數(shù)據(jù)總線的低8位。CPU通過讀指令讀取到撥碼開關(guān)產(chǎn)生的8位輸出的數(shù)字量,然后CPU通過寫指令把讀出的8 位數(shù)字量寫入(0x0200)單元內(nèi),使連接到DSP的數(shù)據(jù)總線的低8 位的74LS273的輸出端產(chǎn)生高低信號,此時LED 燈產(chǎn)生亮滅。當對應(yīng)LED 燈點亮?xí)r說明輸出為低,熄滅時高。數(shù)字量輸入輸出單元的資源分配如下: 基地址:0000h(當CS0為0時分配有效)數(shù)字量分配空間為數(shù)據(jù)空間地址:基地址+0x200(低8位,只讀)撥碼開關(guān)擴展工作原理

      四、實驗步驟 1.E300 板上的開關(guān)SW4 的第一位置ON,其余OFF;SW5開關(guān)全部置ON;其余開關(guān)全部置OFF。

      2.運行Code Composer Studio(CCS)(ccs3.1需要“DEBUG→Connect”)3.用“ProjectOpen”打開系統(tǒng)項目文件 normal