SoloCodigo
		Programación Específica => Microcontroladores => Microcontroladores MOTOROLA => Mensaje iniciado por: GPANGEL en Miércoles 11 de Julio de 2007, 22:08
		
			
			- 
				un saludo cordial
 
 de casualidad alguien podria decirme como puedo pasar un binario de 8 bits a bcd para luego visualizarlo
- 
				Creo que tienes una pequena confucion, segun lo que tengo entendido es que un dato binadio  es igal a lo que se conose como BCD   dato en codigo binario.
			
- 
				Acabo de adjuntarte una rutina de conversion de 16 bits a codigo BCD en el otro mensaje sobre conversion. Saludos :)
			
- 
				DOS RUTINAS BIN_8_BCD
 ;******************************************************
 ;Libreria encargada de convertir un numero binario
 ;de 8 bits (1 byte) a su equivalente en BCD. El resul-
 ;tado de la conversion del numero binario a BCD ocupa
 ;un byte y medio y se representa en las variables de
 ;memoria BCDH y BCDL. El numero binario a convertir
 ;debe estar almacenado en la variable BIN.
 ;
 ;ej. 0xFF = 255
 ; BIN -> BCDH:BCDL
 ; FF 02 55
 ;
 ;La conversion se hace realizando divisiones mediante
 ;restas sucesivas. Primero entre 100 para obtener
 ;el nibble bajo de BCDH y despues entre 10 para obte-
 ;ner el nibble alto de BCDL y el residuo pasa a formar
 ;el nibble bajo de BCDL.
 ;
 ;Para iniciar la conversion solamente se ocupa llamar
 ;a la rutina BIN8_BCD3.
 ;
 ;Fecha: 20.06.07 Autor: Jorge Arturo Bojorquez
 ;******************************************************
 BIN8_BCD3
 clrf BCDH
 clrf BCDL
 BCD_HIGH
 movlw .100
 subwf BIN,f
 btfss STATUS,C
 goto SUMA_100
 incf BCDH,f
 goto BCD_HIGH
 SUMA_100
 movlw .100
 addwf BIN,f
 movlw 0x0F
 movwf BCDL
 BCD_LOW movlw .10
 subwf BIN,f
 btfss STATUS,C
 goto SUMA_10
 incf BCDL,f
 movlw 0x0F
 iorwf BCDL,f
 goto BCD_LOW
 SUMA_10 movlw .10
 addwf BIN,f
 movlw 0xF0
 andwf BCDL,f
 movf BIN,w
 iorwf BCDL,f
 return
 end
 
 
 ;******************************************************
 ;Libreria encargada de convertir un numero binario
 ;de 8 bits (1 byte) a su equivalente en BCD. El resul-
 ;tado de la conversion del numero binario a BCD ocupa
 ;un byte y medio y se representa en las variables de
 ;memoria BCDH y BCDL. El numero binario a convertir
 ;debe estar almacenado en la variable BIN.
 ;
 ;ej. 0xFF = 255
 ; BIN -> BCDH:BCDL
 ; FF 02 55
 ;
 ;La conversion se hace empleando el algoritmo Recorre
 ;y Suma+3. El algoritmo funciona de la siguiente manera:
 ;
 ;1. Recorre 1 bit a la izquierda el numero binario
 ;2. Si se han hecho 8 corrimientos, el numero BCD se en
 ; cuentra en las columnas CENTENAS, DECENAS y UNIDADES
 ;3. Si el valor binario de cualquiera de las columnas
 ; es 5 o mayor, se suma 3 al valor en esta columna BCD
 ;4. Si se desea convertir un byte despues de haber efec-
 ; tuado 8 corrimientos la conversion ha finalizado
 ;
 ;Para iniciar la conversion solamente se ocupa llamar
 ;a la rutina BIN2BCD_RS3
 ;
 ;Fecha: 21.06.07 Autor: Jorge Arturo Bojorquez
 ;******************************************************
 BIN2BCD_RS3
 clrf BCDH
 clrf BCDL
 movlw 0x08
 movwf CUENTA
 CONVERSION1
 bcf STATUS,C
 rlf BIN,f
 rlf BCDL,f
 rlf BCDH,f
 decfsz CUENTA,f
 goto $+2
 goto TERMINA_CONVERSION
 movlw b'00001111'
 andwf BCDL,w
 movwf BCD_TEMP
 movlw 0x05
 subwf BCD_TEMP,w
 btfsc STATUS,C
 call SUMA0x03
 movlw b'11110000'
 andwf BCDL,w
 movwf BCD_TEMP
 movlw 0x50
 subwf BCD_TEMP,w
 btfsc STATUS,C
 call SUMA0x30
 goto CONVERSION1
 TERMINA_CONVERSION
 return
 ;*******************************
 ;Subrutina que se encarga de
 ;sumar 3 al nibble bajo de BCDL
 ;*******************************
 SUMA0x03
 movlw 0x03
 addwf BCDL,f
 
 btfss STATUS,C
 return
 rlf BCDH,f
 return
 ;*******************************
 ;Subrutina que se encarga de
 ;sumar 3 al nibble alto de BCDL
 ;*******************************
 SUMA0x30
 movlw 0x30
 addwf BCDL,f
 btfss STATUS,C
 return
 rlf BCDH,f
 return