;******************************************************************************* ; Input: packed BCD in bcd2:bcd1:bcd0 (modified!) ; bcd0 = tens:ones ; bcd1 = thou:hund ; bcd2 = 0:tenk ; Output: 16 bit binary in hi:lo ;Temporary: counter ; Size: 23 instructions ; Timing: 3+2+16*(6+12+4)-2+3=358 instruction cycles ; ; Notes: The routine uses BCD division by 2. Each iteration ; the LSB of BCD value (which coincides with correspondent ; binary bit) is shifted to output and BCD value is ; divided by 2. To do the division, BCD is shifted right ; once and corrected. Correction: if MSB of a nibble is set, ; subtract 3 from it. ; ;January 22, 2001 by Nikolai Golovchenko ;******************************************************************************* bcd2bin16 mov W, #16 mov counter, W bcd2bin16loop clc rr bcd2 rr bcd1 rr bcd0 rr hi rr lo clr W snb bcd0.3 or W, #$03 snb bcd0.7 or W, #$30 sub bcd0, W clr W snb bcd1.3 or W, #$03 snb bcd1.7 or W, #$30 sub bcd1, W decsz counter jmp bcd2bin16loop ret ;*******************************************************************************
See also:
| file: /Techref/scenix/lib/math/radix/bcd2bin16.htm, 1KB, , updated: 2004/6/10 13:40, local time: 2012/2/10 15:01,
owner: NG--944,
38.107.179.233:LOG IN |
| ©2012 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/scenix/lib/math/radix/bcd2bin16.htm"> Packed BCD to 16 bit binary conversion</A> |
| Did you find what you needed? |
|
PIC 16 series Microcontroller Instruction Set Reference. And his Hobby Electronics web site at http://hobby_elec.piclist.com. |
SX MASTERS: Eric Smith and Richard Ottosen's SERVID is an intellegent RS232 video terminal (4x20 character display) in one chip. See the write up here.. |
.