Errores al compilar en MPLAB

Hola, tengo un programa para el 12F509 en C; uso el MPLAB
Había estado haciendo el BUILD sin problema, pero de repente (o sea, al agregar algunas líneas de código aquí y allá) empezó a tardarse en compilar; ahora mismo se tarda como 2 minutos o más.

Uso 760 de 1024 de Program Memory
y 16 de 41 de Data Memory

No tengo Warnings

Al final si hace todo bien, pero es molesto porque si tengo que hacer un pequeño cambio, tengo que esperar algunos minutos para ver si hace lo que debe o tengo que modificarlo de nuevo.

A alguien le ha pasado que se tarde mucho en el BUILD??
 
Si, pero no demora tanto... pero se siente un retardo...
Trata de acortae la ruta donde guardas el proyecto...
 
Justo lo acabo de cambiar (más bien hice otro proyecto nuevo) en un directorio más cerca a la raiz y sigue tardando lo mismo

Le tomé el tiempo y tardó 1 minuto y unos pocos segundos.

Al principio pensé que podía ser alguna rutina mal escrita que, aunque el programa funcione, esté haciendo alguna operación que propicie que tarde en compilar.

Al comienzo del programa tendo un IF. EL IF y el ELSE hacen básicamente lo mismo sólo que uno controla GP0 (IF) y GP1 (ELSE), pero las operaciones son, repito, básicamente iguales. Lo curioso es que si quito la parte del ELSE, o sea, disminuyo el código a la mitad, MPLAB compila bien, sin tardarse.
 
Última edición:
Para que usas el ELSE y el IF....??
Esas instrucciones se usan, para la parte de compilacion, que compile o no...si no me equivoco

Else.. Usado junto con la directiva IF para proporcionar un camino alternativo de ensamblado si al evaluar la condicion es falsa.
Else puede usarse dentro de un bloque de programa o en una macro...

Trata de ver esa parte porque el error esta en esas sentencias..

Saludos.
Cerebro.

Fuente.. Pic 16f84a Ra-Ma
 
hola a todos.

soy un poco nuevo en esto de programar. tengo un archivo en c y lo deseo compilar a un .hex y no he podido lo estuve intentando hacer con mplab pero no me dio resultado. es para generar un Multimetro digital

si alguien me pudiera dar la mano le agradecería.
---------------------------
#include<math.h>
#include<avr/io.h>
#include<lcd.h>
#include<stdlib.h>


int main(void)
{
double resultado_Vcd,Vcd,RMS,corriente,corriente_res,resistencia,resistencia_res;
int muestra, muestra_anterior;
char resul[16];


DDRD=0x00;
DDRA=0xF0;
ADMUX=0xC0;
ADCSRA=1<<ADEN;
lcd_init(LCD_DISP_ON);

while(1)
{
switch (PIND)
{
case (0x00): //con 0x00 se selecciona el voltimetro de CD
{
ADMUX=0xC0;
do{

ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0); //se espera a que termine la conversion
resultado_Vcd=ADCL|(ADCH<<8);
Vcd = resultado_Vcd/53.28;
lcd_gotoxy(0,1);lcd_puts(dtostrf(Vcd,16,4,resul)); break; //manda a escrirbir en el display el resultado de la conversion
}
while(PORTB=0x00);
}
break;
case (0x01): //con 0x01 se selecciona ohmetro
{
ADMUX=0xC1; //se selecciona el canal 3
do{
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0); //se espera a que termine la conversion
resistencia_res=ADCL|(ADCH<<8);
resistencia=((-resistencia_res)*10000)/(resistencia_res-2000); //determina la resistencia
lcd_gotoxy(0,1);lcd_puts(dtostrf(resistencia,16,4,resul));break;
}

while(PORTB=0x01);
}
break;
case (0x02): //con 0x02 se selecciona amperimetro
{
ADMUX=0xC2; //se selecciona el canal 2
do{
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0); //se espera a que termine la conversion
corriente_res=ADCL|(ADCH<<8);
corriente=corriente_res/1.9998; //determina la corriente
lcd_gotoxy(0,1);lcd_puts(dtostrf(corriente,16,4,resul)); break;
}
while(PORTB=0x02);
}
break;

/*case : (0x01) //con 0x01 se selecciona el voltaje RMS
{
ADMUX=0x01; //se selecciona el canal 1
muestra=0;
muestra_anterior=0;
do{
while((!(ADCSRA&(1<<ADIF)) //se espera a que termine la conversion
ADCSRA=(1<<ADIF);
muestra_anterior=muestra;
muestra=(ADCH<<8)+ADCL;//se guarda el resultado
if(muestra<muestra_anterior)
RMS=((muestra/2)/sqrt(2));
lcd_gotoxy(0,1);lcd_puts(dtostrf(RMS,16,4,resul)); break;
}
while(PORTB=0x01);
}
break;*/



}//sierra el swhitch
}//sierra el while(1)
}//sierra el main

--------------------
 
Hola FELIPEMEL

No te prometo verlo yà, porque es un poco tarde, pero si mañana lo pruebo y te paso las novedades.

De todos modos, primero debes convertir el archivo a .asm (ensamblador), recien ahì lo podes compilar como hexadecimal (.hex) en MPLAB.

te recomiendo el prog MPASMWIN que se incluye em MPLAB

Mañana lo veo y te cuento. OK?
 
Última edición:
Hola felipemel, recien puedo ponerme a ver lo tuyo, disculpa la demora, es que me surgieron unos trabajos no programados en la universidad que bebí atender.
Ahora sigo con lo tuyo... Gracias por el aguante.
 
Pregunta ------> ¿ qué compilador y versión estas usando?

Mientras, si te parece bien, lee el texto de este enlace, creo que puede ayudarte...

http://atc.ugr.es/docencia/udigital/13.html

Te comento que hace unos años no programo en C y me cuesta retomar, pero esta bueno el desafío.

Actualmente programo con el Niple v5.2 que me arroja un programa *.asm, lo guardo en el HDD (no en carpeta o directorio) y de ahí lo paso a *.hex en el MPASMWIN (de MPLAB) y ya està.

Para grabarlo en el pic uso el ICProg con un grabador JDM.

Puede que te sirvan estos datos, sigo viendo lo tuyo...

no te faltaria incluir el microcontrolador que usas, es decir añadir la directiva

#include<16f873.h> por ejempplo?????????
Yo también observo ese detalle, Sammaael, pero no estoy seguro que el MPLAB lo acepte directamente en C, vos que experiencia tenes al respecto?

lo que pasa y como dije antes, hace un tiempo que no programo en c...
Vos dirás, y para que cuernos responde? Bueno, me tenté para reflotar los conocimientos... Perdón si entorpezco...
 
Última edición:
Pregunta ------> ¿ qué compilador y versión estas usando?

Mientras, si te parece bien, lee el texto de este enlace, creo que puede ayudarte...

http://atc.ugr.es/docencia/udigital/13.html

Te comento que hace unos años no programo en C y me cuesta retomar, pero esta bueno el desafío.

Actualmente programo con el Niple v5.2 que me arroja un programa *.asm, lo guardo en el HDD (no en carpeta o directorio) y de ahí lo paso a *.hex en el MPASMWIN (de MPLAB) y ya està.

Para grabarlo en el pic uso el ICProg con un grabador JDM.

Puede que te sirvan estos datos, sigo viendo lo tuyo...



Yo también observo ese detalle, Sammaael, pero no estoy seguro que el MPLAB lo acepte directamente en C, vos que experiencia tenes al respecto?

lo que pasa y como dije antes, hace un tiempo que no programo en c...
Vos dirás, y para que cuernos responde? Bueno, me tenté para reflotar los conocimientos... Perdón si entorpezco...
bueno les comento el micro controlador es unATMEL MEGA 32 pero dicho controlador no lo encuentro en mplab, ahora para estoy intentando con pic c compiler me parece un muy buen compilador, pero al querer compilar me genera un error, lo adjunto
http://es.zimagez.com/zimage/mult.php

ahora estuve mirando la info muy buena voy a seguir mirando
 
bueno les comento el micro controlador es unATMEL MEGA 32 pero dicho controlador no lo encuentro en mplab, ahora para estoy intentando con pic c compiler me parece un muy buen compilador, pero al querer compilar me genera un error, lo adjunto
http://es.zimagez.com/zimage/mult.php

ahora estuve mirando la info muy buena voy a seguir mirando
Buenas, perdón pero estaba viendo el tema; felipemel el MPLAB solo es de la empresa Microchip que solo es para sus microcontroladores llamados PIC y no tiene nada que ver los los AVR de Atmel que es otra empresa.
De la imagen te pide que declares el microcontrolador que estás usando pero también aclaro que el PCW C Compiler IDE solo el para microcontroladores PIC y no los AVR de atmel... para programar los Atmel necesitas el WinAVR AVR-GCC por ejemplo pero hay más, consulta en el foro.

Un saludo
 
Buenas, perdón pero estaba viendo el tema; felipemel el MPLAB solo es de la empresa Microchip que solo es para sus microcontroladores llamados PIC y no tiene nada que ver los los AVR de Atmel que es otra empresa.
De la imagen te pide que declares el microcontrolador que estás usando pero también aclaro que el PCW C Compiler IDE solo el para microcontroladores PIC y no los AVR de atmel... para programar los Atmel necesitas el WinAVR AVR-GCC por ejemplo pero hay más, consulta en el foro.

Un saludo
ByAxe gracias por tu respuesta voy a intentar lo que tu dices

felipemel dijo:
ByAxe gracias por tu respuesta voy a intentar lo que tu dices
ByAxel mira hace poco me dejaste un comen en el foro y bue.. lo intente compilar con avr studio pero me da error, no se si sera muy confianzudo de mi parte pedirte que me lo revises igual intento generar un .hex y no puedo tu me dirás

gracias de ante mano
 
Última edición:
miren les expliko, al crear un programa cn el mplab ( he provado versiones distintas) me arroja el mismo error, ya realmente no se que hacer.

inicio el programa (mplab v8.56)

abro el proyect wizard
selecciono el 16f84a

asigno direccion al mcp y gravo el mcw, pero a la hora de grabar el *.asm me lanza este error



y no puedo empezar a programar en mi pc

chicos x favor es de caracter urgente si es que alguien conoce el porque y obviamente si alguien tiene una solucion lo agradeceria eternamente


gracias :D
 
olap intenta de esta forma si lo que quieres es solo generar el .hex para cargarlo a tu pic:

1: Abre el Mplab Ide 8.56v que posees.
2: FILE > new te abre una ventana sin titulo (untitled),
3: Escribe tu codigo del programa en asm en este espacio.
4: Cuando termines ve FILE > Save as donde dice Nombre: escribele el nombre de tuproyecto; prueba.asm, le escribes el .asm seguido.
5: Ve a PROJECT > y click en Quickbuild (prueba.asm).
6: Listo si tu programa no tiene errores te compila bien
saludos
 
Cuando instalaste el Mplab lo instalaste con todos sus complementos, ya que no deberia aparecerte ese error, ahora del ejemplo anterior se me olvido decirte que antes de compilar selecionaras el micro a usar :

CONFIGURE > SELECT DEVICE
 
compadre ya lo solucione, el problema era la direccion raiz donde guardaba el archuvo *.asm, ya que por ser un windows modificado tiene ese cacracter en el nombre si te fijas, ese Black Crystal TM, ese caracter tm no es reconocido y ese era la abse del error asi k cree una carpeta base en c: y chan!! se acabo el fkn problema.

asi k si a alguno le pasa esto note q tenga cuidado cn el nombre d la direccionx q esos caracteres son para puro pelutudearte un rato
 
hola a todos, he comenzao a usar el mplab, ya he echo algunos proyectos en ensamblador, pero no he podido simular ningun proyecto en lenguaje c, sabe alguno de ustedes si se puede simular lenguaje c en mplab
gracias
 
Arriba