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

📄 xi.asm

📁 利用DSP实现各种信号
💻 ASM
字号:
;数字电话程序,录音(不加密),录音(加密),放(解密)
;		.version 548
		.mmregs
STACK	.usect  "STACK",100h  
;常量;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
K_BUF_SIZE       .set   400   ;循环次数
STEP             .set    6Ah	 
;TMP		.set 	6Ah
D_LEVEL       .set      0280h 
         .bss   state,1   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  	    .def   _bsp0init
  		.def   _dmainit
		.def   _bspstop
		.def   _firloop
		.ref   _sintable
		.ref   _dmtx
		.ref   _main
		.def   _c_int00
			
;串口0的初始化数据;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
K_SPCR10 .set 0000000010000001b		;串口0的初始化数据
K_SPCR20 .set 0000001011100001b
K_RCR10  .set 0000000000000000b 
K_RCR20  .set 0000000000000000b
K_XCR10  .set 0000000001000000b
K_XCR20  .set 0000000001000001b
K_SRGR10 .set 0000000000010011b		;
K_SRGR20 .set 0011000000011111b
                     ;       ;
K_PCR0   .set 0000101000000000b     

SPSA0	.set 	38h
McBSP0	.set 	39h
DXR10   .set 	23h
DXR20	.set 	22h
DRR10   .set 	21h
DRR20   .set 	20h 


SWCR	.set	2BH
 
SPCR10  .set 	00h 
SPCR20  .set 	01h
RCR10   .set 	02h
RCR20   .set 	03h
XCR10   .set 	04h
XCR20   .set 	05h
SRGR10	.set	06h	
SRGR20  .set	07h
MCR10   .set	08h
MCR20   .set    09h
RCERA0  .set    0ah
RCERB0  .set    0bh
XCERA0  .set    0ch
XCERB0  .set    0dh
PCR0    .set 	0Eh
;串口0的初始化数据;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;DMA 的初始化数据;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DMPREC .set 0054h ;Channel Priority and Enable Control Register
DMSA .set 0055h ;Sub-bank Address Register
DMSDI .set 0056h ;Sub-bank Data Register with autoincrement
DMSDN .set 0057h ;Sub-bank Data Register without modification
DMSRC0 .set 00h ;Channel 0 Source Address Register
DMDST0 .set 01h ;Channel 0 Destination Address Register
DMCTR0 .set 02h ;Channel 0 Element Count Register
DMSFC0 .set 03h ;Channel 0 Sync Select and Frame Count Register
DMMCR0 .set 04h ;Channel 0 Transfer Mode Control Register
DMSRC1 .set 05h ;Channel 1 Source Address Register
DMDST1 .set 06h ;Channel 1 Destination Address Register
DMCTR1 .set 07h ;Channel 1 Element Count Register
DMSFC1 .set 08h ;Channel 1 Sync Select and Frame Count Register
DMMCR1 .set 09h ;Channel 1 Transfer Mode Control Register
DMSRC2 .set 0Ah ;Channel 2 Source Address Register
DMDST2 .set 0Bh ;Channel 2 Destination Address Register
DMCTR2 .set 0Ch ;Channel 2 Element Count Register
DMSFC2 .set 0Dh ;Channel 2 Sync Select and Frame Count Register
DMMCR2 .set 0Eh ;Channel 2 Transfer Mode Control Register
DMSRC3 .set 0Fh ;Channel 3 Source Address Register
DMDST3 .set 10h ;Channel 3 Destination Address Register
DMCTR3 .set 11h ;Channel 3 Element Count Register
DMSFC3 .set 12h ;Channel 3 Sync Select and Frame Count Register
DMMCR3 .set 13h ;Channel 3 Transfer Mode Control Register
DMSRC4 .set 14h ;Channel 4 Source Address Register
DMDST4 .set 15h ;Channel 4 Destination Address Register
DMCTR4 .set 16h ;Channel 4 Element Count Register
DMSFC4 .set 17h ;Channel 4 Sync Select and Frame Count Register
DMMCR4 .set 18h ;Channel 4 Transfer Mode Control Register
DMSRC5 .set 19h ;Channel 5 Source Address Register
DMDST5 .set 1Ah ;Channel 5 Destination Address Register
DMCTR5 .set 1Bh ;Channel 5 Element Count Register
DMSFC5 .set 1Ch ;Channel 5 Sync Select and Frame Count Register
DMMCR5 .set 1Dh ;Channel 5 Transfer Mode Control Register
DMSRCP .set 1Eh ;Source Program Page Address
DMDSTP .set 1Fh ;Destination Program Page Address
DMIDX0 .set 20h ;Element Address Index Register 0
DMIDX1 .set 21h ;Element Address Index Register 1
DMFRI0 .set 22h ;Frame Address Index Register 0
DMFRI1 .set 23h ;Frame Address Index Register 1
DMGSA .set 24h ;Global Source Address Reload Register
DMGDA .set 25h ;Global Destination Address Reload Register
DMGCR .set 26h ;Global Element Count Reload Register
DMGFR .set 27h ;Global Frame Count Reload Register		
;DMA 的初始化数据;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		.sect ".iptr"
_c_int00
		b START
		nop
		nop
NMI	rete
		nop
		nop
		nop
SINT17	.space 4*16
SINT18	.space 4*16
SINT19	.space 4*16
SINT20	.space 4*16
SINT21	.space 4*16
SINT22	.space 4*16
SINT23	.space 4*16
SINT24	.space 4*16
SINT25	.space 4*16
SINT26	.space 4*16
SINT27	.space 4*16
SINT28	.space 4*16
SINT29	.space 4*16
SINT30	.space 4*16
INT0	rsbx 	intm
		rete
		nop
		nop
INT1	rsbx 	intm
		rete
		nop
		nop
INT2	rsbx 	intm
		rete
		nop
		nop
TINT:	RETE
		nop
		nop
		nop
RINT0:	rsbx 	intm
		rete
		nop
		nop
XINT0:	rsbx 	intm
		rete
		nop
		nop 
SINT6	.space 4*16
SINT7	.space 4*16
INT3:	rete
		nop
		nop
		nop  
HPINT:	rete
		nop
		nop
		nop  
RINT1:	rete
		nop
		nop
		nop
XINT1:	RETE
		nop
		nop
		nop
DMINT4:
		RETE
		nop
		nop
		nop
DMINT5:
		BD _dmtx
		nop
		nop
				
;*************************
		.text
START:	
		
		STM		#STACK+100h,SP
		STM 	#7000h,SWWSR
		STM 	#1020h,PMST
		SSBX    CPL
		SSBX 	INTM             ;DINT
		RSBX    OVM
		NOP
		NOP
		B       _main
;*********************************************************
_firloop:
		
		STLM   A,AR6                 ;把TxBuf的地址
		PORTR  #20h,*(state)
	;    ST     #400h,*(state)
		STM    #K_BUF_SIZE,BRC
		STM    #1,AR0
		BITF   *(state),#0100h
		BC     NEXT1,NTC
		STM    _sintable,AR5
		B      NEXT6
NEXT1   BITF   *(state),#0200h
		BC     NEXT2,NTC
    	STM    _sintable+400,AR5
    	B      NEXT6
NEXT2   BITF   *(state),#0400h
		BC     NEXT3,NTC
		STM    _sintable+800,AR5
		B      NEXT6	
NEXT3   BITF   *(state),#0800h
		BC     NEXT4,NTC
		STM    _sintable+1200,AR5
		B      NEXT6
NEXT4   BITF   *(state),#1000h
		BC     NEXT5,NTC
		STM    _sintable+1600,AR5
		B      NEXT6
NEXT5	BITF   *(state),#2000h
		BC     NEXT6,NTC
		STM    _sintable+2000,AR5						
NEXT6	RPTB   LOOP-1
	   ; STM    _sintable,AR5
	    LD   *AR5+0,A
	    SFTA  A,-5
	    ADD  #D_LEVEL,A
	    STL  A,*AR6+ 
	 
LOOP   
        RET
    
        
      

;*************************
;******************************       
_bsp0init:
		STM 	#SPCR10,SPSA0		;串口0和PCM编解码器的初始化程序  
		STM 	#0000h,McBSP0  		;RESET R
		NOP
		NOP
		
		STM 	#SPCR20,SPSA0  
		STM 	#0000h,McBSP0  		;RESET X	
		NOP
		NOP
		
		STM 	#RCR10,SPSA0
		STM 	#K_RCR10,McBSP0 
		NOP
		NOP   
		
		STM 	#XCR10,SPSA0
		STM 	#K_XCR10,McBSP0
		NOP
		NOP
		
		STM 	#PCR0,SPSA0
		STM 	#K_PCR0,McBSP0
		NOP
		NOP
	    
	    STM		SRGR10,SPSA0
	    STM		#K_SRGR10,McBSP0
	    NOP
		NOP
		
		STM		SRGR20,SPSA0
	    STM		#K_SRGR20,McBSP0
	    NOP
		NOP 
		
		STM 	#RCR20,SPSA0
		STM 	#K_RCR20,McBSP0 
		NOP
		NOP 
		
		STM 	#XCR20,SPSA0
		STM 	#K_XCR20,McBSP0
		NOP
		NOP   
		
		STM 	#SPCR10,SPSA0
		STM 	#K_SPCR10,McBSP0    	;ENBLE R
		NOP
		NOP
						   
		STM 	#SPCR20,SPSA0
		STM 	#K_SPCR20,McBSP0    	;ENBLE X
		NOP
		NOP	
		RET



;******************************       

_bspstop:
		STM 	#SPCR10,SPSA0		;串口0和PCM编解码器的初始化程序  
		STM 	#0000h,McBSP0  		;RESET R
		NOP
		NOP
		
		STM 	#SPCR20,SPSA0  
		STM 	#0000h,McBSP0  		;RESET X	
		NOP
	    RET
;**************************
_dmainit:
		STM	DMSRC5,DMSA ;set source address to DRR10
		STM #3000h,DMSDI
		STM DXR10,DMSDI
		STM #320h ,DMSDI
		STM #0010000000000000b ,DMSDI
			;0010~~~~~~~~~~~~ (DSYN) McBSP0 transmit sync event
			;~~~~0~~~~~~~~~~~ (DBLW) Single-word mode
			;~~~~~000~~~~~~~~ Reserved
			;~~~~~~~~00000000 (Frame Count) Frame count is not
			; relevant in ABU mode
		STM #0111000101000001b ,DMSDN
			;0~~~~~~~~~~~~~~~ (AUTOINIT) Autoinitialization disabled
			;~1~~~~~~~~~~~~~~ (DINM) DMA Interrupts enabled
			;~~1~~~~~~~~~~~~~ (IMOD) Interrupt at half-full buffer
			;~~~1~~~~~~~~~~~~ (CTMOD) ABU (non-decrement) mode
			;~~~~0~~~~~~~~~~~ Reserved
			;~~~~~011~~~~~~~~ (SIND) Post increment source address (DRR10)
			;~~~~~~~~01~~~~~~ (DMS) Source in data space
			;~~~~~~~~~~0~~~~~ Reserved
			;~~~~~~~~~~~000~~ (DIND) No modify on destination address
			; with DMIDX0
			;~~~~~~~~~~~~~~01 (DMD) Destination in data space
		STM DMIDX0,DMSA ;set element address index to +1
		STM #0001h,DMSDN
		STM #0011000000110000b ,DMPREC
			;0~~~~~~~~~~~~~~~ (FREE) DMA stops on emulation stop
			;~0~~~~~~~~~~~~~~ Reserved
			;~~1~~~~~~~~~~~~~ (DPRC[5]) Channel 5 high priority
			;~~~1~~~~~~~~~~~~ (DPRC[4]) Channel 4 high priority
			;~~~~0~~~~~~~~~~~ (DPRC[3]) Channel 3 low priority
			;~~~~~0~~~~~~~~~~ (DPRC[2]) Channel 2 low priority
			;~~~~~~0~~~~~~~~~ (DPRC[1]) Channel 1 low priority
			;~~~~~~~0~~~~~~~~ (DPRC[0]) Channel 0 low priority
			;~~~~~~~~00~~~~~~ (INTOSEL) N/A
			;~~~~~~~~~~1~~~~~ (DE[5]) Channel 5 enabled
			;~~~~~~~~~~~1~~~~ (DE[4]) Channel 4 enabled
			;~~~~~~~~~~~~0~~~ (DE[3]) Channel 3 disabled
			;~~~~~~~~~~~~~0~~ (DE[2]) Channel 2 disabled
			;~~~~~~~~~~~~~~0~ (DE[1]) Channel 1 disabled
			;~~~~~~~~~~~~~~~0 (DE[0]) Channel 0 disabled
		RET
;*************************  
		.end


⌨️ 快捷键说明

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