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