please dont rip this site

PIC Microcontroller Bit Math Method

Setting bit number X

Tracy Smith says

Here are a couple of ideas for getting 1<<TestBit
10 cycles:

2^n:
    clrw
    btfsc    TestBit,2
     movlw   b'11111100'
    addwf    TestBit,f

    incf     TestBit,w
    btfsc    TestBit,1
     iorwf   TestBit,f

    incf     TestBit,f

    skpnc
     swapf   TestBit,f

.........
another way (7 cycles [including the call])

two_to_n:
    andlw    7
    addwf    pcl,f
    retlw    1
    retlw    2
    retlw    4
    retlw    8
    retlw    0x10
    retlw    0x20
    retlw    0x40
    retlw    0x80


............
or probably more to the point

    movf     portb,w
    movwf    portb_shadow

    btfss    TestBit,2
     swapf   portb_swadow,f


    btfss    TestBit,0
     rlf     portb_shadow,f

    movlw    b'10000000'
    btfss    TestBit,1
     movlw   b'00100000'

    andwf    portb_shadow,f

    skpnz
     goto    _the_bit_is_set

.lo

Kevin Blain says:

clrf    mask    ; empty the mask

; a file called bit contains the 0 to 7 value of the bit position

incf    bit    ; make it 1 to 8, so decfsz works nicely
bsf    STATUS, C    ; set the carry flag. This will be rotated in 'bit' times

loop:
rlf    mask, f
decfsz    bit, f    ; skip out after 'bit' times.
goto    loop
.....               ; rest of code...

Of course, it would be good to ensure that bit is not greater than 7 when
entering the routine.

see: http://www.infosite.com/%7Ejkeyzer/piclist/1999/Nov/0018.html


file: /Techref/scenix/lib/math/bit/setbit.htm, 1KB, , updated: 2004/6/10 13:40, local time: 2024/11/29 17:34,
TOP NEW HELP FIND: 
3.142.210.173:LOG IN

 ©2024 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?
Please DO link to this page! Digg it! / MAKE!

<A HREF="http://ecomorder.com/techref/scenix/lib/math/bit/setbit.htm"> Setting bit number X</A>

After you find an appropriate page, you are invited to your to this massmind site! (posts will be visible only to you before review) Just type a nice message (short messages are blocked as spam) in the box and press the Post button. (HTML welcomed, but not the <A tag: Instead, use the link box to link to another page. A tutorial is available Members can login to post directly, become page editors, and be credited for their posts.


Link? Put it here: 
if you want a response, please enter your email address: 
Attn spammers: All posts are reviewed before being made visible to anyone other than the poster.
Did you find what you needed?

 

Welcome to ecomorder.com!

 

Welcome to ecomorder.com!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  .