8-bit value scaled by n-bit fraction
I have a lookup table with 4-bit numbers m=0..15. A value t should be scaled according to theese numbers, so that
s = t * m/16
Rather than using 16-bit multiplication followed by s>>4,
I found a much faster code.
As can be seen, the code can be carried out for e.g. 7-bit m-values as well.
| CODE |
clrf s movf t, W
bcf STATUS, C btfsc m, 0 addwf s, F rrf s, F
bcf STATUS, C btfsc m, 1 addwf s, F rrf s, F
bcf STATUS, C btfsc m, 2 addwf s, F rrf s, F
bcf STATUS, C btfsc m, 3 addwf s, F rrf s, F
btfsc STATUS, C incf s, F ;nearest value |