實驗一:簡單指令程式執行實驗
**(含注釋):
.mmregs
.global _main
_main:
stm #3000h,sp ;sp為堆疊指標暫存器,stm為儲存器對映暫存器定址
ssbx xfxf賦值為1,燈亮
call delay呼叫delay函式,延遲0.5秒
rsbx xfxf賦值為0,燈滅
call delay呼叫delay函式
bmain無條件呼叫_main函式
nopnop;delay .5 second延時5秒
delay:
stm 270fh,ar3 ;ar3賦值207fh,十進位制為9999d
loop1
stm 0f9h,ar4ar4賦值0f9h,十進位制為249d
loop2:
banz loop2,*ar4- ;若不為0,ar4減1
banz loop1,*ar3- ;若不為0,ar3減1,共進行10000*250次跳轉
retnopnop.end
實驗操作:
可見xf燈以一定頻率閃爍;單擊「halt」暫停程式執行,則xf燈停止閃爍,如再單擊「run」,則「xf」燈又開始閃爍。
實驗二:資料儲存實驗
本實驗程式將對0x1000開始的8個位址空間,填寫入0xaaaa的數值,然後讀出,並儲存到0x1008開始的8個位址空間。在ccs中可以觀察data記憶體空間位址0x1000~0x100f值的變化。
**(含注釋):
.mmregs
.global _main
_main
;store data儲存資料
stm 1000h,ar1 ;將立即數1000h送入輔助暫存器ar1 (記憶體位址)
rpt #07h迴圈執行下一條指令,8次
st 0aaaah,*ar1將立即數 0xaaaah賦給輔助暫存器ar1的1000h位址內,
;之後ar1的位址加1, 8次;ar1的位址變1008,記憶體0x1000-- ox1007中的資料均為0xaaaah
;read data then re-store讀入資料重新儲存
stm 7h,ar3令輔助暫存器ar3的初值為07h
stm 1000h,ar1重新將立即數1000h送入輔助暫存器ar1
stm 1008h,ar2 ;將立即數1008h送入輔助暫存器ar2
loop進入迴圈
ld *ar1+,t ;將輔助暫存器ar1的值0xaaaah存入t暫存器中, 且ar1的位址加1
st t,*ar2+ ;將t暫存器內容0xaaaah存入輔助暫存器ar2 ,並且ar2的位址加1
banz loop,*ar3- ;暫存器ar3的值不為0時,執行迴圈 loop,ar3的位址值減1直至為0時退出迴圈
here:
b here
.end結束(位址0x1000-- 0x100f,程式完成對16個記憶體單元賦值 )
實驗操作:
1.用「view」下拉列表中的「memory」檢視記憶體單元;
2.輸入要檢視的記憶體單元位址,本實驗要檢視0x1000h~0x100fh單元的數值變化,輸入位址0x1000h;
3.檢視0x1000h~0x100fh單元的初始值,單擊「run」執行程式,也可以「單步」執行程式;
4.單擊「halt」暫停程式執行;
5.檢視0x1000h~0x100fh單元內數值的變化;
6.關閉各視窗,本實驗完畢。
實驗三:i/o實驗
**(含注釋):
.mmregs
.global _main
.text
_main:
stm 3100h,sp
stm 1000h,ar1指定位址
portr 00h,*ar1 ;讀入開關狀態,並存入輔助暫存器ar1中
nopnopportw *ar1,01h ;將輔助暫存器ar1的內容即開關的狀態寫入到led燈上
nopnopb _main迴圈執行
nopnop.end
實驗操作:
任意調整k0~k7開關,可以觀察到對應lp0~lp7燈「亮」或「滅」;單擊「halt」,暫停持續執行,開關將對燈失去控制。
關閉所有視窗,本實驗完畢。
實驗四:定時器實驗
定時器實驗時要用到c54晶元的定時器控制暫存器,定時器時間常數暫存器,定時器中斷響應,暫存器定義詳見c54晶元資料。c54的定時器是乙個20位的減法計數器,可以被特定的狀態位實現停止、重新啟動、重設定或禁止,可以使用該定時器產生週期性的cpu中斷,控制定時器中斷頻率的兩個暫存器是定時週期暫存器prd和定時減法暫存器tddr
定時器實驗通過 led(lp1~lp7)來顯示。在本系統中,時鐘頻率為20mhz,令prd = 0x4e1f,這樣得到每1/1000秒中斷一次,通過累計1000次,就能定時1秒鐘。
**(含注釋):
【初始化程式】
.mmregs
.global _initial
_initial:
stm 300h,ar1 ;初始化300h 資料位址
st #00h,*ar1 ;輔助暫存器ar1指向#00h
stm 302h,ar1 ;初始化 302h 資料位址
st #00h,*ar1
stm 200h,ar1
st #5555h,*ar1
stm 201h,ar1
st #0aaaah,*ar1
stm 202h,ar1
st #400h,*ar1
ssbx 1,11將置為1,停止所有中斷
stm 0ffffh,ifr ;清除所有中斷標識 ifr:中斷標誌暫存器
stm 00h,imr ;將立即數暫存器置為0,停止所有中斷
stm 410h,tcr ;停止計時器 tcr:傳送控制暫存器
stm 4e1fh,prd ;將初始時間設為4e1fh
stm 420h,tcr ;開始計時器
stm 08h,imr ;允許計時器中斷
rsbx 1,11將置為0,開始所有中斷
ret【埠程式】
.mmregs
.global _porta
.global _portb
_porta:
stm 304h,ar1
st 5555h,*ar1 ;輔助暫存器ar1指向5555h
portw *ar1,01h
ret_portb:
stm 304h,ar1
st 0aaaah,*ar1 ;輔助暫存器ar1指向0aaaah
portw *ar1,01h
ret【向量程式】
.sect ".vectors"
.ref _c_int00c程式入口
.ref _timer時間中斷點
.align 0x80必須被鏈結到頁邊界
reset重設向量
bd _c_int00到c入口點的分支
stm #200,sp堆疊大小為200 sp:堆疊暫存器
nmi: rete啟動中斷並從乙個返回
nopnop
nop軟體中斷
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
nopnop
nopint1: rete
nopnopnop
int2: rete
nopnop
noptint: b _timer
nopnop
rint0: rete
nopnop
nopxint0: rete
nopnop
noprint1: rete
nopnop
nopxint1: rete
nopnop
nopint3: rete
nopnop
nopend
實驗操作:
1.單擊「run」執行,可觀察到led燈(lp0~lp7)以一定的間隔時間不停擺動;
2.單擊「halt」,暫停程式執行,led燈停止閃爍;
DSP硬體實驗報告
北京郵電大學 實驗一 常用指令實驗 一 實驗目的 1.熟悉dsp開發系統的連線 2.了解dsp開發系統的組成和結構和應用系統構成 3.熟悉常用c54x系列指令的用法 程式定址,暫存器,i o口,定時器,中斷控制 二 實驗裝置 計算機,ccs 2.0版軟體,dsp 器,實驗箱。三 實驗操作方法 1 系...
DSP硬體實驗報告
班級學號姓名 班內序號 2014年12月23日 第一部分 5416常規實驗 實驗一 常用指令實驗 截圖及注釋 1 實驗目的 了解dsp開發系統的組成和結構,熟悉dsp開發系統的連線,熟悉dsp的開發介面,熟悉c54x系列的定址系統,熟悉常用的c54x系列指令的用法。2 截圖 3 源 注釋 mmreg...
DSP硬體實驗報告參考
數字訊號處理實驗報告 學院 電子工程學院 班級 2012211207 學號 2012210995 班內序號 04 姓名 王孟哲 file name exp01.a the program is piled at no autoinitialization mode mmregs global mai...