?? exp02.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 + -