📄 11-1.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 + -