 
Also:
See also:
Archive:
Comments:
Questions:
Convert the Hex digits to binary (16bits) and then convert the binary to ASCII.
Apply one of the "2 digit Hex to Binary 8 bits" routines to the first two hex digits and then again to the second, thereby producing two 8 bit values that are then passed to any one of the "16bit to ASCII Decimal 5 digits" routines. +
Interested:
See:
+;some code snippets that someone might find useful... ;This routine will return the number of decimal ;hundreds from an 8-bit binary ;Input: w ;Output: w ;RAM:2 ;Cycles: 12-24 GETHNDS movwf t1 clrf w2 gethnds_loop movlw .100 incf w2,f subwf t1,f btfsc STATUS,C goto gethnds_loop decf w2,w return ;--- ;This routine will return the number of decimal ;tens from an 8-bit binary ;Loop based, so it might take some time... ;It needs getones too GETTENS movwf t1 clrf w2 gettens_loop movlw .10 incf w2,f subwf t1,f btfsc STATUS,C goto gettens_loop decf w2,w goto getones ;--- ;This routine will return the number of decimal ;ones from an 8-bit binary GETONES movwf w2 movlw .10 deltens_loop subwf w2,f btfsc STATUS,C goto deltens_loop addwf w2,w return
Code:
Compact and fast 10bit to BCD conversion for converting 
small / midrange PIC 10bit ADC ADRSH and ADRSL 	
 
;****************************************************
;*	10bit BINARY to BCD		*
;****************************************************
;
;An implimentation of the 'Shift and add-3' Algorithm
;		for small MicroChip 'PIC' microcomputers
;
;ALGORITHM
;
;1)Shift binary number one bit left (into a BCD 'result'
;  (initially empty)
;2)If any 4 bit BCD column is greater than 5[hex] add 3[hex]
;3)Goto 1) {until the LSB binary bit is shifted out}
;
;<------MSB				LSB----->
;------------- BCD ------------]  [------ binary -----
;					
;	   TENS		  UNITS
;	BCD column	BCD column	MSB	bit	bit	
;	0  0  0  0	0  0  0  0	 1	 0	 1	 
;
;				<------	/  <---/    <---/ 
;Inalisation
;**************
Processor 16F818
include <p16f818.inc>
cblock	0x020	;Define variable block starting at $020
binH		;bin is the 8bit binary value to be converted
bin		;The 2bit binary MSB's to be converted
bcdH		;Thousands (always blank)/ Hundreds nybbles
bcdL		;Tens / Units nybbles
counter
temp
	
endc
	
_bin2bcd	  movlw    	d'8'
	movwf   counter
        clrf    bcdL		
        clrf    bcdH
			
;Save time by not shifting in first 6 bits  (always '0's)
;--------------------------------------------------------
	swapf	binH,1	;Chop off first nybble (TEN THOUSANDS)
	rlf	binH,1	;Shift out first 2 MSB's(always '0's)
	rlf	binH,1
;Ssave more ime by no test and add +3' for first TWO shifts
;---------------------------------------------------------------------
			
	 rlf    binH,F	;Shifting 'binH' left through carry into BCD nybbles
         rlf    bcdL,F	
         rlf    binH,F
         rlf   	bcdL,F	;binH (pic ADC register ADRESH) done with!
           
;Iteration loop shifts the 4 'columns' (10TH, THO, HUN, TEN, UNT) 1 bit left
;Tests each coulmn (4bit nybble) if > 5, adds '3' 
;Shifts in the next MSB of the binary for conversion on the right. 
;(for remaining EIGHT shifts)
Next_bit movfw   bcdL
         addlw   0x33	 ;Add 3 to both nybbles (T/U) in 'temp'
         movwf   temp
         movfw   bcdL
         btfsc   temp,3  ;Test MSB of Units+3 nybble in 'temp 
         addlw   0x03	  ;Add 3 to U nybble if units+3 MSB = 1 
         btfsc   temp,7  ;Test MSB of Tens+3nybble in 'temp'
         addlw   0x30	 ;Add 3 to T nybbleiftens+3 MSB=1 (>5)	
         movwf   bcdL
		
	 movfw	 bcdH
	 addlw	 0x33	 ;Add 3 to both nybbles (T/H) in temp
	 mmovfw	 bcdH
	 btfsc   temp,3  ;Test MSB of Hundreds+3 nybble in temp 
         addlw   0x03	  ;Add 3 to H nybble if units+3 MSB=1
         btfsc   temp,7  ;Test MSB of Thousand+3 nybble in temp
         addlw   0x30	 ;Add 3 to TH nybble if tens+3 MSB=1
	 movwf	 bcdH
 	 rlf     bin,F	 ;Shift in next MSB from bin into T/UNITS
  	 rlf	 bcdL,F  ;Shift next MSB from TENS/UNITS to TH/H
         rlf     bcdH,F  ;Shift up 
         decfsz  counter,F
         goto    Next_bit
         return
end
+
   | file: /Techref/microchip/math/radix/index.htm, 17KB, , updated: 2019/8/26 09:43, local time: 2025/10/31 08:53, 
 
216.73.216.87,10-2-37-96: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://www.piclist.com/Techref/microchip/math/radix/index.htm"> PIC Microcontoller Radix Math Methods</A> | 
| Did you find what you needed? From: "/Techref/microchip/math/radix" | 
|  PICList 2025 contributors: o List host: MIT, Site host massmind.org, Top posters @none found - Page Editors: James Newton, David Cary, and YOU! * Roman Black of Black Robotics donates from sales of Linistep stepper controller kits. * Ashley Roll of Digital Nemesis donates from sales of RCL-1 RS232 to TTL converters. * Monthly Subscribers: Gregg Rew. on-going support is MOST appreciated! * Contributors: Richard Seriani, Sr. | 
| The Backwoods Guide to Computer Lingo | 
.