; 8位BIN数转化为2位BCD数 ;******************************************************************** ; Binary To BCD Conversion Routine ; ; This routine converts the 8 bit binary number in the W Register ; to a 2 digit BCD number. ; The least significant digit is returned in location LSD and ; the most significant digit is returned in location MSD. ; ; Performance : ; Program Memory : 10 ; Clock Cycles : 81 (worst case when W = 63 Hex ) ; ( i.e max Decimal number 99 ) ;******************************************************************* ; LSD equ 10 MSD equ 11 ; ;其它的寄存器自己定义 ; BinBCD clrf MSD movwf LSD gtenth movlw D'10' subwf LSD,W BTFSS STATUS,C goto over movwf LSD incf MSD goto gtenth over retlw 0 ;********************************** ;测试程序(注意用法,BIN数放在W里,结果放在MSD,LSD里) ;---------------------------------- main movlw 63 ; W reg = 63 Hex call BinBCD ; after conversion, MSD = 9 & LSD = 9 ; ( 63 Hex = 99 Decimal ) self goto self ; 如不是测试程序,本句无用 ; org 1FF goto main ; END