⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exp02.asm

📁 基于DSP5416的数据存储实验
💻 ASM
字号:
;***************************************************
;*					 北京达盛科技有限公司
;*
;*                 	http:;www.techshine.com
;*
;*------------------------- 文件信息 ---------------                                      
;*
;* 文件名称 : EXP01.ASM	
;*--------------------------------------------------

;--------------------伪指令-------------------------
	  .mmregs          ;54X 存储器影射寄存器定义符号名            
	  .global  _main   ;声明_main为全局符号
SWWCR .set     0x002B  ;设置"SWWCR"寄存器的地址
;---------------------------------------------------

;*****************************************************
;	****************** 主函数 *******************
;*****************************************************
	
_main: 
    nop
;-----------------------------------------------------    
;----------------------初始化 CPU---------------------
;-----------------------------------------------------    
    ssbx  INTM            ; INTM=1,禁止所有可屏蔽中断
    ld    #0, DP          ; 设置数据页指针DP=0
	stm   #0, CLKMD       ; 切换CPU内部PLL到分频模式
;-------------------------------------------------------------------	
;CLKMD DEFINITIONS:	
;    PLLMUL (bit 15-12) - 0000             PLL multiplier = 0 (mult by 1)
;    PLLDIV (bit 11)    -     0            PLL divider = 0 (div by 1)
;    PLLCOUNT (bit 10-3)-      11111111    PLL counter set to max
;    PLLONOFF (bit 2)   -              1   PLL on
;    PLLNDIV (bit 1)    -               1  Select PLL mode
;    PLLSTATUS (bit 1)  -                x PLL Status (read only)
;    ------------------
;                          0000011111111111 = 0x07ff CLKMD=1 X CLKIN
;--------------------------------------------------------------------		
Statu1:
    ldm   CLKMD, A
    and   #01b, A         
    bc    Statu1, ANEQ	  ;检查是否已经切换到分频模式?
	stm   #0x07ff,CLKMD   ;设置DSP 时钟 10MHZ
	nop
	stm   #0x3FF2,PMST  
;--------------------------------------------------------------------  
; ST0  DEFINITIONS:
;  ARP  (bit 15-13) - 000              Auxiliary register pointer
;  TC   (bit 12)    -    1             Test/control flag
;  C    (bit 11)    -     1            Carry is set to 1 if the result of an addition generates a carry; it is cleared to 0 if the
;                                     result of a subtraction generates a borrow.
;  OVA  (bit 10)    -      0           Overflow flag for accumulator A
;  OVB  (bit 9)     -       0          Overflow flag for accumulator B
;  DP   (bit 8-0)   -        00000000  Data-memory page pointer
;    --------------------
;                          0001 1000 0000 0000 =0x1800 Reset value
;--------------------------------------------------------------------
    stm  #0x1800,ST0 
;--------------------------------------------------------------------
; ST1  DEFINITIONS:
;  BRAF  (bit 15)  - 0                 Block-repeat active flag     
;  CPL   (bit 14)  -  0                Compiler mode   CPL=0 DP
;  XF    (bit 13)  -   1               XF status
;  HM    (bit 12)  -    0              Hold mode
;  INTM  (bit 11)  -     1             Interrupt mode INTM=0,All unmasked interrupts are enabled
;  Reser (bit 10)  -      0            Always read as 0
;  OVM   (bit 9)   -       0           Overflow mode
;  SXM   (bit 8)   -        1          Sign-extension mode
;  C16   (bit 7)   -         0         Dual 16-Bit/double-precision arithmetic mode
;  FRCT  (bit 6)   -          0        Fractional mode
;  CMPT  (bit 5)   -           0       Compatibility mode
;  ASM   (bit 4-0) -            00000  Accumulator shift mode
;    --------------------
;                          0010 1001 0000 0000 =0x2900 Reset value
;--------------------------------------------------------------------
    stm  #0x2900,ST1;
;-------------------------------------------------------------------- 
;PMST DEFINITIONS
;    IPTR (bit 15-7) -  001111111          Run-time Interrupt vector location = 0x3f80 (for now)
;    MP/~MC (bit 6)  -           1         Turn off internal Instruction ROM (use RAM)
;    OVLY   (bit 5)  -            1        Turn on internal RAM
;    AVIS   (bit 4)  -             1       Address visibility on
;    DROM   (bit 3)  -              0      Data ROM of FF00~FFFF is external 
;    CLKOFF (bit 2)  -               0     Clockout  enabled,only for use clkout=cpu clock
;    SMUL   (bit 1)  -                1    Saturate before multiply on MAC
;    SST    (bit 0)  -                 0   Do not saturate before store
;                      -----------------
;                      0011 1111 1111 0010 = 0x3ff2
;*---------------------------------------------------------------------*/	  
	stm   #0x7FFF,SWWSR
;---------------------------------------------------------------------	
; SWWSR DEFINITIONS
;    XPA   (bit 15)     - 0                Extended program address control bit. XPA is used in conjunction with the program space fields
;                                          (bits 0 through 5) to select the address range for program space wait states
;    I/O   (bits 14-12) -  111             set to max wait states for seven
;    Data1 (bits 11-9)  -     111          Seven Wait state for Upper data space(0x8000-0xFFFF) 
;    Data2 (bits 8-6)   -        111       Seven Wait states for Lower data space (0x0000 - 0x7FFF)
;    Prog1 (bits 5-3)   -           111    Seven Wait state for Upper program space. (xx8000-xxFFFF)
;    Prog2 (bits 2-0)   -              111 Seven Wait states for Program space. (xx0000-xx7FFF)
;                        -----------------
;                         1 111 111 111 111 111 - 0x7fff
;*--------------------------------------------------------------------*/	
	stm   #0x0001,SWWCR
;--------------------------------------------------------------------
;SWCR DEFINITIONS
;    Reserved (bits 15-1)
;    SWSM     (bit 0)     -  1           wait-state base values are mulitplied by 2
;                                        for a maximum of 14 wait states.
;    --------------------------
;                       0000 0000 0000 0001
;--------------------------------------------------------------------	
	stm   #0xF800,BSCR
;--------------------------------------------------------------------
;BSCR DEFINITIONS
;   BNKCMP (bit 15-12)   - 1111 Bank compare. Determines the external memory-bank size. BNKCMP is used to mask the four MSBs of
;                               an address.
;                          1111 4k
;                          1110 8k
;                          1100 16k
;                          1000 32k
;                          0000 64k
;  PS-DS    (bit 11)     -     1  One extra cycle is inserted between consecutive data and program reads.                                                                       
;  Reserved (bits 10-3)  -      00000000
;  HBH   	 (bit 2)      -              0  The hpi bus holder is disabled
;  BH       (bit 1)      -               0  The data bus holder is disabled
;  EXIO     (bit 0)      -                0  The external bus interface functions as usual
;        ------------------------------------
;                    1111 1000 0000 0000
;--------------------------------------------------------------------	
	stm   #0x0000, IMR ; 禁止所有可屏蔽中断
;--------------------------------------------------------------------
; IMR DEFINITIONS	
; Writing a 1 to any IMR bit position enables the corresponding interrupt (when INTM = 0)
;  Reserved     (bits 15-14)   - xx
;  DMAC5        (bit 13)       -   0              DMA channel 5 interrupt mask bit 
;  DMAC4        (bit 12)       -    0             DMA channel 4 interrupt mask bit
;  BXINT1/DMAC3 (bit 11)       -     0            McBSP1 transmit interrupt ma4sk bit, or the DMA channel 3 
;  BRINT1/DMAC2 (bit 10)       -      0           McBSP1 receive interrupt mask bit, or the DMA channel 2
;  HPINT        (bit 9)        -       0          Host to ’54x interrup /mask
;  INT3         (bit 8)        -        0         External interrupt 3 mask
;  TINT1/DMAC1  (bit 7)        -         0        timer1 interrupt mask bit, or the DMA channel 1 interrupt mask bit 
;  DMAC0        (bit 6)        -          0       reserved, or the DMA channel 0 interrupt mask bit
;  BXINT0       (bit 5)        -           0      McBSP0 transmit interrupt mask bit
;  BRINT0       (bit 4)        -            0     McBSP0 receive interrupt mask bit
;  TINT0        (bit 3)        -             0    Timer 0 interrupt mask bit
;  INT2         (bit 2)        -              0   External interrupt 2 mask bit
;  INT1         (bit 1)        -               0  External interrupt 1 mask bit
;  INT0         (bit 0)        -                0 External interrupt 0 mask bit
;        ------------------------------
;                0000 0000 0000 0000
;--------------------------------------------------------------------	
	stm   #0xFFFF, IFR ; 清除中断标志
;--------------------------------------------------------------------
; IFR DEFINITIONS	
; Writing a 1 to any IFR bit position clear the corresponding interrupt mask ,when corresponding interrupt occur   IFR corresponding bit=1
;  Reserved     (bits 15-14)   - xx
;  DMAC5        (bit 13)       -   1              DMA channel 5 interrupt flag bit 
;  DMAC4        (bit 12)       -    1             DMA channel 4 interrupt flag bit
;  BXINT1/DMAC3 (bit 11)       -     1            McBSP1 transmit interrupt flag bit, or the DMA channel 3 
;  BRINT1/DMAC2 (bit 10)       -      1           McBSP1 receive interrupt flag bit, or the DMA channel 2
;  HPINT        (bit 9)        -       1          Host to ’54x interrutpflak
;  INT3         (bit 8)        -        1         External interrupt 3 flag
;  TINT1/DMAC1  (bit 7)        -         1        timer1 interrupt flag bit, or the DMA channel 1 interrupt mask bit 
;  DMAC0        (bit 6)        -          1       reserved, or the DMA channel 0 interrupt flag bit
;  BXINT0       (bit 5)        -           1      McBSP0 transmit interrupt flag bit
;  BRINT0       (bit 4)        -            1     McBSP0 receive interrupt flag bit
;  TINT0        (bit 3)        -             1    Timer 0 interrupt flag bit
;  INT2         (bit 2)        -              1   External interrupt 2 flag bit
;  INT1         (bit 1)        -               1  External interrupt 1 flag bit
;  INT0         (bit 0)        -                1 External interrupt 0 flag bit
;        ------------------------------
;                1111 1111 1111 1111
    stm		#2000h,sp   ;设置堆栈指针SP=2000,栈底
    nop 
;*--------------------------------------------------------------
;-------------------数据搬移子程序------------------------------
;---------------------------------------------------------------     
loop:nop
	 stm 	1000h,ar1    ;设置访问数据空间的地址,AR1寄存器间接寻址 
	 rpt	#07h         ;下面的指令重复执行 0x07h+1次    
	 st		55aah,*ar1+ ;将数据"0AAAAH"存放到以地址1000H~1007H的八个存储单元中.
     nop
;---------------------------------------------------------------     	       
	 stm 	7h,ar3       ;AR3=0x07h
	 stm	1000h,ar1    ;设置访问数据空间的地址,AR1寄存器间接寻址 
	 stm 	1014h,ar2    ;设置访问数据空间的地址,AR2寄存器间接寻址 
loop1:                   ;循环的将1000H~1007H的八个单元中的数据复制到1008H~100F的
                         ;八个存储单元中,用T寄存器暂存
	 ld		*ar1+,t      ;*AR1-->T ,AR1=AR1+1   
	 st		t,*ar2+      ;T-->*AR2 ,AR2=AR2+1
	 banz	loop1,*ar3-  ;AR3=AR3-1 ,AR3=0?
     nop                   
 	 b       loop
	.end
;---------------------程序结束--------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -