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

📄 c8_1_1.asm

📁 dsp入门与实践一书的源代码
💻 ASM
字号:


	


    
    .title   "ehancement.asm"    	
	.mmregs	
    .global  cy_start

DXR10   .set    0023h
SPSA0	.set	0038h
SPSA1	.set	0048h
SPSD0	.set	0039h
SPSD1	.set	0049h

SPCR10	.set	00h
SPCR20	.set	01h
XCR10	.set	04h 
XCR20	.set	05h
PCR0	.set	0Eh
  
SPCR11	.set	00h
SPCR21	.set	01h
XCR11	.set	04h 
XCR21	.set	05h
PCR1	.set	0Eh 


K_DBL		.set	0b << 15	
K_RJUST		.set	00b<< 13	
K_CLKSTP	.set	00b<< 11	
K_SPCR1_RES	.set	000b<<8     
K_DXENA		.set	1b << 7     
K_ABIS		.set	0b << 6		
K_RINTM		.set	00b<< 4		
K_RSYNCERR	.set	0b << 3     
K_RFULL		.set	0b << 2     
K_RRDY		.set	0b << 1
K_RRST		.set	0b << 0     

K_SPCR10_RST .set  K_DBL|K_RJUST|K_CLKSTP|K_DXENA|K_ABIS|K_RINTM|K_RSYNCERR|K_RFULL|K_RRDY|K_RRST
K_SPCR11_RST .set  K_DBL|K_RJUST|K_CLKSTP|K_DXENA|K_ABIS|K_RINTM|K_RSYNCERR|K_RFULL|K_RRDY|K_RRST
	
K_RRST1		.set	1b << 0
K_SPCR10_OUT_RST .set  K_DBL|K_RJUST|K_CLKSTP|K_DXENA|K_ABIS|K_RINTM|K_RSYNCERR|K_RFULL|K_RRDY|K_RRST1
K_SPCR11_OUT_RST .set  K_DBL|K_RJUST|K_CLKSTP|K_DXENA|K_ABIS|K_RINTM|K_RSYNCERR|K_RFULL|K_RRDY|K_RRST1


K_SPCR2_RES	.set	000000b << 10	
K_FREE		.set	0b << 9	 
K_SOFT		.set	0b << 8	 
K_FRST		.set	0b << 7  
K_GRST		.set	0b << 6  
K_XINTM		.set	0b << 4	 
K_XSYNCERR	.set	0b << 3	 
K_XEMPTY	.set	0b << 2  
K_XRDY		.set	0b << 1  
K_XRST		.set	0b << 0  
K_SPCR20_RST .set  K_FREE|K_SOFT|K_FRST|K_GRST|K_XINTM|K_XSYNCERR|K_XEMPTY|K_XRDY|K_XRST
K_SPCR21_RST .set  K_FREE|K_SOFT|K_FRST|K_GRST|K_XINTM|K_XSYNCERR|K_XEMPTY|K_XRDY|K_XRST
						
K_FRST1		.set	1b << 7
K_GRST1		.set	1b << 6
K_XRST1		.set	1b << 0
K_SPCR20_OUT_RST .set  K_FREE|K_SOFT|K_FRST|K_GRST|K_XINTM|K_XSYNCERR|K_XEMPTY|K_XRDY|K_XRST1
K_SPCR21_OUT_RST .set  K_FREE|K_SOFT|K_FRST1|K_GRST1|K_XINTM|K_XSYNCERR|K_XEMPTY|K_XRDY|K_XRST1 


K_PCR_RES	.set	00b <<14  
K_XIOEN		.set	0b << 13  
K_RIOEN		.set	0b << 12
K_FSXM		.set	0b << 11  
K_FSRM		.set	0b << 10  
K_CLKXM		.set	0b << 9  
K_CLKRM 	.set	0b << 8		
K_CLKS_STAT	.set	0b << 6
K_DX_STAT	.set	0b << 5
K_DR_STAT	.set	0b << 4
K_FSXP		.set	1b << 3  
K_FSRP		.set	0b << 2
K_CLKXP		.set	0b << 1  
K_CLKRP		.set	0b << 0  
K_PCR0      .set   K_PCR_RES|K_XIOEN|K_RIOEN|K_FSXM|K_FSRM|K_CLKXM|K_CLKRM|K_CLKS_STAT|K_DX_STAT|K_DR_STAT|K_FSXP|K_FSRP|K_CLKXP|K_CLKRP
K_PCR1      .set   K_PCR_RES|K_XIOEN|K_RIOEN|K_FSXM|K_FSRM|K_CLKXM|K_CLKRM|K_CLKS_STAT|K_DX_STAT|K_DR_STAT|K_FSXP|K_FSRP|K_CLKXP|K_CLKRP 


K_XCR1_rsvd1 .set	0b << 15							        
K_XFRLEN1	 .set	0000000b << 8  							        
K_XWDLEN1	 .set	010b << 5      
K_XCR1_rsvd2 .set	00000b << 0    
K_XCR10      .set   K_XCR1_rsvd1|K_XFRLEN1|K_XWDLEN1|K_XCR1_rsvd2
K_XCR11      .set   K_XCR1_rsvd1|K_XFRLEN1|K_XWDLEN1|K_XCR1_rsvd2


K_XPHASE   .set	0b << 15       	        
K_XFRLEN2  .set	0000000b << 8  
K_XWDLEN2  .set	010b << 5      
K_XCOMPAND .set	00b << 3       
K_XFIG     .set 0b << 2     
K_XDATDLY  .set 00b << 0    
K_XCR20    .set   K_XPHASE|K_XFRLEN2|K_XWDLEN2|K_XCOMPAND|K_XFIG|K_XDATDLY
K_XCR21    .set   K_XPHASE|K_XFRLEN2|K_XWDLEN2|K_XCOMPAND|K_XFIG|K_XDATDLY 

K_PMST    		.set   001B0H
K_CLKMD    		.set   01336H
K_ST0    		.set   01800H
K_ST1    		.set   02B00H
K_BSCR    		.set   00000H
K_SWWSR_IO      .set   00000H
			
port_adc	.set	0x8000     ;0xe000

   	.data
flag_signal_count	.word	0			
const_one			.word	1
const_null			.word	0
tmp					.word	0
const_8             .word   8 

buffer			.usect	"varrible",256	         
signal			.usect	"varrible",32*32  
dsnsignal		.usect	"varrible",32*32

	.text
cy_start:
    intm = #1          
    sp = #02C90h 
    nop
	
    call init_5402       
	                    
	dp = #flag_signal_count  
    
	
	a = #0             
	ar4 = #dsnsignal  
	repeat(#1023)	       
	*AR4+ = A 
	          
	call serial_init   
	
BEGIN:
	ifr = #0ffffh			
	nop
	nop
	nop
	IMR = #0001h            
	nop
	@flag_signal_count = #31      ; 32 cycles
	AR3 = #signal
	
cy_loop:  
	NOP     
	NOP     
	ar4 = #buffer             
	ar5 = #port_adc
	intm = #0
	nop
	nop
	nop      
	nop
	idle(1)
	nop
	nop  
	nop
	nop
	intm = #1	

cyfir_filter: 
	AR0 = #1
	AR4 = #buffer
	AR5 = #FIR_xishu          
	BRC = #31    		      
    dblockrepeat(fir_filter_loop-1)
	BK = #8			          	
	repeat(#7),A=0
    A += (*AR4+) * (*AR5+0%)   
    nop
	*AR3+ = hi(A)			  
    MAR(*AR4-)                
 	MAR(*AR4-)
	MAR(*AR4-)
	MAR(*AR4-)	
fir_filter_loop:
	B = @flag_signal_count          
	B -= @const_one           
	if (blt) goto picture_ehance
	@flag_signal_count = B
	goto cy_loop

picture_ehance:
    brc=#1023	
    ar4= #signal
    ar5= #dsnsignal
    @const_8= #8
    T=@const_8
    blockrepeat(ehancement_loop-1)
    a=T* *ar4
    b=*ar4(-33)
    b=-b
    a=a+b
    b=*ar4(-32)
    b=-b
    a=a+b
    b=*ar4(-31)
    b=-b
    a=a+b
    b=*ar4(-1)
    b=-b
    a=a+b
    b=*ar4(1)
    b=-b
    a=a+b
    b=*ar4(31)
    b=-b
    a=a+b
    b=*ar4(32)
    b=-b
    a=a+b
    b=*ar4(33)
    b=-b
    a=a+b
    *ar5+ = a
    MAR(*AR4+)
ehancement_loop:
    nop
	goto BEGIN
    

*****   ADC INPUT    *****
receive_signal_int0:
    BRC = #135 
    nop
    nop   		      
    blockrepeat(cy_100MHz-1)
	*ar4+ = *ar5
	nop
cy_100MHz:
    nop
    nop
    return_enable

init_5402:     		 
	SWWSR = #K_SWWSR_IO	
	BSCR = #K_BSCR		
	ST0 = #K_ST0
	ST1 = #K_ST1
	PMST = #K_PMST 
	CLKMD = #K_CLKMD
	nop
	nop	
	return
    
serial_init:
    mmr(SPSA0) = #SPCR10
    nop
    mmr(SPSD0) = #K_SPCR10_RST         
    mmr(SPSA0) = #SPCR20
    nop
    mmr(SPSD0) = #K_SPCR20_RST        
    mmr(SPSA0) = #PCR0
    nop
    mmr(SPSD0) = #K_PCR0     
    mmr(SPSA0) = #XCR10
    nop
    mmr(SPSD0) = #K_XCR10  
    mmr(SPSA0) = #XCR20
    nop
    mmr(SPSD0) = #K_XCR20 
    nop          
    nop
	return

FIR_xishu:	  ; filter coefficients
	.word	0x0400	
	.word	0x1200	
	.word	0x3900	
	.word	0x4700	
	.word	0x4700	
	.word	0x3900	
	.word	0x1200	
	.word	0x0400	

     .sect "vectors"
reset:  
	goto  cy_start	
	NOP
	NOP 
nmi:  
	return_enable
	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: 
	goto  receive_signal_int0	
	NOP
	NOP
int1:	return_enable
	NOP
	NOP
	NOP
int2:	return_enable
	NOP
	NOP
	NOP
tint:	return_enable
	NOP
	NOP			        
	NOP
rint0: 	return_enable	
	NOP 			    
	NOP
	NOP
xint0:	return_enable	
	NOP			       
	NOP
	NOP
rint1:	return_enable	
	NOP			        
	NOP
	NOP
xint1:	return_enable	
	NOP			        
	NOP
	NOP
int3:   return_enable 
	nop             
	nop
	nop
hpint:  return_enable
     nop 
	 nop                
	 nop
	 .space  4*16
	 .end






⌨️ 快捷键说明

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