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

📄 11-1.asm

📁 本文件提供各种驱动程序和汇编代码,包括温度芯片驱动等等.
💻 ASM
字号:
;(1)程序判断滤波法

MOV	A,30H				;读取当前采样值
CLR		C			;清除进位位
SUBB	A,3lH				;求当前采样值和上次采样值的差值
JNC		LP1			;如果当前采样值大于或等于上次采样值,则跳转
CPL		A
ADD	01H				;如果当前值小于上次采样值
LP1:CLR	C
CJNE	A,01H	LP3			;当前采样值与上次采样值的差值大于最大偏差值
LP2:MOV	32H,30H		;保存本次采样遭
AJMP	RET1
LP3:JC		LP2			;当前采样值与上一次采样值的差值小于最大偏差值
MOV	32H,31H			;如果当前采样值与上一次采样值的差值大于最大偏差值
					;那么使用上一次的值
RET1:RET


;(2)中值滤波法

CAL:	MOV	R3,#04H		;存外循环次数
CAL1:	MOV	A,R3			;内循环次数
		MOV	R2,A
		MOV	R0,#40H	;数据首地址送给R0
		MOV	Rl,#4lH	;数据次地址送给Rl
CAL2:	MOV	A,@Rl
		CLR		C
		SUBB	A,@R0		;相邻两个单元的数值相减
		JNC	CAL3		;如果R1中的值大于R0中的值,不交换
		MOV	A,@R0		;如果R1中的值小于R0中的值,交换
		XCH	A,@R1
		MOV	@R0,A
CAL3:	INC		R0		;数据指针加1
		INC		R1
		DJNZ	R2,CAL2
		DJNZ	R3,CAL1
		CLR		C
		MOV	A,#04H
		RRC	A
		ADD	A,#30H		;计算中值地址
		MOV	R0,A
		MOV	70H,@R0	;存放滤波值
		RET


;(3)算术平均值滤波法

FILTER:	MOV	R2,#04		;设置累加次数
		MOV	R0,#40H	;采样值首地址
		CLR	A
		MOV	R6,A		;清累加单元
		MOV	R7,A
LPl: 	MOV	A,R6 
		ADD	A,@R0
		MOV	R6,A
		INC	R0
		MOV	A,R7
		ADDC	A,@R0
		MOV	R7,A
		INC	R0
		DJNZ	R2,LPl
		MOV	40H,R6		;被除数
		MOV	4lH,R7
		MOV	44H,#N		;除数
		MOV	45H,#00H
		LCALL	DIVl6		;求平均值
		MOV	50H,40H	;存滤波值
		NOV	51H,41H
		RET
DIV:	CLR		A		;双字节除法
		MOV	42H,A		;清余数单元
		MOV	43H,A
		MOV	R2,#10H	;置移位次数
LP2:	CLR		C
		MOV	R3,#04H
		MOV	R0,#40H	;被除数地址
LP3:	MOV		A,@R0		;被除数单元,余数单元左移一次
		RLC	A
		MOV	@R0,A
		INC	R0
		DJNZ	R3,LP3
		MOV	R0,#42H	;余数单元 - 除数
		MOV	R1,#44H
		MOV	A,@R0
		CLR	C
		SUBB	A,@R1
		MOV	48H,A		;存差值低字节
		INC	R0
		INC	R1
		MOV	A,@R0
		SUBB	A,@R1
		MOV	49H,A		;存差值高字节
		JC	LP4		;不够减则继续左移
		MOV	R0,#42H	;够减时差值取代原来的余数
		MOV	R1,#48H
		MOV	A,@R1
		MOV	@R0,A
		INC	R0
		INC	R1
		MOV	A,@R1
		NIV	@R0,A
		INC	40H		;被除数单元加1
LP4:	
		DJNZ	R2,LP2		;移位次数不到,继续执行
		RET


;(4)递推平均滤波法

		MOV	R2,#N-l	;采样个数
		MOV	R0,#32H	;队列单元首地址
		MOV	R1,#33H
LP:
		MOV	A,R0		;移动低字节
		DEC	R0
		DEC	R0
		MOV	@Rn,A
		MOV	A,R0		;修改低字节地址
		ADD	A,#04H
		MOV	R0,A
		MOV	A,@R1		;移动高字节
		DEC	R1
		DEC	R1
		MOV	@R1,A
		MOV	A,R1		;修改高字节地址
		ADD	A,#04H
		MOV	R1,A
		DJNZ	R2,LP
		MOV	@R0,2EH	;存新的采样值
		MOV	@R1,2FH
		ACALL   FILTER		;求算术平均值
		RET

;(5)防脉冲干扰平均值滤波法


FILTER:	
		CLR	A
		MOV	R2,A		;最大值初始值
		MOV	R3,A
		MOV	R6,A
		MOV	R7,A
		MOV	R5,#1FH
		MOV	R0,#04H
FIL1:	
		LCALL	GETAD
		MOV	R1,A
		ADD	A,R7
		MOV	R7,A
		MOV	A,B
		ADDC	A,R6
		MOV	R6,A
		CLR	C
		MOV	A,R3
		SUBB	A,R1
		MOV	A,R2
		SUBB	A,B
		JNC		FIL2
		MOV	A,R1
		MOV	R3,A
		MOV	R2,B
FIL2:	
		CLR	C
		MOV	A,R1
		SUBB	A,R5
		MOV	A,B
		SUBB	A,R4
		JNC		FIL3
		MOV	A,R1
		MOV	R5,A
		MOV	R4,B
FIL3:	
		DJNZ	R0,FIL1
		CLR	C
		MOV	A,R6
		SUBB	A,R2
		MOV	R6,A
		MOV	A,R7
		SUBB	A,R3
		MOV	R7,A
		MOV	A,R6
		SUBB	A,R4
		MOV	R6,A
		MOV	A,R7
		SUBB	A,R5
		CLR	C
		RRC	A
		MOV	R7,A
		MOV	A,R6
		RRC	A
		MOV	R6,A
		RET


;(6) 一阶滞后滤波法


FILTER:	MOV	R0,#DATA1
		MOV	R1,#DATA2
		CLR	C				;0.5Yn-1→R2和R3中
		INC	R0
		MOV	A,@R0
		RRC	A
		MOV	R3,A
		DEC	R0
		MOV	A,@R0
		RRC	A
		MOV	R2,A
		MOV	A,@R0
		ADD	A,@R1
		MOV	R6,A
		INC	R0
		INC	R1
		MOV	A,@R0
		ADDC	A,@R1
		RRC	A
		MOV	R7,A
		MOV 	A,R6
		RRC	A
		MOV	R6,A
		CLR	C
		MOV	A,R7
		RRC	A
		MOV	R7,A
		MOV	A,R6
		RRC	A
		ADD	A,R2
		MOV	R2,A
		MOV	A,R7
		ADDC	A,R3
		MOV	R3,A
		RET

⌨️ 快捷键说明

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