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

📄 ist_filter(old).asm

📁 DSP关于F2407的实例程序
💻 ASM
字号:
;===================================================================== 
; File name	:	IST_FILTER.asm
; Module Name	: 	FILTER
; Description	:	防脉冲平均值滤波器
;	
;
;			|~~~~~~~~~~~~~~~|
;			|		|
;	IST0	o---->	|     FILTER	|----->o FILTER_RESULT
;  (FILTER_Y1-6)	|		|
;			|______________	|
; 2004.9.22
;===================================================================== 
		.include "f2407.h"
		
		.global	FILTER,FILTER_INIT		;function call
		
		.global	IST0				;input
		.global	FILTER_Y1,FILTER_Y2,FILTER_Y3,FILTER_Y4
		.global	FILTER_Y5,FILTER_Y6,FILTER_Y7,FILTER_Y8,FILTER_Y9,FILTER_Y10
		.global	TEMP,FILTER_RESULT,FILTER_MAX,FILTER_MIN,FILTER_COUNT
		
;===================================================================== 
FILTER_INIT:
;===================================================================== 
		LDP	#DP_DATA
		SPLK	#0,FILTER_COUNT	
		SPLK	#0,FILTER_RESULT		
		RET
;===================================================================== 
FILTER:
;===================================================================== 		
		SPM	0
		SETC	SXM			
;-----------------------------------------------------------
		LDP	#DP_DATA
		LACC	IST0
		SACL	FILTER_Y1	;IST0暂存到FILTER_Y1
;-------------
;判断是否10个值都有。
		LACC	FILTER_COUNT			
		SUB	#10
		BCND	FILTER_CAL,GT
		ADD	#11		
		SACL	FILTER_COUNT	;否则加1(已经减10,所以加11)
		B	END_FILTER
; 计算FILTER_MAX
FILTER_CAL:	LACC	FILTER_Y1
		SACL	FILTER_MAX	;Y1最大,ACC=Y1
		SUB	FILTER_Y2
		BCND	NEXT1,GT	;FILTER_Y1>FILTER_Y2时跳到NEXT1
		LACC	FILTER_Y2
		SACL	FILTER_MAX	;Y2最大,ACC=Y2
NEXT1:		
		LACC	FILTER_MAX
		SUB	FILTER_Y3
		BCND	NEXT2,GT	;FILTER_MAX>FILTER_Y3时跳到NEXT2
		LACC	FILTER_Y3
		SACL	FILTER_MAX	;Y3最大
NEXT2:
		LACC	FILTER_MAX
		SUB	FILTER_Y4
		BCND	NEXT7,GT	;FILTER_MAX>FILTER_Y4时跳到NEXT3
		LACC	FILTER_Y4
		SACL	FILTER_MAX	;Y4最大
NEXT7:		
		LACC	FILTER_MAX
		SUB	FILTER_Y5
		BCND	NEXT8,GT	;FILTER_MAX>FILTER_Y5时跳
		LACC	FILTER_Y5
		SACL	FILTER_MAX	;Y5最大	
NEXT8:		
		LACC	FILTER_MAX
		SUB	FILTER_Y6
		BCND	NEXT11,GT	;FILTER_MAX>FILTER_Y6时跳
		LACC	FILTER_Y6
		SACL	FILTER_MAX	;Y6最大		
NEXT11:		
		LACC	FILTER_MAX
		SUB	FILTER_Y7
		BCND	NEXT12,GT	
		LACC	FILTER_Y7
		SACL	FILTER_MAX	
NEXT12:		
		LACC	FILTER_MAX
		SUB	FILTER_Y8
		BCND	NEXT13,GT	
		LACC	FILTER_Y8
		SACL	FILTER_MAX	
NEXT13:		
		LACC	FILTER_MAX
		SUB	FILTER_Y9
		BCND	NEXT14,GT	
		LACC	FILTER_Y9
		SACL	FILTER_MAX	
NEXT14:		
		LACC	FILTER_MAX
		SUB	FILTER_Y10
		BCND	NEXT3,GT	
		LACC	FILTER_Y10
		SACL	FILTER_MAX	
; 计算FILTER_MIN		
NEXT3:
		LACC	FILTER_Y1
		SACL	FILTER_MIN	;Y1最小
		SUB	FILTER_Y2
		BCND	NEXT4,LT	;FILTER_Y2>FILTER_Y1时跳转
		LACC	FILTER_Y2
		SACL	FILTER_MIN	;Y2最小
NEXT4:		
		LACC	FILTER_MIN
		SUB	FILTER_Y3
		BCND	NEXT5,LT	;FILTER_Y3>FILTER_MIN时跳
		LACC	FILTER_Y3
		SACL	FILTER_MIN	;Y3最小
NEXT5:
		LACC	FILTER_MIN
		SUB	FILTER_Y4
		BCND	NEXT9,LT	;FILTER_Y4>FILTER_MIN时跳
		LACC	FILTER_Y4
		SACL	FILTER_MIN	;Y4最小
NEXT9:
		LACC	FILTER_MIN
		SUB	FILTER_Y5
		BCND	NEXT10,LT	;FILTER_Y5>FILTER_MIN时跳
		LACC	FILTER_Y5
		SACL	FILTER_MIN	;Y5最小
NEXT10:
		LACC	FILTER_MIN
		SUB	FILTER_Y6
		BCND	NEXT15,LT	;FILTER_Y6>FILTER_MIN时跳
		LACC	FILTER_Y6
		SACL	FILTER_MIN	;Y6最小	
NEXT15:
		LACC	FILTER_MIN
		SUB	FILTER_Y7
		BCND	NEXT16,LT	
		LACC	FILTER_Y7
		SACL	FILTER_MIN					
NEXT16:
		LACC	FILTER_MIN
		SUB	FILTER_Y8
		BCND	NEXT17,LT	
		LACC	FILTER_Y8
		SACL	FILTER_MIN					
NEXT17:
		LACC	FILTER_MIN
		SUB	FILTER_Y9
		BCND	NEXT18,LT	
		LACC	FILTER_Y9
		SACL	FILTER_MIN					
NEXT18:
		LACC	FILTER_MIN
		SUB	FILTER_Y10
		BCND	NEXT6,LT	
		LACC	FILTER_Y10
		SACL	FILTER_MIN						
;---------------
NEXT6:	
		LACC	FILTER_Y1
		ADD	FILTER_Y2
		ADD	FILTER_Y3
		ADD	FILTER_Y4
		ADD	FILTER_Y5
		ADD	FILTER_Y6
		ADD	FILTER_Y7
		ADD	FILTER_Y8
		ADD	FILTER_Y9
		ADD	FILTER_Y10
		SUB	FILTER_MAX
		SUB	FILTER_MIN
		SFR
		SFR
		SFR			;算术右移一位,相当于除2。
		SACL	FILTER_RESULT	;滤波结果。
;---------------
;把Y值前移。
END_FILTER:	LACC	FILTER_Y9
		SACL	FILTER_Y10
		LACC	FILTER_Y8
		SACL	FILTER_Y9
		LACC	FILTER_Y7
		SACL	FILTER_Y8
		LACC	FILTER_Y6
		SACL	FILTER_Y7
		LACC	FILTER_Y5
		SACL	FILTER_Y6
		LACC	FILTER_Y4
		SACL	FILTER_Y5
		LACC	FILTER_Y3
		SACL	FILTER_Y4
		LACC	FILTER_Y2
		SACL	FILTER_Y3
		LACC	FILTER_Y1
		SACL	FILTER_Y2
;---------------------------------------------------------------------------		
		SPM	0
		SETC	SXM
		RET	
	

⌨️ 快捷键说明

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