📄 subfunction.inc
字号:
;==============================================================================
;
; Initialization CPU register
;
;==============================================================================
INIT_CPU .macro
STM #0h,CLKMD ;Close CPU clock first
NOP
NOP
STM #K_CLKMD,CLKMD
NOP
NOP
STM #K_SWWSR,SWWSR
NOP
NOP
STM #K_BSCR,BSCR
NOP
NOP
STM #K_ST0,ST0
NOP
NOP
STM #K_ST1,ST1 ;Initializaion Status register
NOP
NOP
STM #K_PMST,PMST ;Initializaion Processor mode status register
NOP
NOP
STM #0001h,SWCR
; STM #K_IMR,IMR ;Initializaion Interrupt mask register
NOP
NOP
.endm
;==============================================================================
;
; Initialization peripheral registers
;
;==============================================================================
INIT_PERIPHERAL .macro
STM #K_SWWSR,SWWSR
NOP
NOP
STM #K_BSCR,BSCR
NOP
NOP
STM #K_SWCR,SWCR ;Initializaion External Bus
NOP
NOP
;STM #K_CLKMD,CLKMD ;Initializaion PLL
NOP
NOP
.endm
*********************************
*改变中断向量表的位置
*中断向量表的位置并没有强制的位置,可以在内部寄存器,也可以在外边寄存器.
*但有一个要求:中断向量表必须放在80H字长存储器块的起始处,即中断向量表的
*首地址的低七位必须全为0.DSP的寄存器PMSY的高9位是中断矢量表的指针IPTR.
*其上电时默认是在FF80H处,这是为了运行固化在内部ROMde上电加载程序.
*由于FF80h是只读的,加载用户自定义的中断矢量表时会报错.这需要重新设置IPTR值.
*********************************
INIT_IPTR .macro
LDM PMST,A
AND #7FH,A ;保留低7位,清掉高位
OR #K_IPTR_S,A
STLM A,PMST
.endm
;==============================================================================
;
; Initialization McBSP #1
;
;==============================================================================
;==============================================================================
; 1.XRST_=RRST_=0
;==============================================================================
INIT_MCBSP1 .macro
STM #SPCR11,SPSA1
NOP
NOP
STM #0x0000,SPSD1
NOP
NOP
STM #SPCR21,SPSA1
NOP
NOP
STM #0x0000,SPSD1
NOP
NOP
;==============================================================================
; 2.Program McBSP registers
;==============================================================================
STM #SPCR11,SPSA1
NOP
NOP
STM #K_SPCR11,SPSD1
NOP
NOP
STM #SPCR21,SPSA1
NOP
NOP
STM #K_SPCR21,SPSD1
NOP
NOP
STM #PCR1,SPSA1
NOP
NOP
STM #K_PCR1,SPSD1
NOP
NOP
STM #RCR11,SPSA1
NOP
NOP
STM #K_RCR11,SPSD1
NOP
NOP
STM #RCR21,SPSA1
NOP
NOP
STM #K_RCR21,SPSD1
NOP
NOP
STM #XCR11,SPSA1
NOP
NOP
STM #K_XCR11,SPSD1
NOP
NOP
STM #XCR21,SPSA1
NOP
NOP
STM #K_XCR21,SPSD1
NOP
NOP
STM #SRGR11,SPSA1
NOP
NOP
STM #K_SRGR11,SPSD1
NOP
NOP
STM #SRGR21,SPSA1
NOP
NOP
STM #K_SRGR21,SPSD1
NOP
NOP
NOP
NOP
NOP
NOP
;==============================================================================
; 3.GRST_=1
;==============================================================================
STM #SPCR21,SPSA1
NOP
NOP
STM #0x0040,SPSD1
NOP
NOP
;==============================================================================
; 4.Wait for two sample rate generator duration
;==============================================================================
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;==============================================================================
; 5.XRST_=RRST_=1
;==============================================================================
;STM #SPCR11,SPSA1
;NOP
;NOP
;STM #0081h,SPSD1
;NOP
;NOP
STM #SPCR21,SPSA1
NOP
NOP
STM #00080h,SPSD1
NOP
NOP
STM #SPCR21,SPSA1
NOP
NOP
STM #00C0h,SPSD1
NOP
NOP
STM #SPCR21,SPSA1
NOP
NOP
STM #00C1h,SPSD1
NOP
NOP
;==============================================================================
; 6.Wait for two sample rate generator duration
;==============================================================================
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
.endm
;==============================================================================
; Initialization THE TLV320AIC23B
;==============================================================================
INIT_AIC23B .macro
WRITE_AIC23B_CON_REG TLV_LLVC
WRITE_AIC23B_CON_REG TLV_RLVC
WRITE_AIC23B_CON_REG TLV_LHVC
WRITE_AIC23B_CON_REG TLV_RHVC
WRITE_AIC23B_CON_REG TLV_AAPC
WRITE_AIC23B_CON_REG TLV_DAPC
WRITE_AIC23B_CON_REG TLV_DAIF
WRITE_AIC23B_CON_REG TLV_SARC
WRITE_AIC23B_CON_REG TLV_DIAC
WRITE_AIC23B_CON_REG TLV_PWDC
.endm
;=============================================================================
; write to tlv320aic23b controll register
;=============================================================================
WRITE_AIC23B_CON_REG .macro CONTROL_VALUE
STM #CONTROL_VALUE,DXR11
NOP
NOP
FLASH
.endm
;==============================================================================
; FLASH
;==============================================================================
FLASH .macro
STM #0x0000,AR7
PORTW AR7,0x0000 ;make the lights on
DELAY
STM #0xFFFF,AR7
PORTW AR7,0x0000 ;make the lights off
DELAY
.endm
;==============================================================================
;
; delay sub function
;
;==============================================================================
DELAY .macro
STM #100,AR2
DELAY2?: STM #1000,AR1
DELAY1?: BANZ DELAY1?,*AR1-
BANZ DELAY2?,*AR2-
NOP
NOP
.endm
;==============================================================================
;
; short delay sub function
;
;==============================================================================
SHORT_DELAY .macro
STM #1,AR2
DELAY2?: STM #10,AR1
DELAY1?: BANZ DELAY1?,*AR1-
BANZ DELAY2?,*AR2-
NOP
NOP
.endm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -