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

Temas similares

22/10/2015 #41

Avatar de COSMICO

Hola amigos, esta línea esta en un código de mensaje anterios.
Executing: "C:\Program Files (x86)\PICC\Ccsc.exe" +FM "Cronometro_DISPLAY.c" +DF +LN +T +A +M +Z +Y=9.
Estoy interesado en modificar algunos parametros para que ccs no me genere algunos archivos al compilar.
como el lst, pjt, sim. He leido en la ayuda el commnad_line_compiler. Pero no logro entender muy bien.
como hacerlo.
23/10/2015 #42
Moderador

Avatar de D@rkbytes

Yo uso un archivo de procesos por lotes .bat
Originalmente creado por Arossini y lo he modificado para la nueva versión de PIC C Compiler y Proteus.
(También funciona para versiones anteriores.)
Lo ejecutas y pregunta si deseas realizar la limpieza de archivos.

Aquí lo adjunto.

Nota:
Si éste archivo es ejecutado en raíz, también eliminará los archivos de las extensiones seleccionadas en todas las sub carpetas.
23/10/2015 #43

Avatar de COSMICO

Gracias amigo eres muy amable.
lo probaré.
Tengo ccs 5.08 y proteus 8.3 sp2.
23/09/2016 #44


Problema al simular con proteus y CCS C compiler
Hola amigos, soy nuevo en el foro.
Si pudieran ayudarme, pues estoy tratando de probar el encendido de un led.
Ya compilé el código, pero cuando cargo el .hex en el proteus, no hace nada.

Aquí les dejo el código.
Código PHP:
#include <16f876.h>
#fuses XT,NOWDT
#use delay (clock=4000000)
#use fast_io(B)

void main(void)
{
port_b_pullups(true);
set_tris_B(0x01); // configuracion de todos los pines como salida
output_low(Pin_B1);
while(
1)
{
if(
input(PIN_B0)==1)
output_low(Pin_B1);
else
output_high(Pin_B1);
}

23/09/2016 #45


Checa si funciona así:

Código:
#include <16f876.h>
#fuses XT,NOWDT
#use delay (clock=4M)
//#use fast_io(B)

void main(void)
{
port_b_pullups(true);
set_tris_B(0x01); // configuracion de todos los pines como salida
output_low(Pin_B1);

while(1)
{
if(input(PIN_B0)==1){
output_low(Pin_B1);
}
else{
output_high(Pin_B1);
}
}
}
23/09/2016 #46


Gracias ya funciono. Podria explicarme porque no funcionaba usando esa directiva?
23/09/2016 #47
Moderador

Avatar de D@rkbytes

yunier dijo: Ver Mensaje
¿Podría explicarme por qué no funcionaba usando esa directiva?
En realidad, así como está tu programa debe funcionar, pero debes tener en cuenta que estás usando las resistencias pull-up internas del puerto B.
Entonces RB0 mantendrá un 1 por medio de la resistencia pull-up.
Por lo tanto, será más común esperar un 0 que un 1, que es cómo está en tu programa.
Así que todo depende de cómo compares y cómo tengas el hardware.

Algo más comprensible por código usando las resistencias pull-up, sería de esta forma:
Código PHP:
#include <16f876.h>
#use     delay (crystal = 4MHz)
#use     fast_io(B)

void main(void)
{
   
port_b_pullups(true);         // Habilitar resistencias pull-up
   
set_tris_B(0x01);             // RB0 cómo entrada, los demás cómo salidas.
   
output_b(0x00);               // Bits configurados cómo salida, en cero al iniciar.
   
   
while(true)
   {
      if(
input(PIN_B0) == 0)     // Si RB0 está en 0...
         
output_high(Pin_B1);    // RB1 en 1
      
else                       // Caso contrario...
         
output_low(Pin_B1);     // RB1 en 0
   
}

14/10/2016 #48


Problema compilación Pic C Compiler
Hola soy nuevo en el foro y en el lenguaje C.
Al querer compilar el programa me sale 3 errores, esos errores son: 23, 48, 31. El programa es bastante sensillo.
Les agradeceria mucho si podrian Ayudarme

Les dejo el programa:

#include &lt;Probando entradas y salidas 16f628.h&gt;
#include &lt;16f628.h&gt;
#BYTE TRISB=0x86
#BYTE PORTB=0x06
#BYTE OPTION_REG= 0x81

void main()
{
port_B_pullups(0xFF);
bit_clear(OPTION_REG,7);
bit_set(TRISB,0);
bit_clear(TRISB,1);
bit_clear(PORTB,1);

while(TRUE)
{
if(bit_test(portb,0)==1)
bit_set(portb,1);
else
bit_clear(portb,1);

}

}
14/10/2016 #49

Avatar de roberttorres

ElElel3 dijo: Ver Mensaje
Hola soy nuevo en el foro y en el lenguaje C.
Al querer compilar el programa me sale 3 errores, esos errores son: 23, 48, 31. El programa es bastante sensillo.
Les agradeceria mucho si podrian Ayudarme
Buenas.
El error esta en la librería "Probando entradas y salidas 16f628.h", si tienes esa libreria sube tambien el codigo para poder ayudarte.
O prueba compilar de esta forma:
Código:
//#include <Probando entradas y salidas 16f628.h>
#include <16f628.h> 
#BYTE TRISB=0x86
#BYTE PORTB=0x06
#BYTE OPTION_REG= 0x81
void main()
{
port_B_pullups(0xFF);
bit_clear(OPTION_REG,7);
bit_set(TRISB,0);
bit_clear(TRISB,1);
bit_clear(PORTB,1);

while(TRUE)
{
if(bit_test(portb,0)==1) 
bit_set(portb,1);
else
bit_clear(portb,1); 

}

}
14/10/2016 #50


No te puedo creer!! era eso nomas, como al general el proyecto ya salia eso lo deje. Muchas gracias!! Saludos desde Uruguay
27/07/2017 #51


Problema compilación Pic C Compiler
Buenas. Entré por acá revisando sus entradas antes de escribirles.
Llevo un buen rato practicando e intentando hacer lo que se me ocurre y me encontré con un problema.

El programa no compila correctamente y el funcionamiento esperado no es el conseguido.
Al apretar los botones los LEDS finales no encienden de la manera que quiero.

Aquí pondré lo que me propuse realizar ( He ido avanzando desde 0 haciendo rutinas de LEDS y es por donde voy usando el mismo programa base )

El programa es el siguiente:

a) Utilizar el puerto B para rutinas de LEDS iniciales
b) Utilizar el puerto D para la parte de POTENCIA

1) Un LED azul se mantiene encendido durante todo el proceso. Él indica que el sistema está activo.
2) Un LED amarillo estará intermitente mientras transcurre un tiempo de espera.
3) Se encenderá un LED verde de aprobación.
4) Se encenderá un LED azul ( POT ON ) indicando que la parte de potencia puede ser activada.
5) Mediante un botón controlar cual de los dos LEDS Verdes será encendido. (simulando Izquierda y Derecha de un motor DC a través del PIC)

El código que hice es éste:
Código PHP:
#include <16f877a.h> // PIC a usar
#fuses hs, nowdt
#use delay(clock=20M) // Frecuencia de 20Mhz

int16 timer;

void main()
{
   
set_tris_b(0b00000000);    // Puerto B es salida   
   
set_tris_d(0b11110000);    // Puerto D 0-3 son salida y 4-7 son entrada
   
output_b(0b00000001);      // LED que muestra encendido del dispositivo
   
output_d(0b00000000);      //Puerto comienza en 0 lógico
   
timer=0;
   {
   while (
timer<5){           //Inicio de rutina
   
timer=timer+1;
      
output_b(0b01000001);
      
delay_ms(500);
      
output_b(0b00000001); 
      
delay_ms(500);                                  
   }                          
// Fin de la rutina
   
output_b(0b10000001);      // Enciende LED de aprobación
   
delay_ms(1000);            // Tiempo de espera para parte de potencia
   
output_d(0b00000001);      // Enciende LED de activación 2
   
}
        if (
input(pin_d7));     // Entrada para LED 1 mediante botón
          
output_d(0b00000101);
        if (
input(pin_d6));     // Entrada para LED 2 mediante Botón
          
output_d(0b00001001);
   } 
* Al usar ELSE después del if ( Quise mantenerlo activo y con el botón solo cambiar la dirección, en un comienzo) me daba otro error: Esperaba una expresión numérica. ¿?

*Luego quiero agregarle al problema un sensor de nivel y necesitare leer las variables, por eso también me resulta imprescindible lograr esto.

Si de alguna manera me pueden ayudar a entender este meollo, les agradecería.

Gracias, saludos y espero lograr pronto mis objetivos para compartirlos por acá para otros que tengan las mismas inquietudes que yo.

Esquema Electrónico en Proteus 8 adjunto con este mensaje.

NOTA: Tengo muchas dudas sobre el esquema eléctrico con los botones y las fuentes.
Intento usar unas flechitas y no tener que usar Vsource pero las pongo y no me hacen nada, es otra duda que me sale así.
Imágenes Adjuntas
Tipo de Archivo: png Diagrama prueba 1.png (71,3 KB (Kilobytes), 3 visitas)
27/07/2017 #52
Moderador

Avatar de D@rkbytes

Sólo veo el siguiente error:
Terminar una sentencia if con ; hará que no se ejecute.

Esto no es un error, pero es del Basic: timer = timer + 1;
En C es más sencillo realizar un incremento: timer ++;
27/07/2017 #53

Avatar de roberttorres

Buenas
Agrego algunos detalles que te faltan a tu código:
1- el bucle infinito para sensar los botones
2- también seria mas conveniente utilizar los comandos "output_high(pin_x);", "output_low(pin_x);"
3- al oprimir los botónes, el comando "output_d(0b00001001);" creara un conflicto ya que utilizas el pin d6 y d7 como entradas y con ese comando lo estas mandando a 0 lógico. Mejor utiliza los comandos del item nº2.
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.