Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

16/12/2006 #1


no puedo compilar un programa en C para pic
Hola a todos
miren, tengo un problema pues estoy tratando de hacer un circuito con un decodificador de tono el cual segun el tono le envia al pic un 0 o un 1 por cada una de sus cuatro salidas.
El problema es que desarrolle un programa en c bastante sencillo pero que no he podido compilar pues soy un poco novato y la verdad es que los programas que he bajado son todos pagados.
Alguien podrìa explicarme como hacerlo.
Muchas gracias de antemano.

PD. les dejo adjunto el programa en c para que lo vean
19/12/2006 #2


Segun veo tu codigo es para compilarse con el ccs, asi que o te lo compras o te lo compras, ya que el demo no te dejara especificar el 16f84 a menos que consiguieras el .h por separado, pero creo que seria mas lio.

Mira yo te ofreceria compilarlo y pasarte el .hex, pero no creo que te ayude en mucho, o no se, ya que a cualquier modificacion y te quedarias igual.

Bueno a ver que piensas.

Saludos,
19/12/2006 #3


gracias por responder
ya habia visto la posiblidad de comprarme el ccs, pero debo ahorrar dinero primero.
Quizas me puedas enviar el archivo compilado porfavor ya que no tengo mucho tiempo y quizas no logre juntar el dinero.
Te agradezco de nuevo.
Saludos.
19/12/2006 #4


Hola Sidtho, va pues ahí tienes tu navidad, el .zip con todos los archivos incluyendo el .hex, solo tenias mal un paréntesis correspondiente al primer condicional if, fuera de eso lo compilo correctamente, que conste que no cheque la lógica del programa, imagino que tu lo haz de haber hecho .

Saludos y suerte,
Archivos Adjuntos
Tipo de Archivo: zip programa_145.zip (27,9 KB (Kilobytes), 73 visitas)
28/01/2007 #5


no puedo compilar CCS
Descargue el demo del programa; y aun no puedo compilara ningun programa basico que hice, con el 16f776a,
#include <16f876a>
#divece ADC=8
#fuses XT, NOWDT, NOPROTECT, NOLVP, PUT, BROWOUT
#use delay(clock=4000000)
#use standard_oi(b)
//#use standard_oi(a)
int valor=0x00;
void toma_adc(void)
{ set_adc_channel(0);
delay_ms(1);
valor= read_adc();
delay_ms(1);
}
void main()
{
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(RA0_analog);
do {
toma_adc();
output_b(valor);
}while(true);
}

Ayuden porfavor; saludos.
29/01/2007 #6


Mi estimado yassirT, si no me equivoco el demo del ccs 4 no te dejara especificar ese pic, debido a que viene limitado (por eso es demo). Lo debiste haber visto en la pagina de descarga del mismo ccs.

Fuera de eso, esta linea:
Código:
#include <16f876a>
Deberia ir asi:
Código:
#include <16f876a.h>
Pero principalmente deberias conseguir la version completa del ccs. Eso, o en vez de usar el 16f876 usa el 16f877 que si viene soportado en el demo, la diferencia es que tendrias mas capacidad de dispositivo (28 -> 40) y me parece que el costo es casi el mismo. Ah eso si que no te libraras del limite de 30 dias.

Saludos,
01/12/2013 #7


Me sale siempre error en la parte de printf(lcd_putc,"\fADC = %41d",q);
sobre todo me resalta la variable q, a ver si me apoyan en que me he equivocado

Código:
#include <16f877a.h>
#device adc=10
#fuses XT,NOWDT
#use delay(clock=4M)
#define lcd_data_port getenv("SFR:PORTC")
#define lcd_enable_PIN  PIN_C0
#define lcd_rs_pin      pin_c1
#define lcd_rw_pin      pin_c2
#define lcd_data4       pin_c4
#define lcd_data5       pin_c5
#define lcd_data6       pin_c6
#define lcd_data7       pin_c7
#include <lcd.c>

void main(){
   int16 q;
   float p;
   
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   lcd_init();
   for(;;{
      set_adc_channel(0);
      delay_us(20);
      q=read_adc();
      p=5.0*q/1024.0;
      
      printf(lcd_putc,"\fADC = %41d",q);
      printf(lcd_putc,"\nVoltage = %01.2fV",p);
      delay_ms(100);
   }
}
01/12/2013 #8

Avatar de ByAxel

Hola,
%d generalmente solo para tipos de 8 bits y como la variable 'q' es de 16 bits necesitas de %Ld o %Lu... revisa el archivo de ayuda del CCS que está todo y seria bueno que pongas que dice el error, así es mas facil determinar que pasa...
01/12/2013 #9


el error dice:
printf format type is invalid
01/12/2013 #10


cuando lo simulo supuestamente tiene que darme el valor exacto del voltaje en un potenciometro.
pero a la hora de simularlo no me da el voltaje adecuado.
por eso quería saber si la ecuación p=5.0*q/1024.0; esta bien y tambien porque le agrega un ".0" despues del 5 y del 1024 .¿ Por qué ?
O acaso el CONVERTIDOR DEL PIC NO ES 100% EXACTO Y TIENE UN MARGEN DE ERROR, corrigeme ??
01/12/2013 #11

Avatar de ByAxel

miguel12 dijo: Ver Mensaje
cuando lo simulo supuestamente tiene que darme el valor exacto del voltaje en un potenciometro.
pero a la hora de simularlo no me da el voltaje adecuado.
por eso quería saber si la ecuación p=5.0*q/1024.0; esta bien y tambien porque le agrega un ".0" despues del 5 y del 1024 .¿ Por qué ?
O acaso el CONVERTIDOR DEL PIC NO ES 100% EXACTO Y TIENE UN MARGEN DE ERROR, corrigeme ??
- La secuencia del cálculo es como en todo, sigue las reglas... si pones p=5.0*q/1024.0, el compilador primero va a realizar la división pero si pones p=(5.0*q)/1024.0, va a realizar lo que se buscas... utiliza la regla de tres simple para obtener el voltaje "analiza".
- El compilador requiere que los tipos de datos sean los mismos, como buscas tener decimales es necesario indicar que todos los datos sean float (punto flotante), por eso colocan (.0). Ahora no es el único método para obtener decimales pero si el PIC tiene suficiente memoria, no hay problema...
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.