Error al compilar con PIC C de CCS

muchas gracias Limako te agradezco por tu aporte gracias :p


tengo un problema con este código me podrás ayudar lo que pasa es que si funciona y todo
nada mas que no se para que sirve los siguen tes comandos:
#byte PORTB=0x06
#byte PORTc=0x07
e tratado de variar los valores para ver si así lo puedo entender pero pues nada :S
te dejo el código completo que es el siguiente:




#include <16f76.h>
#use delay (clock=4000000)
#fuses XT,NOWDT,NOPUT,NOPROTECT


#byte PORTB=0x06
#byte PORTc=0x07

int dato;

void main(void)


{

set_tris_b(0x00);
set_tris_c(0xff);
portb=0x00;

while (true)
{
dato= portc;
switch(dato)
{
case 1: PORTB =0xff;
break;

case 2: portb=0b00001111;
break;


case 3: portb=0b00111100;
break;

default: portb=0x00;
break;


}

}

}


gracias men :p
 
Hola a todos.

Todos los proyectos que había realizado con PIC C PCW y que estaban funcionando de un momento a otro comenzaron a mostrar el error que se ve en la imagen. La verdad no se que pasa ya elimine el programa y lo volví a instalar y funciona normal pero al día siguiente vuelve y pasa lo mismo, probé creando un proyecto nuevo y tampoco funcionan. ¿no se que pasa ?
 

Adjuntos

  • error compilando en PCW.jpg
    error compilando en PCW.jpg
    211.8 KB · Visitas: 44
es muy raro, a mi me pasa algo parecido, ojala alguien nos pueda dar una mano, si averiguo algo te aviso

Hola mira la verdad tampoco se que pasa pero encontré una solución. Digamos que creamos un proyecto y vamos a utilizar el PIC 16F877A y un modulo LCD, lo que tenemos que hacer para evitar que salga ese error es copiar en la carpeta del proyecto que creamos los archivos de cabecera 16F877A.h y el archivo LCD.C que se encuentran la carpeta donde se instalo el programa PCW. Ademas en el código hay que escribir los #include de esta manera
#include <LM_35.h>
#include <LCD.c>


Despues dar clik derecho sobre <LM_35.h> y seleccionar open file at cursor
se abrira otra pestaña en el editor de código.
y para finalizar cambiar en el #include <16F877A.h>
por #include "16F877A.h"

Así fue que me funciono cualquier cosa si encuentre el motivo por el cual sale ese error te comento, espero que haya sido de tu ayuda.
 
Última edición:
Hola mira la verdad tampoco se que pasa pero encontré una solución. Digamos que creamos un proyecto y vamos a utilizar el PIC 16F877A y un modulo LCD, lo que tenemos que hacer para evitar que salga ese error es copiar en la carpeta del proyecto que creamos los archivos de cabecera 16F877A.h y el archivo LCD.C que se encuentran la carpeta donde se instalo el programa PCW. Ademas en el código hay que escribir los #include de esta manera
#include <LM_35.h>
#include <LCD.c>


Despues dar clik derecho sobre <LM_35.h> y seleccionar open file at cursor
se abrira otra pestaña en el editor de código.
y para finalizar cambiar en el #include <16F877A.h>
por #include "16F877A.h"

Así fue que me funciono cualquier cosa si encuentre el motivo por el cual sale ese error te comento, espero que haya sido de tu ayuda.

hola, gracias voy a probar de momento lo volvi a instalarl y no me volvio a suceder
 
HOLA soy nuevo, estoy intentando programr el pic 16f628a : esto es lo que intento compilar:

#include <16f628a.h>
#use delay(clock=4m)
void man(){
while (1){
output_high(pin_a1);output_high(pin_a2);
delay_ms(500);
output_low(pin_a1);output_low(pin_a2);
delay_ms(500);
}
}


pero al querer compilarlo me sale una pestaña al costado y me sale este error que noce como solucionarlo:


#include <16F628A.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES MCLR //Master Clear pin enabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES RESERVED //Used to set the reserved FUSE bits

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)


al final donde salen los errores me dice que el error esta en la ultima linea;osea este es el error:

***Error 100"C:\User\nombredel equipo\desktop\leds\leds.h"Line 14(5,61):USE parameter value is out of range Not a number: PIN_C6

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

les agradeceria que me apoyaran por favor ,el sofguare que uso es el PIC C COMPILER.... pero el problema es solo es con el 16f628A porque con el resto de pics no hay problemas compila con perfeccion

GRACIAS DE ANTE MANO...:)
 
Última edición:
Hola compa!

El error esta en que el pic16F628A no tiene puerto C y tu estas definiendo RX y TX en los pines C6 y C7.
Cambialos por algun pin que si tengas , como el puerto A o el B.

Si vas a usar el hardware del pic solo pon UART1 , si quieres usar la comunicacion por soft es como lo estas definiendo.

Saludos!

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
 
lo que sucede esque la compilacion o el programa debe de mandar ciertos pulsos cuando se opriman los push boton y los hace la compilacion no manda erorr y en el proteus funciona perfecto solo que cuando el pic esta programado no hace nada percido alo que deveria realiza les dejo la compilacion y ajala que se pueda encontrar una solucion
al pricipio pense que el pic estaba dañado pero hace lo mismo y ya he programado 4 pic's diferentes y no hay cambio
#include<16f628A.h>
#fuses xt,nowdt,nolvp
#use delay (clock=4000000)
#byte porta=5
#byte portb=6
void main()
{
set_tris_a(0x00);
set_tris_b(0xF0);
while(1)
{
if (input (PIN_B0))
output_high (pin_a0);

if (input (PIN_B1))
output_high (pin_b4);

if (input (PIN_B2))
porta=0x03;

}


}
esta es la compilacion
 
proteus funciona perfecto solo que cuando el pic esta programado no hace nada percido alo que deveria realiza

Y como funciona tu montaje??? que hace????, por lo que veo de tu codigo al oprimir el pulsador siempre queda en estado alto tus salidas, no las vuelves a dejar en low, tambien veo que no dejaste un tiempo que evite que al orpimir el pulsador se repita la misma instruccion miles de veces, recuerda que estas se ejecutan en us o ms. Espero haberte ayudado saludos........
 
Hola grev, como te ha dicho Vergil tu programa tiene algunas incosistencias. Creo que estás declarando algunas cosas innecesarias, a menos que las pienses usar más adelante. Si lo que quieres es que se active una salida cuando pulses un botón conectado a un puerto y luego se apague, entonces te dejo un pequeño código de muestra para que te bases en él y puedas seguir con tu desarrollo.

Código:
#include <16F628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(clock=4000000)

void main()
{

   while(TRUE)
   {
      if (input (PIN_B0))
         output_high (PIN_A0);
      else
         output_low (PIN_A0);

      if (input (PIN_B1))
         output_high (PIN_B4);
      else
         output_low (PIN_B4);
   }
}

También sería bueno que subieras tu diagrama de conexiones.

Saludos!
 
Hola, tengo un problema con respecto al CCS. Uso la versión 4.023 y cuando tengo dos códigos abiertos, y necesito compilar los dos, siempre me compila el primero que abrí. Cómo lo puedo solucionar? Gracias
 
Hola DOSMETROS me a pedido que os escriba y adjunte mi proyecto aqui.
No veo aqui mi pregunta principal, a si que os la dire de nuevo.

No se crear el archivo .HEX desde el codigo .C para que funcione en Proteus.

Y no creo que sea un Bug del compilador. Con otros proyectos siempre responde.
 

Adjuntos

  • MIPROYECTO.rar
    1.6 KB · Visitas: 5
no se si bajaste eso de internet pues si esta tan elaborado el codigo he de suponer que sabes programar
si no es asi lo bajaste de internet

se da en el boton de compilar y debe salir el .hex

si no es asi abre el proyecto compila cierra vuelve a abrir el proyecto y compila de nuevo y se corrije el problema ese fallo lo tiene CCS 0.85
 
En el código del programa "2_DISPLAY.C" AlberertO dijo:
// NO SE COMO CREAR EL .HEX EN CCS
// NO SE COMO CREAR EL .HEX EN CCS
// NO SE COMO CREAR EL .HEX EN CCS
Al abrir ese programa con PIC C Compiler y presionar la tecla "F9", ya se debe compilar sin problemas.
El archivo "2DISPLAY.H" Es un archivo de cabecera y no se debe compilar directamente.
Ese archivo incluye la configuración del PIC y puede contener otras partes que se pueden usar en el programa principal "2_DISPLAY.C"

Al incluir la configuración del PIC en el achivo "2_DISPLAY.C", ya no es necesario el archivo "2_DISPLAY.H"

El archivo "2_DISPLAY.C" contiene la siguiente información de configuración:
PHP:
#include <16f877a.h>
#FUSES HS              // High speed Osc (> 4mhz for PCM/PCH) (>10mhz
                       // for PCD)
//#FUSES MCLR            // Master Clear pin enabled
#FUSES NOBROWNOUT      // No brownout reset
#FUSES NOLVP           // No low voltage prgming, B3(PIC16) or B5
                       // (PIC18)used for I/O
#FUSES NOCPD           // No EE protection
#FUSES NOPUT           // No Power Up Timer
#FUSES NOPROTECT       // Code not protected from reading
#FUSES NOWDT           // No Watch Dog Timer
#USE delay(clock=4m)
Y el archivo "2_DISPLAY.H" contiene lo siguiente:
PHP:
#include <16F877A.h>
#device ADC=16

#FUSES NOWDT                     //No Watch Dog Timer
#FUSES NOBROWNOUT                //No brownout reset
#FUSES NOLVP                     //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(crystal=4MHz)
Este último archivo se crea al utilizar el "Project Wizard"

Entonces, o incluyes éste archivo *.H (Header) así como ya está incluido en el archivo principal y omites la palabra de configuración, o escribes la palabra de configuración en el programa principal y ya no incluyes el archivo *.H "2_DISPLAY.H"
 
Última edición:
Hola. Hoy me e pasado toda la tarde con my jandica. E tenido que empezar desde el principio no lo tengo todo, pero my primer programa hace ya lo que queria. El problema es que no se porque los display parpadean cuando yo nunca les cierro la salida. Este es el codigo :

#include <16f877.h>

#fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP // TODAVIA NO QUIERO METERME EN ESTO


#USE delay(clock=4m)

void main(){
// Input_x (valor); Esta directiva nos devuelve el valor en el que se encuentra el "Puerto x".
// Output_x (valor); envía lo que valga valor al Puerto correspondiente.
int valor;
int unit=0, dec=0;
int unidaz=0;
int BCD7seg[10]={0b0000,0b0001,0b0010,0b0011,0b0100,
0b0101,0b0110,0b0111,0b1000,0b1001};

while(TRUE)
{///wil

valor=input_b();


if (valor<100){
//output_c(valor); NO INPORTA Q ANULASE ESTO PORQUE output_c(BCD7seg[unidaz]); Y output_c(BCD7seg[dec]); AFECTAN AL PORTC
dec=0; unidaz=0; valor++;// valor++ LO E PUESTO A CIEGAS (porque si valor era 15 solo contaba hasta 14)
for (unit=0;valor>unit;unit++){///for

if (unidaz>=10){ dec++; unidaz=0;}///0b1001 MAS DE 9. DECENAS
output_high(PIN_d1);
output_c(BCD7seg[dec]); delay_ms(50);



output_high(PIN_d0);
output_c(BCD7seg[unidaz]); delay_ms(20);
// AUNQUE YO NO UTILE output_low(PIN_d0); NI output_low(PIN_d1); NO ENTIENDO PORQUE EL PIN 0 y 1 PASAN A VALER 0
unidaz++;



}///for*/
}
else{
output_high(PIN_d0); output_high(PIN_d1);
output_c(0b0000); delay_ms(5); //¿ SI VALOR>99 COMO AGO PARA MANDAR EL HEXADECIMAL " FF "
}
}///wil

}
//E TENIDO QUE UTILIZAR PIN 0 y 1 DE PORTD SON NECESARIOS PARA ENVIAR SEÑAL DE ENCENDIDO A LOS DISPLAYS
// SI YO COMO CONTADOR SOLO NECESITO HASTA EL 63 (binario 0011 111) ME GUSTARIA MUCHO TENER LIBRE PIN6 y PIN7 DE PORTD PARA LOS DISPLAYS Y ASI AORRAR PUERTOS QUE
// ME PUEDEN SERVIR PARA OTRA COSA
// PROBLEMA CUANDO APLICO " output_c(BCD7seg[unidaz]); " Esto afecta tambien al pin 6 y 7 (aunque solo cuente hasta 63) me los pone a cero y no puedo utilizar
//a estos 2 para controlar el display ¿como podria hacer que " output_c(BCD7seg[unidaz]); " No afectase a los pin 6 y 7 (solo a los demas de 0 a 5)

POS Dejo archivos sobre este proyecto por si sirve para aclararme algo mas. Gracias a cualquier curioso que se moleste en mirarlo buscando fallos.
 

Adjuntos

  • PROYECTO.rar
    67.8 KB · Visitas: 5
Atrás
Arriba