;2011 04 26
;------------------------------------------------------------------- 
; 
; Libreria para convertir un numero binario de 16 bit a 5 BCD.  
; y salida ASCII
;
; El numero binario se guarda en NumH los 8 bits de mayor peso y 
;en  NumL los de menor peso
; La salida en BCD estan en :  
;TenK   = 10000    
;Thou   =   1000
;Hund   =     100
;Tens   =       10
;Ones    =         1
; 
;Rutina de conversion de 16 bits a bcd - Conv. p.ej.FFFF en 65535

;Las varaibles de entrada son:
;NumH para el byte alto 
;NumL para el byte bajo

;El resultado esta en cuatro digitos
;Las unidades en Ones
;Las decenas en Tens
;Las centenas en Hund
;Las unidades de mil en Thou
;

	CBLOCK
	Ones
	Tens
	Hund
	Thou
	Tenk
	NumH
	NumL
	ENDC


;Conv_BCD                        
LCD_Dec

    clrf   Ones
   clrf   Tens
   clrf   Hund
   clrf    Thou           
   clrf    Tenk



       swapf   NumH,w 
        andlw   h'0F'             ;
        addlw   h'F0'             ;
        movwf   Thou 
        addwf   Thou,f 
        addlw   h'E2' 
        movwf   Hund 
        addlw   h'32' 
        movwf   Ones 

        movf    NumH,w 
        andlw   h'0F' 
        addwf   Hund,f 
        addwf   Hund,f 
        addwf   Ones,f 
        addlw   h'E9' 
        movwf   Tens 
        addwf   Tens,f 
        addwf   Tens,f 

        swapf   NumL,w 
        andlw   h'0F' 
        addwf   Tens,f 
        addwf   Ones,f 

        rlf     Tens,f 
        rlf     Ones,f 
        comf    Ones,f 
        rlf     Ones,f 

        movf    NumL,w 
        andlw   h'0F' 
        addwf   Ones,f 
        rlf     Thou,f 

        movlw   h'07' 
        movwf   Tenk 
        movlw   h'0A'                             ; Ten 
Lb1: 
        addwf   Ones,f 
        decf    Tens,f 
        btfss   3,0 
         goto   Lb1 
Lb2: 
        addwf   Tens,f 
        decf    Hund,f 
        btfss   3,0 
         goto   Lb2 
Lb3: 
        addwf   Hund,f 
        decf    Thou,f 
        btfss   3,0 
         goto   Lb3 
Lb4: 
        addwf   Thou,f 
        decf    Tenk,f 
        btfss   3,0 
         goto   Lb4 


;Conversion bcd a ASCII
    
   movlw   0x30
   addwf   Tenk,1
    
   movlw   0x30
   addwf   Thou,1
   
   movlw   0x30
   addwf   Hund,1  

   movlw   0x30
   addwf   Tens,1
   
   movlw   0x30
   addwf   Ones,1

   RETURN
