PIC Microcontroller DSP Math Method

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.