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: 2024/8/6 03:46, |
©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://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! |
.