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

📄 exp01.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  
;--------------------------------------------------------------------  
;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 mask 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		#0x2000,SP   ;设置堆栈指针SP=2000,栈底
    nop
;*--------------------------------------------------------------*/
;--------------CPU2  D1 闪烁子程序------------------------------
;---------------------------------------------------------------	
loop:nop
	ssbx	XF          ;将XF置1
	nop
	call 	delay       ;调用延时子程序,延时
	nop
	rsbx	XF          ;将XF置0
	nop
	call 	delay       ;调用延时子程序
	nop 
	b 		loop       ;程序跳转到"loop"
	nop
	

;***********************************************************
; 函数名称 : delay
; 函数说明 : 延时
; 输入参数 : 无
; 输出参数 : 无
;***********************************************************
delay: 
	stm 	270fh,ar3     ;延迟时间常数
loop1:              
	stm 	0f9h,ar4      ;延迟时间常数
loop2:                    ;改变时间常数,观察D1闪烁快慢的变化
	banz 	loop2,*ar4-
	banz 	loop1,*ar3-   ;延迟时间  270fh X 0f9h X 2 X 2 X CLKOUT
	ret                   ;子程序返回  
   .end    ;程序结束伪指令
;-------------------------程序结束---------------------------	

⌨️ 快捷键说明

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