PORTW DELAY
DATA,FG_ADDR #10
ST #2000H,DATA PORTW DELAY #10
ST #1000H,DATA PORTW DELAY RPT #10 NOP
ST #800H,DATA PORTW DELAY #10 RPT #10 NOP
ST #400H,DATA PORTW DELAY RPT #10 NOP
ST #200H,DATA PORTW DELAY RPT #10 NOP
STM #100H,DATA PORTW DELAY RPT #10 NOP
ST #8100H,DATA
DATA,FG_ADDR #10
DATA,FG_ADDR #10
DATA,FG_ADDR #10
DATA,FG_ADDR DATA,FG_ADDR #10
DATA,FG_ADDR
B WRDENG aaa nop b aaa
.end
思考题:
有哪三种以上的寻址方式可以完成上述实验?并描述其原理。
实验二 数码显示实验
一、实验目的
熟练掌握DSP的各种指令
进一步熟悉DSP的I/O访问方式的操作,通过I/O方式将数据显示到数码管上
二、实验设备
计算机,DSP硬件仿真器,DSP实验开发平台
注意:在做实验以前,需要接通该实验的硬件电路,本实验为:先将实验箱右侧的船型开关往“I”方向打开电源,然后将系统主板的开关S33往下拨接通+/-5V电源,然后将CPLD/FPGA模块上的电源开关S9往下(ON)拨,开关S10往下拨来选通主板上发光二极管等输出指示设备;将系统主板中“MCU/DSP选择档”选中MCU(往下拨),将“功能键6”拨上去,点击键盘中的MON键,MCU将对所用的LED管进行检测。如果所有的LED管正常,将“MCU/DSP选择档”选中DSP(往上拨),将功能键1到7都拨下来,然后开始做实验。注意在做实验时开始按了RST硬件复位后,实验不要再按RST键,以免由于DSP复位而失败。
三、实验原理
此实验是由DSP通过IO方式对数码管进行操作,即是向数码管送数据,高4
位为数码管的段码,低4位为数码管的位码,DSP用的数据线是D8~D15,如要在第0位显示一个8,就只要送入80H,其次,该实验中要求熟练运用DSP的各种指令,能使显示数据出现左移或右移等。
四、实验程序框图
开始 初始化DSP,设置I/O等待寄存器 将内存中的数据或采用其他方式将数据发送到数码管去显示,其I/O地址为:1003H。具体显示方法见上述实验原理。 改变数据重复发送 程序:
.title \ .global _c_int00 .mmregs
SM_ADDR .set 1003h ;数码管的I/O地址
SM_DATA .set 60h ;段码在数据线的高4位,位码在数据线的次高4位.
;在CPLD模块中程序为DEMO程序的情况下,段码显示已译码,比如:要显示7, ;只要往数据线的高4位发7即可.位码为0-7,在次高位数据线对应的数值也为0-7.
.sect \reset: B _c_int00 NOP NOP
.space 31*4*16 .text _c_int00:
LD #0h,DP ;设置数据页指针 STM #2000h,SP ;设置堆栈指针 RSBX INTM
STM #07FFFh,SWWSR SSBX XF
ST #1007h,CLKMD ;工作在20MHz RPT #0FFh NOP
STM #0ffffh,IFR ORM #000h,IMR RSBX SXM aaa nop
CALL LED07 ;显示0到7 CALL LED8F ;显示8到F b aaa
LED8F ST #8000h,SM_DATA ST #07H, AR3
WRDENG: PORTW SM_DATA,SM_ADDR ;8-f RPT #10000 NOP
ST #02fffH,AR6 call delay
ADDM #1100H,SM_DATA ;送位码,屏蔽低8位数据 BANZ WRDENG, *AR3- RET
LED07 NOP
ST #07H, AR3 STM #0H,SM_DATA
WRDENG1 NOP ;0-7 PORTW SM_DATA,SM_ADDR ST #02fffH,AR6
call delay
ADDM #1100H,SM_DATA ;送位码,屏蔽低8位数据 BANZ WRDENG1, *AR3- RET
delay STM #0f0h,AR7 ;延时子程序 BANZ $,*AR7- BANZ delay,*AR6- RET
五、实验思考
如何设置DP、SP值,以及DP、SP在程序中所起的作用是什么? 如何理解、设置I/O等待寄存器?