 
From: Mike Keitz. There is a trick method that works for 4 bits. It replaces a 2-bit number in a variable with a 4-bit mask:
        incf    BitP, W  ;W = 0001 0010 0011 0100 
        btfsc   BitP, 1  ;If 0 or 1, result is almost correct now. 
        iorwf   BitP, F  ;BitP = [0000] [0001] 0011 0111 
        incf    BitP, F  ;BitP = 0001 0010 0100 1000 
It could be the core of an 8-bit routine thus:
; Convert 3-bit number (0-7) in INDEX to a 8-bit mask (00000001 ... 
; 10000000) in BitP. 
        movfw   INDEX 
        andlw   b'00000011'     ;Start with half of the mask. 
        movwf   BitP 
        incf    BitP, W         ;The 4-bit converter 
        btfsc   BitP, 1 
        iorwf   BitP, F 
        incf    BitP, F 
        btfsc   INDEX, 2        ;Is it high 4 bits? 
        swapf   BitP, F 
| file: /Techref/scenix/lib/math/bit/mask.htm, 1KB, , updated: 2004/6/10 14:40, local time: 2025/10/30 18:31, 
 
216.73.216.139,10-3-157-36:LOG IN | 
| ©2025 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://ecomorder.com/techref/scenix/lib/math/bit/mask.htm"> PIC Microcontroller Bit Math Method Converting a 3-bit number to a 8-bit mask</A> | 
| Did you find what you needed? | 
| Welcome to ecomorder.com! | 
| Ashley Roll has put together a really nice little unit here. Leave off the MAX232 and keep these handy for the few times you need true RS232! | 
.