Autor Tema: Como mostrar un valor binario en decimal?  (Leído 17230 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Como mostrar un valor binario en decimal?
« Respuesta #15 en: 10 de Junio de 2008, 11:39:18 »
Saludos!
Excelentes aportes migsantiago, eres todo un maestro!  :P
Pibuleta una observación: no tienes que citar todo lo que ha dicho la otra persona para responder... a menos que quieras hacer un comentario sobre una parte de la frase en particular y veas necesario citarlo... de lo contrario no te preocupes, la conversación se va siguiendo... por eso un tema es bien llamado "hilo".
Solo es un detalle pero es para que no se haga tan larga la página. Por comodidad y para que se vean mejor tus mensajes  :lol:
Ok que tengas éxito, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Como mostrar un valor binario en decimal?
« Respuesta #16 en: 11 de Junio de 2008, 02:56:34 »
Amigo firepic... tienes razón... que te parece ahora?  :mrgreen:

Por cierto, voy a probar ahora vuestras ideas y os comento.

Hasta ahora

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Como mostrar un valor binario en decimal?
« Respuesta #17 en: 11 de Junio de 2008, 04:24:30 »

failure
C:\Archivos de programa\SourceBoost\include\stdlib.h(64): error:  failure
Exit code was 1.
Removing target: Prueba_2.obj
Failed to locate output file 'Prueba_2.obj'
Done

Failed

Es en esta expresión de la libreria stdlib.h donde me salta el error...

La libreria la he descargado de internet.
 
extern double strtod ();

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Como mostrar un valor binario en decimal?
« Respuesta #18 en: 11 de Junio de 2008, 08:14:56 »
migsantiago, no sé que pasa que no me deja compilar...

me marca error en la siguiente expresión:

uitoa_dec(buf,timer0,3);

Estoy programando en SourceBoost no sé si tiene algo que ver...

Saludos

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Como mostrar un valor binario en decimal?
« Respuesta #19 en: 11 de Junio de 2008, 11:37:12 »
Hola

¿Qué error te da con uitoa_dec?

La librería stdlib.h debe ser la que se diseñó en específico para el compilador sourceboost, no la que sea.

¿Incluiste la librería boostc.h del mismo sourceboost?

Todo el código que te estoy dando es en base al sourceboost, el cual no tengo, pero en internet encuentro las pistas. Ahora mismo lo voy a bajar porque acabo de ver que es gratuito y voy a probar el código.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Como mostrar un valor binario en decimal?
« Respuesta #20 en: 11 de Junio de 2008, 11:56:36 »
Ya instalé sourceboost ide 6.87 y compilé el código, aquí el archivo...

http://www.4shared.com/file/50935967/89845e91/prueba.html

El código que compilé es el siguiente...

Código: [Seleccionar]
#include <system.h>
#include <boostc.h>
#include <stdlib.h>

//Target PIC16F877 configuration word
#pragma DATA _CONFIG, _PWRTE_OFF & _BODEN_OFF & _WDT_OFF & _LVP_OFF & _CPD_OFF & _DEBUG_OFF & _XT_OSC & _CP_OFF

//Set clock frequency
#pragma CLOCK_FREQ 4000000

void main( void )
{
char buf[4]; //3 caracteres + null
unsigned int tmr0;

tmr0=50;

uitoa_dec(  buf, tmr0,  3 );

//Endless loop
while( 1 );
}

No hubo errores.

Pibuleta, te toca probarlo y modificarlo para que tu lcd funcione.

Por cierto, sourceboost ide se ve muy bien, tiene un ambiente gráfico muy amigable, más amigable que las versiones 3 del compilador CCS.

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Como mostrar un valor binario en decimal?
« Respuesta #21 en: 11 de Junio de 2008, 16:38:45 »
Hola

¿Qué error te da con uitoa_dec?

La librería stdlib.h debe ser la que se diseñó en específico para el compilador sourceboost, no la que sea.

¿Incluiste la librería boostc.h del mismo sourceboost?

Todo el código que te estoy dando es en base al sourceboost, el cual no tengo, pero en internet encuentro las pistas. Ahora mismo lo voy a bajar porque acabo de ver que es gratuito y voy a probar el código.

Amigo, te invito a lo que quieras  :-/


Esta mañana he estado dale que te pego y nada, me salian varios errores.

Pudiera ser que las librerias que he descargado de internet no fuera específicas para SourceBoost.

Si te funciona el código, lo que haré será hacer solo es aparte y ver si funciona y me muestra el valor por el LCD y luego aplicarlo al programa en general que estoy haciendo.


Espero noticias con ansia  :g)

Saludos y miles de gracias

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Como mostrar un valor binario en decimal?
« Respuesta #22 en: 11 de Junio de 2008, 17:11:17 »
Todo lo que compilé fue sin descargar librerías, solo escribí el código que ahí ves.

Espero que hayas leído este mensaje:

http://www.todopic.com.ar/foros/index.php?topic=22105.msg174353#msg174353

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Como mostrar un valor binario en decimal?
« Respuesta #23 en: 12 de Junio de 2008, 06:28:53 »
Todo lo que compilé fue sin descargar librerías, solo escribí el código que ahí ves.

Espero que hayas leído este mensaje:

http://www.todopic.com.ar/foros/index.php?topic=22105.msg174353#msg174353

Socio, estoy probando y me dá error en la expresión
uitoa_dec(  buf, tmr0,  3 );


Voy a probar de instalar la versión que dices (6.87) porque yo tengo la 6.25...

Ahora te cuento.

Por cierto una vez se utiliza la expresión  uitoa_dec(  buf, tmr0,  3 ); realmente lo que hace que es?

Y una vez procesada la orden donde debo de ir a buscar los 3 dígitos?

Gracias por la ayuda

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Como mostrar un valor binario en decimal?
« Respuesta #24 en: 12 de Junio de 2008, 09:55:19 »
migsantiago eres la máquina!!!

OEEEEE OEEEEEE OEEEEE OEEEEE! Funciona! Gracias a todos!

El problema era la versión de SourceBoost que utilizaba, que no admitia la expresión uitoa_dec(buf,a,3 ), he instalado la 6.87 y ya no me daba error.

Luego simplemente tocando un poco mi programa he conseguido que me muestre 000 el display, y luego envio buf[0], buf[1], buf[3] al LCD y si cuenta por ejemplo 12 pulsos, me muestra 012 en el LCD.


Increible, que buenos sóis...

PEro me gustaría saber que es lo que hace exáctamente la expresión uitoa_dec(buf,a,3 ); para pasar un numero binario por ejemplo (00001100) 12 en decimal, es decir, que hace la funcion para yo tener un 0 en buf[1] 1 en buf[2] y un 2 en buf[3].

Gracias, que felicidad

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Como mostrar un valor binario en decimal?
« Respuesta #25 en: 12 de Junio de 2008, 11:43:29 »
 :D :D :D

Qué bien que ya funciona, tardé en ayudar pero es que nunca había usado sourceboost  :P

Lo que hace uitoa_dec es que convierte datos en binario entero a datos en tipo char código ascii, llenando un string con los números convertidos.

Ya te lo había explicado unos posts arriba.

Si tmr0 tiene (00110010) ahora en buf tendrás lo siguiente:

buf[0]=0x30; //caracter 0 en ascii
buf[1]=0x35; //caracter 5 en ascii
buf[2]=0x30; //caracter 0 en ascii
buf[3]=0x00; //caracter NULL en ascii, útil para trabajar con cadenas

Viendo la cadena completa sería "050" y el null char del final se usa con printf o cualquier función de cadenas para indicar que ahí terminan.

Una solución alternativa a tu problema es la siguiente, sustituye uitoa_dec por:

buf=sprintf("%03u",tmr0);

Obtienes el mismo resultado que con uitoa_dec, pero según la ayuda de sourceboost, las funciones uito son más eficientes en código que las printf.

« Última modificación: 12 de Junio de 2008, 11:47:01 por migsantiago »

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Como mostrar un valor binario en decimal?
« Respuesta #26 en: 12 de Junio de 2008, 11:49:02 »
Por algo le dicen el Ser Supremo MigSantiago  :D
Migsantiago, eres un genio!
Por cierto, he estado siguiendo el hilo y me ha entrado cierta curiosidad por el compilador Source Boost... es gratuito?
Porque si es así creo que vale la pena probarlo!  :P
Ok te deseo éxito pibuleta!
Saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Como mostrar un valor binario en decimal?
« Respuesta #27 en: 12 de Junio de 2008, 12:20:36 »
:D :D :D

Qué bien que ya funciona, tardé en ayudar pero es que nunca había usado sourceboost  :P

Lo que hace uitoa_dec es que convierte datos en binario entero a datos en tipo char código ascii, llenando un string con los números convertidos.

Ya te lo había explicado unos posts arriba.

Si tmr0 tiene (00110010) ahora en buf tendrás lo siguiente:

buf[0]=0x30; //caracter 0 en ascii
buf[1]=0x35; //caracter 5 en ascii
buf[2]=0x30; //caracter 0 en ascii
buf[3]=0x00; //caracter NULL en ascii, útil para trabajar con cadenas

Viendo la cadena completa sería "050" y el null char del final se usa con printf o cualquier función de cadenas para indicar que ahí terminan.

Una solución alternativa a tu problema es la siguiente, sustituye uitoa_dec por:

buf=sprintf("%03u",tmr0);

Obtienes el mismo resultado que con uitoa_dec, pero según la ayuda de sourceboost, las funciones uito son más eficientes en código que las printf.



Amigo! He cantado victoria antes de tiempo... ahora mismo estoy peleandome con el circuito, y sí parece que cuenta, pero me ha mostrado un par de veces números raros (no coinciden con los pulsos).

Ahora estoy retocando y poniendo a 0 las variables.

Ahora os digo, pero menos mal estaba atascado si no es por vosotros...

P.D: uitoa_dec(  buf, tmr0,  3 ); EL 3 que funcion tiene? Es decir, que pasa si pongo 4? Y buf tiene que llamarse buf? O puedo llamarle como quierA?

Saludos
« Última modificación: 12 de Junio de 2008, 12:23:10 por Pibuleta »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Como mostrar un valor binario en decimal?
« Respuesta #28 en: 12 de Junio de 2008, 12:23:30 »

Por cierto, he estado siguiendo el hilo y me ha entrado cierta curiosidad por el compilador Source Boost... es gratuito?
Porque si es así creo que vale la pena probarlo!  :P

Tan gratis como el aire que ahora respiras.

SourceBoost Package V6.87
http://www.sourceboost.com/CommonDownload.html

Y la lista de pics programables es grraaaaaande XD, la pude obtener abriendo la carpeta include pero no encontré en la página web ni en la ayuda una lista...

Código: [Seleccionar]
PIC12C671.h      PIC12C672.h      PIC12CE673.h     PIC12CE674.h
PIC12F609.h      PIC12F615.h      PIC12F629.h      PIC12F635.h
PIC12F675.h      PIC12F683.h      PIC12HV609.h     PIC12HV615.h
PIC16C432.h      PIC16C433.h      PIC16C554.h      PIC16C557.h
PIC16C558.h      PIC16C61.h       PIC16C62.h       PIC16C620.h
PIC16C620A.h     PIC16C621.h      PIC16C621A.h     PIC16C622.h
PIC16C622A.h     PIC16C62A.h      PIC16C62B.h      PIC16C63.h
PIC16C63A.h      PIC16C64.h       PIC16C642.h      PIC16C64A.h
PIC16C65.h       PIC16C65A.h      PIC16C65B.h      PIC16C66.h
PIC16C662.h      PIC16C67.h       PIC16C71.h       PIC16C710.h
PIC16C711.h      PIC16C712.h      PIC16C715.h      PIC16C716.h
PIC16C717.h      PIC16C72.h       PIC16C72A.h      PIC16C73.h
PIC16C73A.h      PIC16C73B.h      PIC16C74.h       PIC16C745.h
PIC16C74A.h      PIC16C74B.h      PIC16C76.h       PIC16C765.h
PIC16C77.h       PIC16C770.h      PIC16C771.h      PIC16C773.h
PIC16C774.h      PIC16C781.h      PIC16C782.h      PIC16C84.h
PIC16C923.h      PIC16C924.h      PIC16C925.h      PIC16C926.h
PIC16CE623.h     PIC16CE624.h     PIC16CE625.h     PIC16CR62.h
PIC16CR620A.h    PIC16CR63.h      PIC16CR64.h      PIC16CR65.h
PIC16CR72.h      PIC16CR83.h      PIC16CR84.h      PIC16F610.h
PIC16F616.h      PIC16F627.h      PIC16F627A.h     PIC16F628.h
PIC16F628A.h     PIC16F630.h      PIC16F631.h      PIC16F636.h
PIC16F639.h      PIC16F648A.h     PIC16F676.h      PIC16F677.h
PIC16F684.h      PIC16F685.h      PIC16F687.h      PIC16F688.h
PIC16F689.h      PIC16F690.h      PIC16F716.h      PIC16F72.h
PIC16F722.h      PIC16F723.h      PIC16F724.h      PIC16F726.h
PIC16F727.h      PIC16F73.h       PIC16F737.h      PIC16F74.h
PIC16F747.h      PIC16F76.h       PIC16F767.h      PIC16F77.h
PIC16F777.h      PIC16F785.h      PIC16F818.h      PIC16F819.h
PIC16F83.h       PIC16F84.h       PIC16F84A.h      PIC16F87.h
PIC16F870.h      PIC16F871.h      PIC16F872.h      PIC16F873.h
PIC16F873A.h     PIC16F874.h      PIC16F874A.h     PIC16F876.h
PIC16F876A.h     PIC16F877.h      PIC16F877A.h     PIC16F88.h
PIC16F882.h      PIC16F883.h      PIC16F884.h      PIC16F886.h
PIC16F887.h      PIC16F913.h      PIC16F914.h      PIC16F916.h
PIC16F917.h      PIC16F946.h      PIC16HV610.h     PIC16HV616.h
PIC16HV785.h     PIC18C242.h      PIC18C252.h      PIC18C442.h
PIC18C452.h      PIC18C601.h      PIC18C658.h      PIC18C801.h
PIC18C858.h      PIC18F1220.h     PIC18F1230.h     PIC18F1320.h
PIC18F1330.h     PIC18F2220.h     PIC18F2221.h     PIC18F2320.h
PIC18F2321.h     PIC18F2331.h     PIC18F2410.h     PIC18F242.h
PIC18F2420.h     PIC18F2423.h     PIC18F2431.h     PIC18F2439.h
PIC18F2450.h     PIC18F2455.h     PIC18F2458.h     PIC18F248.h
PIC18F2480.h     PIC18F24J10.h    PIC18F24K20.h    PIC18F2510.h
PIC18F2515.h     PIC18F252.h      PIC18F2520.h     PIC18F2523.h
PIC18F2525.h     PIC18F2539.h     PIC18F2550.h     PIC18F2553.h
PIC18F258.h      PIC18F2580.h     PIC18F2585.h     PIC18F25J10.h
PIC18F25K20.h    PIC18F2610.h     PIC18F2620.h     PIC18F2680.h
PIC18F2682.h     PIC18F2685.h     PIC18F26K20.h    PIC18F4220.h
PIC18F4221.h     PIC18F4320.h     PIC18F4321.h     PIC18F4331.h
PIC18F4410.h     PIC18F442.h      PIC18F4420.h     PIC18F4423.h
PIC18F4431.h     PIC18F4439.h     PIC18F4450.h     PIC18F4455.h
PIC18F4458.h     PIC18F448.h      PIC18F4480.h     PIC18F44J10.h
PIC18F44K20.h    PIC18F4510.h     PIC18F4515.h     PIC18F452.h
PIC18F4520.h     PIC18F4523.h     PIC18F4525.h     PIC18F4539.h
PIC18F4550.h     PIC18F4553.h     PIC18F458.h      PIC18F4580.h
PIC18F4585.h     PIC18F45J10.h    PIC18F45K20.h    PIC18F4610.h
PIC18F4620.h     PIC18F4680.h     PIC18F4682.h     PIC18F4685.h
PIC18F46K20.h    PIC18F6310.h     PIC18F6390.h     PIC18F6393.h
PIC18F63J11.h    PIC18F63J90.h    PIC18F6410.h     PIC18F6490.h
PIC18F6493.h     PIC18F64J11.h    PIC18F64J90.h    PIC18F6520.h
PIC18F6525.h     PIC18F6527.h     PIC18F6585.h     PIC18F65J10.h
PIC18F65J11.h    PIC18F65J15.h    PIC18F65J50.h    PIC18F65J90.h
PIC18F6620.h     PIC18F6621.h     PIC18F6622.h     PIC18F6627.h
PIC18F6628.h     PIC18F6680.h     PIC18F66J10.h    PIC18F66J11.h
PIC18F66J15.h    PIC18F66J16.h    PIC18F66J50.h    PIC18F66J55.h
PIC18F66J60.h    PIC18F66J65.h    PIC18F6720.h     PIC18F6722.h
PIC18F6723.h     PIC18F67J10.h    PIC18F67J11.h    PIC18F67J50.h
PIC18F67J60.h    PIC18F8310.h     PIC18F8390.h     PIC18F8393.h
PIC18F83J11.h    PIC18F83J90.h    PIC18F8410.h     PIC18F8490.h
PIC18F8493.h     PIC18F84J11.h    PIC18F84J15.h    PIC18F84J90.h
PIC18F8520.h     PIC18F8525.h     PIC18F8527.h     PIC18F8585.h
PIC18F85J10.h    PIC18F85J11.h    PIC18F85J15.h    PIC18F85J50.h
PIC18F85J90.h    PIC18F8620.h     PIC18F8621.h     PIC18F8622.h
PIC18F8627.h     PIC18F8628.h     PIC18F8680.h     PIC18F86J10.h
PIC18F86J11 .h   PIC18F86J11.h    PIC18F86J15.h    PIC18F86J16.h
PIC18F86J50.h    PIC18F86J55.h    PIC18F86J60.h    PIC18F86J65.h
PIC18F8720.h     PIC18F8722.h     PIC18F8723.h     PIC18F87J10.h
PIC18F87J11.h    PIC18F87J50.h    PIC18F87J60.h    PIC18F96J60.h
PIC18F96J65.h    PIC18F97J60.h    PIC18LF2423.h    PIC18LF2523.h
PIC18LF4423.h    PIC18LF4523.h    

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Como mostrar un valor binario en decimal?
« Respuesta #29 en: 12 de Junio de 2008, 12:26:04 »
Amigo! He cantado victoria antes de tiempo... ahora mismo estoy peleandome con el circuito, y sí parece que cuenta, pero me ha mostrado un par de veces números raros (no coinciden con los pulsos).

Ahora estoy retocando y poniendo a 0 las variables.

Ahora os digo, pero menos mal estaba atascado si no es por vosotros...

P.D: uitoa_dec(  buf, tmr0,  3 ); EL 3 que funcion tiene? Es decir, que pasa si pongo 4? Y buf tiene que llamarse buf? O puedo llamarle como quierA?

Saludos

La ayuda de sourceboost no es clara al respecto, tengo entendido que el 3 es para pasar los 3 digitos máximos posibles de una variable de 8 bits (2^8 = 256).

Pero intenta poner 4 en vez de 3 porque no consideré el null char, a ver qué hace el compilador.

buf puede llamarse como quieras pero debe ser un arreglo de 4bytes para almacenar los 3 máximos dígitos  más el null char que uitoa entrega.

EDITO: Y asegúrate de que utilices buf[0], buf[1] y buf[2].

buf[3] contiene el null char y no sirve para la lcd por ahora.
« Última modificación: 12 de Junio de 2008, 12:30:14 por migsantiago »