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/24 02:36,
216.73.216.53,10-2-207-162: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.massmind.org/techref/microchip/math/radix/index.htm"> PIC Microcontoller Radix Math Methods</A> |
| Did you find what you needed? |
Welcome to massmind.org! |
Welcome to www.massmind.org! |
.