- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
                        查看更多
                        
                    
                第5章  数字滤波及控制算法
5.1  平均值滤波
程序清单如下:
;************* AD采样中断子程序******************
AD			CALL		PUSH		;调PUSH子程序保护现场
			BCF			PIR1,ADIF	;清AD中标志位
			BTFSS		TEMP,2		;TEMP=4?
			GOTO		AD1			;否,采样周期没完,求和
			CLRF		ADH			;是,新的采样周期开始,清ADH寄存器
			CLRF		ADL			;清ADL寄存器
			MOVF		ADRESHL,0	;AD采样结果低8位送W寄存器
			ADDWF		ADL			;加至ADL寄存器
		BTFSC 		STATUS,C	;
	INCF 		ADH			;
	MOVF 		ADRESH,0	;	ADDWF 		ADH
	DECFSZ		TEMP		;本次采样周期结束?
	GOTO		AD2
	MOVLW		0X04			;是,重新初始化TEMP寄存器
	MOVWF		TEMP	
	BSF			FLAG,1		;置AD采样周期结束标志位
	CALL		POP			;恢复现场
	RETFIE					;本次采样周期结束,返回
AD2	CALL		DELAY		;调延时子程序,延时2μs
			BSF			ADCON0,GO	;开始下一次采样
			CALL		POP			;恢复现场
			RETFIE					;中断返回
;*************中断保护现场子程序****************
PUSH									
			MOVWF		W_STACK		;W寄存器
			MOVF		STATUS,0	;STATUS寄存器
			MOVWF		ST_STACK
			BCF			STATUS,RP0	;0
			RETURN					;
;**************中断恢复现场子程序***************
POP					
	MOVF		ST_STACK,0	;STATUS寄存器值
			MOVWF		STATUS
			MOVF		W_STACK,0	;W寄存器值
			RETURN					;************* AD采样中断子程序**************
AD			CALL		PUSH		;调PUSH子程序保护现场
			BCF			PIR1,ADIF	;清AD中标志位
	MOVF		ADRESH,0	;存AD采样结果高8位
	MOVWF		INDF
	INCF			FSR			;指针指向下一存储单元
	MOVF		ADRESL,0	;存AD采样结果低8位
	MOVWF		INDF	
	INCF			FSR			;指针指向下一存储单元
	DECFSZ		COUNT		;指针移动超过8次?
	GOTO		ADX			;否,直接返回
	MOVLW		AD1			;是,指针指向AD1寄存器
	MOVWF		FSR
	MOVLW		0X04			;重新初始化COUNT寄存器
	MOVWF		COUNT
ADX	CALL		POP			;调POP子程序,恢复现场
	RETFIE					;中断返回
;***********中断保护现场子程序*************
PUSH									
			MOVWF		W_STACK		;W寄存器
			MOVF		STATUS,0	;STATUS寄存器
			MOVWF		ST_STACK
			BCF			STATUS,RP0	;0
			RETURN					;
;************中断恢复现场子程序*************
POP			MOVF		ST_STACK,0	;STATUS寄存器值
			MOVWF		STATUS
			MOVF		W_STACK,0	;W寄存器值
			RETURN					;
5.3  防脉冲干扰平均值滤波
程序清单如下:
;************ AD采样中断子程序**************
AD			CALL		PUSH		;调PUSH子程序保护现场
			BCF			PIR1,ADIF	;清AD中标志位
	MOVF		ADRESH,0	;存AD采样结果高8位
	SUBWF		AD1,0		;当前AD采样值和最小值比较
	BTFSS		STATUS,C	
	GOTO		ADX1
	MOVF		AD1,0		;当前采样值小于最小值,另存AD1
	MOVWF		INDF
	MOVF		ADRESH,0	;当前采样值送AD1寄存器
	MOVWF		AD1
	GOTO		OVER		;转OVER
ADX1	MOVF		ADRESH,0	;若当前采样值大于最小值,与最大值比较
	SU
                 原创力文档
原创力文档 
                        

文档评论(0)