SoloCodigo
Programación Específica => Microcontroladores => Mensaje iniciado por: fitopablo en Jueves 30 de Marzo de 2006, 03:23
-
Hola, necesito un código que me permita convertir un dato binario a BCD y poderlo sacar por un puerto del PIC para meterlo a un decodificador BCD-7 segmentos y mostralo por displays, gracias!!!!!!!!!
-
Para convertir el numero binario al BCD solo tienes q sumarle 6 :P
Salu2... :kicking:
-
Bueno este es mi primer post en el foro , y no entiendo lo de sumar 6
Si un decimal se convierte a BCD digito por digito , el binario puro
habra que convertirlo a decimal y luego a BCD.
BINBCD CLRF DECENAS
CLRF UNIDADES
MOVLW .10
REPITE SUBWF DATO,1
BTFSS STATUS,0
GOTO SUM
INCF DECENAS
GOTO REPITE
SUM ADDWF DATO,0
MOVWF UNIDAD
RETURN
Tengo la dificultad de entrar por teclado un numero de varias cifras
y grabarlo en la EEPROM , buscando encontre este codigo que convierte
DATO(Binario) a BCD , creo que esto es lo que nesecitas .
Saludos!
-
ese codigo no convierte nada de binario a bcd, ES MUCHO MAS COMPLEJO Y LARGO
-
Bueno , primero que todo quiero decir que soy principiante
en esto de los PIC , apenas estoy empezando a hacer programitas
que como decia un amigo "prendan o muevan cositas".
Y estoy abierto a criticas de cualquier indole , claro prefiero
las construtivas y sobre todo de personas que quieren y les gusta
que otros se beneficien de lo que puedan aportar.
En ese orden de ideas , el codigo que presente lo puse en el
MPLAB y , lo simule y me funciono . Toma el numero binario
y queda en dos , el binario UNIDADES (Es unidades , no unidad)
que guarda la cifra de las unidades de DATO , y el binario DECENAS
que guarda la cifra de las decenas de DATO , es obvio que DATO
no podra ser mayor a 99 .
Asi fitopablo que este codigo solo es parte de lo que nesecitas , solo
te convierte binario a BCD , si utilizas DECO solo tienes que mandar
los binarios UNIDADES y DECENAS y te los mostrara en display
o los tomas y llamas una tabla que te retorne el codigo de siete segmentos
Saludos.
-
Sigo manteniendo mi postura eso, no combierte de BINARIO A DECIMAL, si es así, postea el ASM entero con las definiciones de los registros, definiendo el tipo de chip ... todo lo que haga falta para simularlo en el mplab
-
Esto es lo que busca fitopablo
En ASM:
http://foros.solocodigo.com/index.php?showtopic=16940 (http://foros.solocodigo.com/index.php?showtopic=16940)
EN C :
http://foros.solocodigo.com/index.php?showtopic=19300 (http://foros.solocodigo.com/index.php?showtopic=19300)
-
Sigo manteniendo mi postura eso, no combierte de BINARIO A DECIMAL, si es así, postea el ASM entero con las definiciones de los registros, definiendo el tipo de chip ... todo lo que haga falta para simularlo en el mplab
Bueno , volvi a ensayarlo y funciono . Por ejemplo con DATO=23
al RETURN ; DECENAS queda en 2 y UNIDADES en 3
-
Esto es lo que busca fitopablo
En ASM:
http://foros.solocodigo.com/index.php?showtopic=16940 (http://foros.solocodigo.com/index.php?showtopic=16940)
EN C :
http://foros.solocodigo.com/index.php?showtopic=19300 (http://foros.solocodigo.com/index.php?showtopic=19300)
Esto es a lo que me referia. Por cierto Nicolas1, gracias por contestar ;)
;HEX2BDC: Transforma el código en Hexadecimal que viene en el w,
;en dos bcd, el mas alto en los 4 MSBs y el mas bajo en los 4 LSBs del registro w
hex2bcd movwf contador1
clrf contador2
comf contador1,f
h2bcd1 movf contador1,w
addlw 0x0a
btfsc status,0
goto h2bcd2
movwf contador1
incf contador2,f
goto h2bcd1
h2bcd2 comf contador1,f
movf contador2,w;Si contador2 no es cero
btfsc status,2
goto h2bcd4
h2bcd3 movf contador1,w
addlw 0x10 ;Se le suma a contador1 tantos 0x10 como indique
movwf contador1
decfsz contador2,f
goto h2bcd3
h2bcd4 movf contador1,w
return