<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: 24.Bit Binary to BCD conversion in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134730#M3812</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello Truk,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;I did find the source of the previously noted error - the table values for bit-8 should be $00,$02,$56 rather than $00,$02,$54.&amp;nbsp; So any binary value for which this bit was set would have shown the error.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;I have now tested your routine when extended to 24 bits.&amp;nbsp; For the HC908, I get variation between 550 and 1654 cycles, depending on the number of 1's.&amp;nbsp; Comparing your method and my previous attempt, I think the main reason for the significantly lower number of cycles is the use of the DAA instruction.&amp;nbsp; With the shift (multiply by two) method that I used, I could not get this instruction to work properly - some results were OK, but many were incorrect.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 03 Nov 2006 09:22:35 GMT</pubDate>
    <dc:creator>bigmac</dc:creator>
    <dc:date>2006-11-03T09:22:35Z</dc:date>
    <item>
      <title>24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134721#M3803</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;does anyone know an application note where a fast conversion routine is descibed?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;regard,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Truk&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Oct 2006 22:53:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134721#M3803</guid>
      <dc:creator>Truk</dc:creator>
      <dc:date>2006-10-30T22:53:24Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134722#M3804</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hello,&lt;BR /&gt;&lt;BR /&gt;This is what you was looking for ?:&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN class="msg_source_code"&gt;&lt;SPAN class="text_smallest"&gt;Code:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;PRE&gt;/* binary to 6 digits BCD */unsigned long bin2Bcd(unsigned long dataBin){unsigned long dataBcd=0;  dataBcd =  (dataBin / 100000) * 1048576;  dataBin %= 100000;  dataBcd |= (dataBin / 10000) * 65536;  dataBin %= 10000;  dataBcd |= (dataBin / 1000) * 4096;  dataBin %= 1000;  dataBcd |= (dataBin / 100) * 256;  dataBin %= 100;  dataBcd |= (dataBin / 10) * 16;  dataBcd |= dataBin % 10;  return(dataBcd);}&lt;/PRE&gt;but maybe this isn't fast enough ?&lt;BR /&gt;&lt;BR /&gt;Emmanuel,&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Oct 2006 16:26:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134722#M3804</guid>
      <dc:creator>Nouchi</dc:creator>
      <dc:date>2006-10-31T16:26:39Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134723#M3805</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Thank you Emmanuel,&lt;BR /&gt;but all the math takes mseconds on my 9S08AW16 with 8MHz-Bus. My RTC-loop (with RTI) is only 1ms.&lt;/DIV&gt;&lt;DIV&gt;I am searching for an iteration which takes less than 500usec.&lt;/DIV&gt;&lt;DIV&gt;regards,&lt;/DIV&gt;&lt;DIV&gt;Truk&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Oct 2006 20:00:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134723#M3805</guid>
      <dc:creator>Truk</dc:creator>
      <dc:date>2006-10-31T20:00:03Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134724#M3806</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello Truk,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;With a maximum of 4000 bus cycles to play with for a 24-bit conversion, I think you will probably need to use a very tight assembly routine.&amp;nbsp; Have you tried a Google search for potential mathematical procedures?&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;I have previously done a&amp;nbsp;conversion for a 16-bit value by commencing with a decimal value of 10,000, and counting the number times this may be subtracted from the initial value until under-flow occurs, and then adding back once so&amp;nbsp;the remainder&amp;nbsp;is&amp;nbsp;positive.&amp;nbsp; This is then repeated for values of 1,000, 100 and 10.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;However, for a 24-bit conversion, you would firstly need to do a 24-bit compare to determine the MS digit (0 or 1), followed by 24-bit subtraction sequences for decimal values of 1,000,000 and 100,000.&amp;nbsp; I am not sure&amp;nbsp;whether the conversion could be completed within&amp;nbsp;your 4000 cycle limit using this method.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;Message Edited by bigmac on &lt;SPAN class="date_text"&gt;2006-11-01&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;12:54 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Oct 2006 22:46:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134724#M3806</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2006-10-31T22:46:22Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134725#M3807</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello again Truk,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;I did manage to find a reference to a serial conversion method, and was able to derive the following assembly code -&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;***************************************************************&lt;BR /&gt;* 24-BIT BINARY TO BCD CONVERSION&lt;BR /&gt;* On entry, 3-byte register VAL contains the value to be&lt;BR /&gt;* converted.&lt;BR /&gt;* On exit, 4-byte register RESULT contains the BCD value,&lt;BR /&gt;* packed 2-digits per byte.&lt;BR /&gt;***************************************************************&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;BCD_CONV:LDX&amp;nbsp;&amp;nbsp;&amp;nbsp; #24&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Bit count&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLR&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLR&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLR&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLR&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT&lt;BR /&gt;BC1:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDA&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSR&amp;nbsp;&amp;nbsp;&amp;nbsp; BCD_ADJ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Adjust for BCD conversion&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STA&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDA&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSR&amp;nbsp;&amp;nbsp;&amp;nbsp; BCD_ADJ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Adjust for BCD conversion&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STA&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDA&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSR&amp;nbsp;&amp;nbsp;&amp;nbsp; BCD_ADJ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Adjust for BCD conversion&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STA&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDA&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSR&amp;nbsp;&amp;nbsp;&amp;nbsp; BCD_ADJ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Adjust for BCD conversion&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STA&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LSL&amp;nbsp;&amp;nbsp;&amp;nbsp; VAL+2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROL&amp;nbsp;&amp;nbsp;&amp;nbsp; VAL+1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROL&amp;nbsp;&amp;nbsp;&amp;nbsp; VAL&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROL&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROL&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROL&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT+1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROL&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBNZX&amp;nbsp; BC1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Loop for next bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RTS&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;***************************************************************&lt;BR /&gt;* ADJUST FOR BCD CONVERSION&lt;BR /&gt;* On entry, ACC = byte value to be adjusted&lt;BR /&gt;* On exit, ACC = adjusted value (2 BCD digits)&lt;BR /&gt;***************************************************************&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;BCD_ADJ:&amp;nbsp;TSTA&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; BA1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Exit if zero&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSHA&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; Process lower nybble&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;&amp;nbsp;&amp;nbsp; #$0F&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CMP&amp;nbsp;&amp;nbsp;&amp;nbsp; #5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BLO&amp;nbsp;&amp;nbsp;&amp;nbsp; *+4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Skip next if &amp;lt;5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ADD&amp;nbsp;&amp;nbsp;&amp;nbsp; #3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSHA&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; Process upper nybble&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDA&amp;nbsp;&amp;nbsp;&amp;nbsp; 2,SP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Initial byte value&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NSA&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;&amp;nbsp;&amp;nbsp; #$0F&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CMP&amp;nbsp;&amp;nbsp;&amp;nbsp; #5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BLO&amp;nbsp;&amp;nbsp;&amp;nbsp; *+4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Skip next if &amp;lt;5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ADD&amp;nbsp;&amp;nbsp;&amp;nbsp; #3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NSA&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#6633CC" face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ORA&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,SP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Combine nybbles&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AIS&amp;nbsp;&amp;nbsp;&amp;nbsp; #2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Adjust stack pointer&lt;BR /&gt;BA1:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RTS&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;The number of bus cycles does depend, to some extent, on the value to be converted.&amp;nbsp; The maximum value seems to be approximately 4500 cycles (563 us) based on preliminary tests using full chip simulation, which is marginally greater than your maximum limit.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;Message Edited by bigmac on &lt;SPAN class="date_text"&gt;2006-11-01&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;07:12 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Nov 2006 05:09:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134725#M3807</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2006-11-01T05:09:06Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134726#M3808</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello Truk,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;I have now optimized the code of my previous posting to save some bus cycles.&amp;nbsp; The attached assembly code now seems to require slightly less than 4000 cycles maximum to execute, which would be closer to your target requirement.&amp;nbsp; Note that I have done all my tests using HC908 simulation, rather than HC9S08.&amp;nbsp; There will be some differences for the number of bus cycles.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Nov 2006 14:18:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134726#M3808</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2006-11-01T14:18:18Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134727#M3809</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Thank you Mac for all your help!!&lt;/DIV&gt;&lt;DIV&gt;I am testing today a method with lookup table also. It needs some flash memory, but should be very fast.&lt;/DIV&gt;&lt;DIV&gt;I have seen the idea in a teaching site on the net.&lt;/DIV&gt;&lt;DIV&gt;As soon as I have tested the routine I will put it on the tread.&lt;/DIV&gt;&lt;DIV&gt;so long!&lt;/DIV&gt;&lt;DIV&gt;Truk&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Nov 2006 15:18:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134727#M3809</guid>
      <dc:creator>Truk</dc:creator>
      <dc:date>2006-11-01T15:18:06Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134728#M3810</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi MAC,&lt;/DIV&gt;&lt;DIV&gt;re my last answer. In the meantime I have tested the routine. I test before enter the routine if the value ist greater than 999'999 in binary.&lt;/DIV&gt;&lt;DIV&gt;The&amp;nbsp;routine needs only 768 bus cycles for convert 7ffff to packed BCD (worst case).&lt;/DIV&gt;&lt;DIV&gt;The routine needs 134 Byte of code and can easy adapted to the needs of bit to convert.&lt;/DIV&gt;&lt;DIV&gt;With binay values until FFFFFF the table needs 4 columns of PBCD-values in the table, the shift is 4 times and ADD_BCD 1 adc longer.&lt;/DIV&gt;&lt;DIV&gt;regards&lt;/DIV&gt;&lt;DIV&gt;Truk&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="msg_source_code"&gt;&lt;SPAN class="text_smallest"&gt;Code:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;PRE&gt;; Condition: The table UW_TBL_BinBCD musst be placed in a; 256-Byte-Page (no Change of MSB); INPUT: (H:X) = Pntr. MSB binary valueBIN20_BCD: clr TMP6   ;BCD-Reg =0 clr TMP5   ; clr TMP4   ; ; BIN20 -&amp;gt; BCD6-Convert.BCD6: lda ,x   ; sta TMP1   ; lda 1,x   ; sta TMP2   ; lda 2,x   ; sta TMP3   ; ldx #4   ;BCD61: rol TMP3   ;4-times shift rol TMP2   ;(20 instead of 24-Bits) rol TMP1   ; dbnzx BCD61   ; ldhx #(BinBCD_TOP-1) ; bra BCDL3BCDL1: aix #-3   ;BCDL2: cpx #LOW (BinBCD_Bot) ; bpl BCDL3   ; clc    ; rtsBCDL3: rol TMP3   ; rol TMP2   ; rol TMP1   ; bcc BCDL1ADD_BCD: lda ,x   ; add TMP6   ; daa    ; sta TMP6   ; decx    ; lda ,x   ; adc TMP5   ; daa    ; sta TMP5   ; decx    ; lda ,x   ; adc TMP4   ; daa    ; sta TMP4   ; decx    ; bcs BCDovf  ; bra BCDL2   ; BCDovf: sec rtsUW_TBL_BinBCD:BinBCD_Bot: equ * DC.B $00,$00,$01   ;Bit0 DC.B $00,$00,$02   ; DC.B $00,$00,$04   ; DC.B $00,$00,$08   ;Bit3 DC.B $00,$00,$16   ; DC.B $00,$00,$32   ; DC.B $00,$00,$64   ; DC.B $00,$01,$28   ;Bit7 DC.B $00,$02,$54   ; DC.B $00,$05,$12   ; DC.B $00,$10,$24   ; DC.B $00,$20,$48   ;Bit11  DC.B $00,$40,$96   ; DC.B $00,$81,$92   ; DC.B $01,$63,$84   ; DC.B $03,$27,$68   ;Bit15 DC.B $06,$55,$36   ; DC.B $13,$10,$72   ; DC.B $26,$21,$44   ; DC.B $52,$42,$88   ;Bit19BinBCD_TOP: equ *   ;&lt;/PRE&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Nov 2006 02:11:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134728#M3810</guid>
      <dc:creator>Truk</dc:creator>
      <dc:date>2006-11-02T02:11:04Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134729#M3811</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello Truk,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;I have noticed that your routine seems to give a minor error of -2 for very many of the values that I tested, and the correct result for other values.&amp;nbsp; For example, $7FFFF gave me a result of 524285, rather than the expected 524287.&amp;nbsp; I do not know the cause.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;In two places I changed the ROL instruction to a LSL instruction,applicable to the LS byte position only, because the initial state of the carry flag appeared to be undefined, but this had no effect on the error.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;For the HC908, the maximum cycles needed was at least 1187 for many&amp;nbsp;of the values tested.&amp;nbsp; The value of $7FFF did not necessarily appear to be a worst case.&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Nov 2006 03:25:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134729#M3811</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2006-11-03T03:25:24Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134730#M3812</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello Truk,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;I did find the source of the previously noted error - the table values for bit-8 should be $00,$02,$56 rather than $00,$02,$54.&amp;nbsp; So any binary value for which this bit was set would have shown the error.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;I have now tested your routine when extended to 24 bits.&amp;nbsp; For the HC908, I get variation between 550 and 1654 cycles, depending on the number of 1's.&amp;nbsp; Comparing your method and my previous attempt, I think the main reason for the significantly lower number of cycles is the use of the DAA instruction.&amp;nbsp; With the shift (multiply by two) method that I used, I could not get this instruction to work properly - some results were OK, but many were incorrect.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Nov 2006 09:22:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134730#M3812</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2006-11-03T09:22:35Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134731#M3813</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi Mac,&lt;/DIV&gt;&lt;DIV&gt;thank you for all your help again and for finding my typing error. In the short testing for principal function I had only tested 3 numbers and I had overlook the mistake.&lt;/DIV&gt;&lt;DIV&gt;Regards from the cloudy Switzerland,&lt;/DIV&gt;&lt;DIV&gt;Truk&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Nov 2006 15:32:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134731#M3813</guid>
      <dc:creator>Truk</dc:creator>
      <dc:date>2006-11-03T15:32:56Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134732#M3814</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;That is a fascinating algorithm, though I cannot claim to understand how it works!&lt;BR /&gt;&lt;BR /&gt;I'm presently working on a conversion that uses DIV. The gist of it is to divide the 24 bit number by 100. This is quite fast, using DIV since the divisor is one byte, I reckon about 75 cycles. Then convert the remainder (which will be between 0 and 99) to BCD. Then store that BCD byte into the buffer. You need to address the output buffer in reverse, starting with the least significant byte.&lt;BR /&gt;&lt;BR /&gt;Going from 0-99 to BCD can be done with a lookup table (100 bytes of FLASH for the table, I reckon 6 cycles to do the lookup), or by dividing by 10, then packing the quotient and remainder.&lt;BR /&gt;&lt;BR /&gt;Here's a 0-99 binary-to-BCD conversion, which takes 21 cycles&lt;BR /&gt;&lt;BR /&gt;;*** on entry, A= binary $00 to $63&lt;BR /&gt;ldhx #10&lt;BR /&gt;div&lt;BR /&gt;nsa&lt;BR /&gt;pshh&lt;BR /&gt;ora 1,SP&lt;BR /&gt;pulh&lt;BR /&gt;;*** on exit, A= BCD $00 to $99&lt;BR /&gt;&lt;BR /&gt;It looks like this algorithm should do a binary-to-BCD conversion on a 24 bit number in between 500 and 600 cycles.&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 21 Apr 2007 00:56:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134732#M3814</guid>
      <dc:creator>DustyStew</dc:creator>
      <dc:date>2007-04-21T00:56:01Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134733#M3815</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello DS,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;I have adapted your concept in the attached code, resulting in a code size of 61 bytes (no lookup table required).&amp;nbsp; For the HC08, the execution cycles would actually be 276 cycles, with slightly greater for HCS08.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Inlining the division sub-routines would reduce to 235 cycles, with increased code size to 74 bytes.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Apr 2007 11:15:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134733#M3815</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2007-04-25T11:15:15Z</dc:date>
    </item>
    <item>
      <title>Re: 24.Bit Binary to BCD conversion</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134734#M3816</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hey Mac&lt;BR /&gt;&lt;BR /&gt;Nice work. I am still doing a double take...how did he do that?&lt;BR /&gt;&lt;BR /&gt;One place where I can see I erred is that the X register is not changed by DIV. I was reloading it before each DIV.&lt;BR /&gt;&lt;BR /&gt;From what I can see, you have nailed i. I can't see any way to optimize that, aside from inline code as you have mentioned.&lt;BR /&gt;&lt;BR /&gt;Cheers&lt;BR /&gt;Dust&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Apr 2007 14:11:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/24-Bit-Binary-to-BCD-conversion/m-p/134734#M3816</guid>
      <dc:creator>DustyStew</dc:creator>
      <dc:date>2007-04-25T14:11:30Z</dc:date>
    </item>
  </channel>
</rss>

