; From Regulus Berdin; untested ; Input - ASCII number in W ; Output - binary in W sublw '9' movlw 'A' - .10 skpnc movlw '0' subwf ASCII,w
Tracy Smith says:
If you KNOW that the ASCII is '0'-'9','A'-'F' then a simpler solution for the midrange pics is:addlw -'A' skpc addlw 'A' - 10 + '0' addlw 10If the ASCII value is in ram, then this solution will work for the 12 bit core too:
movlw -'A' btfsc ASCII,6 movlw -'0' addwf ASCII,f ;(or w)
Code:
I think the correct conversion code from Tracy Smith should read : addlw -'A' ; expect upper case letters skpc addlw 'A' - 0x18 -'0' addlw 0x11+
| bcf 0x00,5 | movlw 0xC9 | addwf 0x00,f | movlw 0x27 | btfss 0x03,0 | addwf 0x00,f | return+
See:
Peter Heinrich Says:
+;; Converts an ASCII character code (in W) into the integer value ;; corresponding to the hexadecimal digit it represents. '0'-'9' ;; become 0x0-0x9; 'A'-'F' and 'a'-'f' become 0xa-0xf. (This routine ;; expects W to contain only valid hexadecimal digits.) The result ;; is returned in place in W. ;; char2int: ; Shift the character. addlw 0x9f bnn adjust ; if positive, character was 'a' to 'f' addlw 0x20 ; otherwise, shift to next range of digits bnn adjust ; if now positive, character was 'A' to 'F' addlw 0x7 ; otherwise, character must have been '0' to '9' adjust: addlw 0xa ; shift the result to account for the alpha offset andlw 0xf ; clamp the value to one nybble return
Comments:
Questions:
This one does not care if the A-F is upper or lower case:+
hex2bin ; expects '0'-'9','A'-'F','a'-'f' in W btfsc WREG,6 ; not all PICs can do this... addlw 9 ; that's A-F (0x4? or 0x6?) andlw 0x0F ; we need only the low nibble return
Yes, that's 3 instructions + the return :-)
Tamas
file: /Techref/microchip/math/radix/ah2b-1d4b.htm, 7KB, , updated: 2009/12/8 09:51, local time: 2024/12/22 15:13,
3.146.206.87: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? <A HREF="http://techref.massmind.org/techref/microchip/math/radix/ah2b-1d4b.htm"> PIC Microcontoller Radix Math Methods ASCII Hex to Binary</A> |
Did you find what you needed? |
Welcome to massmind.org! |
Welcome to techref.massmind.org! |
.