# PICMicrocontoller Radix MathMethod

## 2 digit ASCII decimal to 8 bit Binary

Robert White shares this code:

```ASCII 3 digit decimal to 8 bit binary.

CONV_ASCII_HEX
MOVLW	0X30
SUBWF	DIGIT2, F
SUBWF	DIGIT3, F
DIGI1
SUBWF	DIGIT1, F
BTFSC	STATUS, Z
GOTO	X0
MOVF	DIGIT1, W
SUBLW	0X02
BTFSC	STATUS, Z
GOTO	X200
MOVF	DIGIT1, W
SUBLW	0X01
BTFSC	STATUS, Z
GOTO	X100
GOTO	X0
X0
CLRF	OUT
GOTO	DIGI2
X100
MOVLW	0X64
MOVWF	OUT
GOTO	DIGI2
X200
MOVLW	0XC8
MOVWF	OUT
DIGI2
MOVLW	0X09
MOVWF	COUNTN
MOVF	DIGIT2, W
LOOPN
DECFSZ	COUNTN, F
GOTO	LOOPN
MOVF	DIGIT2, W
DIGI3
MOVF	DIGIT3, W
RETURN
```

the three starting digits are in <DIGIT1;DIGIT2;DIGIT3>, and the binary is in OUT. good for use in RS232 terminal applications, which is what I designed it for. Also good for keypad etc.

• ```; 2 digit ASCII decimal to 8 bit Binary
; This how I'd have done it as it saves having any loops - 18 clks
; ASCII DIGIT1=(hundreds), DIGIT2=(tens), DIGIT3=(units). The hex value is in OUT.
; The routine does not affect any of the ASCII DIGIT values, or need addition registers.
; CAUTION: The routine does not test that the ASCII values are valid !
; I have just written this code to show the idea, it hasn't been tested in anyway.

CONV_ASCII_HEX

movlw	0X0F		; Bit pattern to strip off ASCII offset
andwf	DIGIT3, W 	; convert ASCII value to a number (units)
movwf	OUT, F		; start the running total (units)

rlf	DIGIT2, W	; read 2*DIGIT2 doing (tens)
andlw	0x1E		; clear ASCII offset + odd bits
addwf	OUT, F		; add to running total total 2T + U
addwf	OUT, F		; add to running total total 4T + U
addwf	OUT, F		; add to running total total 6T + U
addwf	OUT, F		; add to running total total 8T + U
addwf	OUT, F		; add to running total total 10T + U

movlw	'1'		; (Hundred) digit can only usefully be 1 or 2
subwf	DIGIT1, W	; test value of DIGIT1 (sets flags)
movlw	0x00		; clear value to add to total
btfsc	STATUS, C	; test if result negative ie DIGIT1 was <='0'
movlw	200		; DIGIT1 was >'0', total needs inc by 100 or 200
btfsc	STATUS, Z	; test if result = '1'
movlw	100		; DIGIT1 was = '1' inc total by 100
addwf	OUT, F		; add 0, 100 or 200 to total as req
```
+

Questions:

 file: /Techref/microchip/math/radix/a2b-3d8b-rw.htm, 3KB, , updated: 2009/4/10 13:32, local time: 2024/7/13 17:49, TOP NEW HELP FIND:  3.235.182.206: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! PIC Microcontoller Radix Math Method

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? "No. I'm looking for: " "No. Take me to the search page." "No. Take me to the top so I can drill down by catagory" "No. I'm willing to pay for help, please refer me to a qualified consultant"

.