;=================== RUTINA DE CONVERSION DE BINARIO A BCD y luego a ascii ==========================
; ****** Convertir un BYTE(registro cualquiera) en BCD(cen,dec,uni) ******
; se guarda en cen,dec,uni las cifras respectivas en BCD de BYTE 0..255




ACCaLO  	equ     0x49		;Variables de calculos
ACCaHI  	equ     0x50
ACCbLO  	equ     0x51
ACCbHI  	equ     0x52
ACCcLO  	equ     0x53
ACCcHI  	equ     0x54
ACCdLO  	equ     0x55
ACCdHI  	equ     0x56
temp    	equ     0x57	; EN ESTA CARGAS EL NUMERO EN BINARIO QUE QUIERAS PASAR A ASCII
Flags		equ	0x58

uni		EQU	0x59	;EN ESTAS DEVUELVE EL NUMERO EN ASCII Y DESPUES YA SOLO HAY QUE MANDARLO POR LA PANTALLA
dec  		EQU	0x60
cen		EQU	0x61


;========================= CALL	LCDCONVERSOR para convertir el numero============================================


LCDCONVERSOR	clrf 	uni
		clrf 	dec  
 		clrf 	cen
		movwf 	temp 		; muevo mi Dato a convertir a Temp
		goto 	Uni  

    BCD2 	decfsz 	temp,F 		; decremento Temp....
 		goto 	Uni
 		goto	ascii
 	
	Uni	incf  	uni,F 		; mientras "Temp" decrementa, "uni" crece uno a uno
		movf 	uni,W
 		sublw 	d'10'
 		btfss 	STATUS,Z 	; Pregunto si "uni" llego a 10
 		goto 	BCD2	 	; no sigo la misma secuencia
 		clrf 	uni   		; si entonces uni=0, luego debo i++ a dec
 
	Dec	incf  	dec,F
 		movf 	dec,W
 		sublw 	d'10'
 		btfss 	STATUS,Z 	; Pregunto si "dec" llego a 10
 		goto 	BCD2	 	; no sigo la misma secuencia
 		clrf 	dec  		; si entonces dec=0, luego debo i++ a dec

	Cen	incf  	cen,F 		; no hace falta verificar si desborda 10
 		goto 	BCD2	


;Conversion bcd a ASCII
    
	ascii   movlw   0x30
   		addwf   dec,f
    
   		movlw   0x30
   		addwf   uni,f
   
   		movlw   0x30
   		addwf   cen,f   

  		RETURN
