8bit 16 step Averageing filter by
Andrew Warren
; Written by Andrew Warren [fastfwd at ix.netcom.com].
A couple days ago, I wrote that an averaging filter of the form:
(WIDTH-1)*AVE + NEW
AVE = -------------------
WIDTH
was "absurdly simple" if WIDTH = 256. A couple of people have asked
in private email for the code; here it is:
AVEHI EQU [ANY FILE REGISTER] ;Holds the average [0-255].
AVELO EQU [ANY FILE REGISTER] ;Holds the fractional part
;of the average.
NEW EQU [ANY FILE REGISTER] ;Holds the new sample.
FILTER256:
MOVF AVEHI,W
SUBWF NEW,W
SKPC
DECF AVEHI
ADDWF AVELO
SKPNC
INCF AVEHI
7 words, 7 instruction cycles, "NEW" is unchanged.