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

0 Usuarios y 5 Visitantes están viendo este tema.

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Como mostrar un valor binario en decimal?
« en: 09 de Junio de 2008, 02:52:19 »
Hola amigos!

Tengo un "problemilla" os cuento...

Estoy usando el SourceBoost IDE para programar un PIC16F877 y he llegado a un punto que necesito leer el valor de tmr0= 8 bits en binario y mostrarlo en el LCD.


Por ejemplo si tengo el valor en binario (00110010) que en decimalñ es  50, quiero mostrarlo en el LCD.

Sé escribir y manejar el LCD, pero no tengo muy claro como pasar del valor en binario que leo del tmr0 a decimal? O no sé de que forma pode rmostrarlo en el LCD.


Gracias
« Última modificación: 10 de Junio de 2008, 04:08:47 por Pibuleta »

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Com omostrar un valor binario en LCD decimal?
« Respuesta #1 en: 09 de Junio de 2008, 06:58:19 »
Hola...

Alguien sabría decirme si es muy complejo?
O por donde tirar?
Gracias

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: Com omostrar un valor binario en LCD decimal?
« Respuesta #2 en: 09 de Junio de 2008, 07:03:21 »
usa el buscador y encontrarás resuelto lo que necesitas

conversion binario a bcd

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Com omostrar un valor binario en LCD decimal?
« Respuesta #3 en: 09 de Junio de 2008, 07:55:17 »
usa el buscador y encontrarás resuelto lo que necesitas

conversion binario a bcd

He buscado, pero por lo que veo igual no he puesto las palabras acertadas.

Gracias, voy a ver si veo algo.

Saludos

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Com omostrar un valor binario en LCD decimal?
« Respuesta #4 en: 09 de Junio de 2008, 09:16:14 »
Si mal no recuerdo lo único que tienes que hacer, es en el print(lcd_putc, ...) usar el formato decimal.

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Com omostrar un valor binario en LCD decimal?
« Respuesta #5 en: 09 de Junio de 2008, 10:16:52 »
Si mal no recuerdo lo único que tienes que hacer, es en el print(lcd_putc, ...) usar el formato decimal.

Hola pocher!

Pero con el sourceboost existe el print(lcd_putc,)?

Saludos

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Com omostrar un valor binario en LCD decimal?
« Respuesta #6 en: 09 de Junio de 2008, 11:48:33 »
Si mal no recuerdo lo único que tienes que hacer, es en el print(lcd_putc, ...) usar el formato decimal.
Pero con el sourceboost existe el print(lcd_putc,)?
No, no existe. Creo que ya te había mencionado antes que ese compilador que tú usas lo usa muy poca gente aquí en el foro. Cuando entras al subforo de C casi se da por entendido que es CCS, es el que la mayoría usamos; algunos C30 y Hi-Tech. Pero no creo que consigas códigos para el source boost aquí en el foro. No obstante, todo está en que veas los ejemplos que hay en la página oficial, y que puedes descargar.

Por ejemplo, ellos proporcionan este archivo, lcd.c, que contiene este código para el manejo de un lcd:

Código: C
  1. /*************************************************************
  2.  
  3. * 7-pins LCD interface code
  4.  
  5. *
  6.  
  7. * Drives an LCD in 4-bit mode, using the three control
  8.  
  9. * signals. This has the advantage that the code is
  10.  
  11. * independent of the LCD, since there are no
  12.  
  13. * timing loops in the code. The code is blocking
  14.  
  15. * and used the LCD busy signal to determine if the
  16.  
  17. * display is ready to accept new data.
  18.  
  19. *
  20.  
  21. * (c) Lieven Hollevoet
  22.  
  23. * most recent version on http://boostc.lika.be
  24.  
  25. *************************************************************/
  26.  
  27.  
  28.  
  29. #include "lcd.h"
  30.  
  31.  
  32.  
  33. // Local variable
  34.  
  35. bit lcd_found = 0;
  36.  
  37.  
  38.  
  39. ////////////////////////////////////////////////////////////
  40.  
  41. // Drive a certain nibble on the LCD data pins, the nibble
  42.  
  43. // is taken from the lsb's of the input char
  44.  
  45. ////////////////////////////////////////////////////////////
  46.  
  47. void lcd_clock_nibble(char nibble){
  48.  
  49.        
  50.  
  51.         // Since there seems to be no way to extract a bit from a byte in BoostC -> do it in asm.
  52.  
  53.         // It is replicated 4 times here, since a function cannot return a bit eiter.
  54.  
  55.        
  56.  
  57.         // Set the d4 depending on the state of nibble bit 0
  58.  
  59.         asm {
  60.  
  61.         btfss _nibble, 0
  62.  
  63.         goto  clear_lcd4
  64.  
  65.         bsf       _lcd_d4, F
  66.  
  67.         goto  done_lcd4
  68.  
  69.         clear_lcd4:
  70.  
  71.         bcf       _lcd_d4, F
  72.  
  73.         done_lcd4:
  74.  
  75.         }
  76.  
  77.        
  78.  
  79.         // Set the d5 depending on the state of nibble bit 1
  80.  
  81.         asm {
  82.  
  83.         btfss _nibble, 1
  84.  
  85.         goto  clear_lcd5
  86.  
  87.         bsf       _lcd_d5, F
  88.  
  89.         goto  done_lcd5
  90.  
  91.         clear_lcd5:
  92.  
  93.         bcf       _lcd_d5, F
  94.  
  95.         done_lcd5:
  96.  
  97.         }      
  98.  
  99.  
  100.  
  101.         // Set the d6 depending on the state of nibble bit 2
  102.  
  103.         asm {
  104.  
  105.         btfss _nibble, 2
  106.  
  107.         goto  clear_lcd6
  108.  
  109.         bsf       _lcd_d6, F
  110.  
  111.         goto  done_lcd6
  112.  
  113.         clear_lcd6:
  114.  
  115.         bcf       _lcd_d6, F
  116.  
  117.         done_lcd6:
  118.  
  119.         }      
  120.  
  121.  
  122.  
  123.         // Set the d7 depending on the state of nibble bit 3
  124.  
  125.         asm {
  126.  
  127.         btfss _nibble, 3
  128.  
  129.         goto  clear_lcd7
  130.  
  131.         bsf       _lcd_d7, F
  132.  
  133.         goto  done_lcd7
  134.  
  135.         clear_lcd7:
  136.  
  137.         bcf       _lcd_d7, F
  138.  
  139.         done_lcd7:
  140.  
  141.         }      
  142.  
  143.  
  144.  
  145.         lcd_toggle_e;
  146.  
  147.        
  148.  
  149.         return;
  150.  
  151. }
  152.  
  153.  
  154.  
  155. ////////////////////////////////////////////////////////////
  156.  
  157. // Read the busy flag of the LCD and wait to return until
  158.  
  159. // the LCD is ready.
  160.  
  161. // Skipped when running in debug mode.
  162.  
  163. ////////////////////////////////////////////////////////////
  164.  
  165. void lcd_wait_busy(){
  166.  
  167.  
  168.  
  169.         // Skip this function if we are running in debug mode.
  170.  
  171. #ifdef DEBUG
  172.  
  173.         return;
  174.  
  175. #endif
  176.  
  177.  
  178.  
  179.         // If we have not detected an LCD in a previous call to this function,
  180.  
  181.         // then we just skip it this time, since else the program will hang later
  182.  
  183.         // on in this function.
  184.  
  185.         if (!lcd_found){
  186.  
  187.                 return;
  188.  
  189.         }
  190.  
  191.        
  192.  
  193.         // Save the current LCD mode
  194.  
  195.         bit mode = lcd_rs;
  196.  
  197.                
  198.  
  199.         // The data lines are inputs
  200.  
  201.         lcd_tris_d4 = 1;
  202.  
  203.         lcd_tris_d5 = 1;
  204.  
  205.         lcd_tris_d6 = 1;
  206.  
  207.         lcd_tris_d7 = 1;
  208.  
  209.  
  210.  
  211.         // Enter command mode
  212.  
  213.         lcd_cmd_mode;
  214.  
  215.         lcd_rw      = 1;
  216.  
  217.  
  218.  
  219.         // Put lcd_e high
  220.  
  221.         lcd_e_hi;      
  222.  
  223.        
  224.  
  225.         char counter = 0;
  226.  
  227.        
  228.  
  229.         // Wait for completion of the operation, with a timeout of ~.5 seconds
  230.  
  231.         // LCD d7 is high if the operation is complete.
  232.  
  233.         while (lcd_d7 && counter < 0xFF){
  234.  
  235.                 lcd_e_lo;
  236.  
  237.                 lcd_e_hi;
  238.  
  239.                 lcd_e_lo;
  240.  
  241.                 lcd_e_hi;
  242.  
  243.                 delay_ms(2);
  244.  
  245.                 counter++;
  246.  
  247.         }
  248.  
  249.        
  250.  
  251.         // Check if the previous loop timed out        
  252.  
  253.         if (counter == 0xFF) {
  254.  
  255.                 // If it was a timeout -> disable the flag.
  256.  
  257.                 lcd_found = 0;
  258.  
  259.         }
  260.  
  261.        
  262.  
  263.         // And put the lcd_lo again
  264.  
  265.         lcd_e_lo;      
  266.  
  267.                
  268.  
  269.         // Restore the TRIS
  270.  
  271.         lcd_tris_d4 = 0;
  272.  
  273.         lcd_tris_d5 = 0;
  274.  
  275.         lcd_tris_d6 = 0;
  276.  
  277.         lcd_tris_d7 = 0;
  278.  
  279.        
  280.  
  281.         // Restore LCD RS mode.
  282.  
  283.         lcd_rs = mode;
  284.  
  285.         lcd_rw = 0;
  286.  
  287.  
  288.  
  289.         return;
  290.  
  291. }
  292.  
  293.  
  294.  
  295. ////////////////////////////////////////////////////////////
  296.  
  297. // Send a byte to the LCD. Don't forget to set the mode
  298.  
  299. // (data or cmd) before calling this function.
  300.  
  301. ////////////////////////////////////////////////////////////
  302.  
  303. void lcd_send_byte(char data){
  304.  
  305.  
  306.  
  307.         char temp = data >> 4;
  308.  
  309.  
  310.  
  311.         lcd_rw = 0;     // Write mode
  312.  
  313.  
  314.  
  315.         // Clock the high nibble
  316.  
  317.         lcd_clock_nibble(temp);
  318.  
  319.  
  320.  
  321.         // Clock the low nibble
  322.  
  323.         lcd_clock_nibble(data);
  324.  
  325.        
  326.  
  327.         // Wait until the LCD is finished
  328.  
  329.         lcd_wait_busy();
  330.  
  331. }
  332.  
  333.  
  334.  
  335. ////////////////////////////////////////////////////////////
  336.  
  337. // Initialisation sequence of the LCD
  338.  
  339. ////////////////////////////////////////////////////////////
  340.  
  341. void lcd_init(){
  342.  
  343.  
  344.  
  345.         // Wait for internal reset
  346.  
  347.         delay_ms(15);
  348.  
  349.  
  350.  
  351.         // Set all pins as output
  352.  
  353.         lcd_tris_rs = 0;
  354.  
  355.         lcd_tris_rw = 0;
  356.  
  357.         lcd_tris_e  = 0;
  358.  
  359.         lcd_tris_d4 = 0;
  360.  
  361.         lcd_tris_d5 = 0;
  362.  
  363.         lcd_tris_d6 = 0;
  364.  
  365.         lcd_tris_d7 = 0;
  366.  
  367.        
  368.  
  369.         clear_bit(trisa, 1);
  370.  
  371.         clear_bit(porta, 1);
  372.  
  373.        
  374.  
  375.         // Clear the control bits
  376.  
  377.         lcd_rw = 0;
  378.  
  379.         lcd_cmd_mode;
  380.  
  381.  
  382.  
  383.         // Init sequence (see datasheet)
  384.  
  385.         /// attention (clock 0x03 twice)
  386.  
  387.         lcd_clock_nibble(0x03);
  388.  
  389.         delay_ms(5);
  390.  
  391.         lcd_toggle_e;
  392.  
  393.         delay_10us(15);
  394.  
  395.         /// 4bit mode (clock 0x03 and 0x02)
  396.  
  397.         lcd_toggle_e;
  398.  
  399.         delay_ms(5);
  400.  
  401.         lcd_d4 = 0;
  402.  
  403.         lcd_toggle_e;
  404.  
  405.         delay_10us(15);
  406.  
  407.        
  408.  
  409.         // Assume we have an LCD attached
  410.  
  411.         lcd_found = 1;
  412.  
  413.        
  414.  
  415.         /// We're in 4 bit mode now, program general settings  
  416.  
  417.         lcd_send_byte(FUNCTION_SET);
  418.  
  419.         lcd_send_byte(DISP_OFF);
  420.  
  421.         lcd_send_byte(DISP_ON);
  422.  
  423.         lcd_send_byte(ENTRY_INC);
  424.  
  425.         lcd_send_byte(DISP_CLR);
  426.  
  427.         lcd_send_byte(LINE1);
  428.  
  429.  
  430.  
  431.         // Init done, you can start writing characters now
  432.  
  433.         lcd_data_mode;
  434.  
  435.  
  436.  
  437.         return;
  438.  
  439.  
  440.  
  441. }
  442.  
  443.  
  444.  
  445. ////////////////////////////////////////////////////////////
  446.  
  447. // Send a command to the LCD
  448.  
  449. ////////////////////////////////////////////////////////////
  450.  
  451. void lcd_send_cmd(char command){
  452.  
  453.         lcd_cmd_mode;
  454.  
  455.         lcd_send_byte(command);
  456.  
  457. }
  458.  
  459.  
  460.  
  461. ////////////////////////////////////////////////////////////
  462.  
  463. // Send a line to the LCD
  464.  
  465. ////////////////////////////////////////////////////////////
  466.  
  467. void lcd_printf(const char* line){
  468.  
  469.     char i = 0;
  470.  
  471.     lcd_data_mode;
  472.  
  473.     while(line[i] != 0)
  474.  
  475.         lcd_send_byte(line[i++]);
  476.  
  477. }
  478.  
  479.  
  480.  
  481. ////////////////////////////////////////////////////////////
  482.  
  483. // Print a character to the LCD
  484.  
  485. ////////////////////////////////////////////////////////////
  486.  
  487. void lcd_printf(char value){
  488.  
  489.         lcd_data_mode;
  490.  
  491.         lcd_send_byte(value);
  492.  
  493. }
  494.  
  495.  
  496.  
  497. ////////////////////////////////////////////////////////////
  498.  
  499. // Print a hex value to the LCD
  500.  
  501. ////////////////////////////////////////////////////////////
  502.  
  503. void lcd_print_hex(char value){
  504.  
  505.         lcd_data_mode;
  506.  
  507.        
  508.  
  509.         char hexChar;
  510.  
  511.     char i;
  512.  
  513.    
  514.  
  515.     for(i = 0; i < 2; i++)
  516.  
  517.     {
  518.  
  519.         if(i == 0)
  520.  
  521.             hexChar = value >> 4;
  522.  
  523.         else
  524.  
  525.             hexChar = value & 0x0F;
  526.  
  527.         if(hexChar < 10)
  528.  
  529.             hexChar = hexChar + '0';
  530.  
  531.         else
  532.  
  533.             hexChar = hexChar + ('A' - 10);
  534.  
  535.         lcd_send_byte(hexChar);
  536.  
  537.     }
  538.  
  539. }
  540.  
  541.  
  542.  
  543. ////////////////////////////////////////////////////////////
  544.  
  545. // Print a 16-bit hex value to the LCD
  546.  
  547. ////////////////////////////////////////////////////////////
  548.  
  549. void lcd_print_hex(short value){
  550.  
  551.  
  552.  
  553.     char value1 = (char)((value >> 8) & 0x00FF);
  554.  
  555.    
  556.  
  557.         lcd_print_hex(value1);
  558.  
  559.  
  560.  
  561.     char value0 = (char)(value & 0x00FF);
  562.  
  563.    
  564.  
  565.         lcd_print_hex(value0);
  566.  
  567.        
  568.  
  569.         return;
  570.  
  571. }

Parece que la función que necesitas es lcd_print_hex(valor)... viendo el código de la librería que coloqué arriba. Creo que el compilador cambia de hexadecimal a decimal automáticamente.
Entonces tienes dos opciones Pibuleta:
1- Sigues con el source boost y vas a tener que fajarte pues no hay mucho soporte en la web (ni si quiera en el manual que ellos proporcionan, pues no explica nada, sólo te manda a que veas las librerías).
2- Te cambias de compilador al CCS u otro más conocido del cual puedas tener más soporte en la web. Esta es la opción que yo te recomendaría.

Ok saludos, nos leemos!  :mrgreen:

« Última modificación: 09 de Junio de 2008, 11:54:50 por firepic »
"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: Com omostrar un valor binario en LCD decimal?
« Respuesta #7 en: 09 de Junio de 2008, 17:44:57 »
Gracias firepic!

Pues llevo dandole vueltas y nada, al final algo vo ya tener que hacer... usar el CCS pero no tengo ni idea...


Yo manejar el LCd ya sé, el problema es ese que sé enviar número al LCD, pero no sé como con el numero binario mostralo en el LCD.

El número máxim osería 0-255 osea que sé que debo mostrar como máximo 3 cifras, pero no sé como hace rpara saber esas cifras teniendo el binario...

Saludos
« Última modificación: 11 de Junio de 2008, 02:55:32 por Pibuleta »

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Com omostrar un valor binario en LCD decimal?
« Respuesta #8 en: 09 de Junio de 2008, 18:46:21 »
Por lo que veo t ambién se puede escribir en ASM...

Si añado ese trozo de programa en asm como sería?

Saludos

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Com omostrar un valor binario en LCD decimal?
« Respuesta #9 en: 09 de Junio de 2008, 19:48:41 »
Pero viejo, para qué te vas a complicar la vida con asm -y no es que esté en contra de este lenguaje, tiene sus utilidades, pero tal vez no debas meterte con él ahora que estás echando tus primeros códigos- si el C te lo hace todo solito? Usa el CCS, hay versiones gratuitas que puedes descargar de la web. Y el manual es muy fácil de entender e ilustrativo. Además conseguirás montones de códigos aquí en el foro con lenguaje C para ese compilador.
Bueno es mi recomendación, la decisión final es tuya.
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 migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Com omostrar un valor binario en LCD decimal?
« Respuesta #10 en: 09 de Junio de 2008, 20:02:13 »
Hola amigos!

Tengo un "problemilla" os cuento...

Estoy usando el SourceBoost IDE para programar un PIC16F877 y he llegado a un punto que necesito leer el valor de tmr0= 8 bits en binario y mostrarlo en el LCD.


Por ejemplo si tengo el valor en binario (00110010) que en decimalñ es  50, quiero mostrarlo en el LCD.

Sé escribir y manejar el LCD, pero no tengo muy claro como pasar del valor en binario que leo del tmr0 a decimal? O no sé de que forma pode rmostrarlo en el LCD.


Gracias

Hola

No conozco tu compilador, pero de lo que encontré en internet, puedes usar la librería "lcd_driver.h" y luego iniciar la lcd con la función lcd_setup();. Después solo escribes lprintf();

Intenta con esto:
Código: [Seleccionar]
#include <lcd_driver.h>

...

lcd_setup();
lprintf("%u",timer0);

...

La variable timer0 no sé cómo la obtengas, pero seguramente eso ya lo sabes hacer, asegúrate que sea una variable unsigned char.

Aquí la página con el ejemplo...

http://forum.sourceboost.com/index.php?showtopic=3274&view=findpost&p=12400

Tampoco sé si esa librería funciona con modo nibble de 4bits.

Avísanos de tus resultados.

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Com omostrar un valor binario en LCD decimal?
« Respuesta #11 en: 10 de Junio de 2008, 02:38:00 »
Hola

No conozco tu compilador, pero de lo que encontré en internet, puedes usar la librería "lcd_driver.h" y luego iniciar la lcd con la función lcd_setup();. Después solo escribes lprintf();

Intenta con esto:
Código: [Seleccionar]
#include <lcd_driver.h>

...

lcd_setup();
lprintf("%u",timer0);

...

La variable timer0 no sé cómo la obtengas, pero seguramente eso ya lo sabes hacer, asegúrate que sea una variable unsigned char.

Aquí la página con el ejemplo...

http://forum.sourceboost.com/index.php?showtopic=3274&view=findpost&p=12400

Tampoco sé si esa librería funciona con modo nibble de 4bits.

Avísanos de tus resultados.
[/quote]

Descudia, os mantendré informados en los avances jejeje


tl tmr0, es un registro de 8 bits, cuenta de 0 a 255. No sé si es unsigned char...

Voy a probar cosillas.

Saludos
« Última modificación: 11 de Junio de 2008, 02:48:03 por Pibuleta »

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Como mostrar un valor binario en decimal?
« Respuesta #12 en: 10 de Junio de 2008, 04:41:51 »
Lightweight Conversion Functions

The standard conversion functions offer a lot of flexibility at the cost of ROM, RAM
and execution time. For application that are short of RAM and ROM, or require
shorter execution time, it maybe desirable to use the following lightweight
functions.

void uitoa_hex( char* buffer, unsigned int val, unsigned char digits )
(Function) Unsigned integer to ASCII, hexadecimal representation. This function
converts a 16 bit unsigned integer into a hex value with leading zeros. The number
of digits is specified using by the digits parameter.

void uitoa_bin( char* buffer, unsigned int val, unsigned char digits )
(Function) Unsigned integer to ASCII, binary representation. This function converts
a 16 bit unsigned integer into a binary value with leading zeros. The number of
digits is specified using by the digits parameter.

void uitoa_dec( char* buffer, unsigned int val, unsigned char digits )
(Function) Unsigned integer to ASCII, decimal representation. This function
converts and 16 bit unsigned integer into a decimal value with leading zeros. The
number of digits is specified using by the digits parameter.

unsigned int atoui_hex( const char* buffer )
(Function) ASCII to unsigned integer, hexadecimal representation. This function
converts a hexadecimal string value into 16 bit unsigned integer.

unsigned int atoui_bin( const char* buffer )
(Function) ASCII to unsigned integer, binary representation. This function converts
a binary string value into 16 bit unsigned integer.

unsigned int atoui_dec( const char* buffer)
(Function) ASCII to unsigned integer, decimal representation. This function
converts a decimal string value into 16 bit unsigned integer.

unsigned char sqrt1( unsigned short val )
(Function) Integer square root. Function that returns square root from an unsigned
16 bit integer. Unlike sqrt this function is far shorter but its execution time may be
longer than sqrt.



En el manual del sourceboost salen estas opciones... creeís que alguna me puede servir para pasar el binario a decimal?

Enviar datos al LCD ya lo se hacer, eso no es el problema.

El problema es "casar" el numero binario con la tabla del LCD, por ejemplo el 9 en binario con el 9 del LCD.


Saludos

Desconectado migsantiago

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

¿Qué tal así?

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

...

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

... //obtienes el valor del timer 0 y lo depositas en tmr0

    uitoa_dec(  buf, tmr0,  3 );
}

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

Los caracteres ascii son con los que trabaja la lcd. Puedes enviar caracter por caracter el dato ahora que ya sabes convertirlo.

Si por alguna razón el resultado no da bien, pon esta función...

uitoa_dec(  buf, tmr0,  4 );
« Última modificación: 10 de Junio de 2008, 11:21:55 por migsantiago »

Desconectado Pibuleta

  • PIC10
  • *
  • Mensajes: 24
Re: Como mostrar un valor binario en decimal?
« Respuesta #14 en: 10 de Junio de 2008, 11:35:45 »

Entre hoy y mañana lo pruebo y te digo algo.

A ver si hay suerte!

Recuerda que uso SourceBoost IDE.

Gracias socio
« Última modificación: 11 de Junio de 2008, 02:47:18 por Pibuleta »


 

anything