Tracy Smith says
Here are a couple of ideas for getting 1<<TestBit (10 cycles):2^n: clr W snb TestBit.2 mov W, #%11111100 add TestBit, W mov W, ++TestBit snb TestBit.1 or TestBit, W inc TestBit snb C swap TestBit ......... another way (7 cycles [including the call]) two_to_n: and W, #7 add PC, W retw #1 retw #2 retw #4 retw #8 retw #$10 retw #$20 retw #$40 retw #$80 ............ or probably more to the point mov W, Rb mov portb_shadow, W sb TestBit.2 swap portb_swadow sb TestBit.0 rl portb_shadow mov W, #%10000000 sb TestBit.1 mov W, #%00100000 and portb_shadow, W snb Z jmp _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 inc bit ; make it 1 to 8, so decfsz works nicely setb C ; set the carry flag. This will be rotated in 'bit' times :loop rl mask decsz bit ; skip out after 'bit' times. jmp 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_sx.htm, 1KB, , updated: 2004/6/10 13:40, local time: 2024/11/5 11:52,
18.119.102.46:LOG IN ©2024 PLEASE DON'T RIP! THIS SITE CLOSES OCT 28, 2024 SO LONG AND THANKS FOR ALL THE FISH!
|
©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? <A HREF="http://linistepper.com/techref/scenix/lib/math/bit/setbit_sx.htm"> SX Microcontroller Bit Math Method - Setting bit number X</A> |
Did you find what you needed? |