Autor Tema: Duda programacion en lenguaje C en compilador ccs  (Leído 2664 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Duda programacion en lenguaje C en compilador ccs
« en: 09 de Abril de 2009, 12:52:18 »
Hola,soy nuevo en esto de programacion en C y he probado de escribir un pequeño codigo en dicho lenguaje,despues de varios errores consegui compilarlo pero aun tengo algunos warnings y no se el porque alguien puede decirme donde fallo.
Otra pregunta: ¿esta bien el codigo o deberia ser mas corto?

#device PIC16F873
#use delay(clock=20000000,RESTART_WDT)
#byte port_a=5
#byte port_b=6
#byte trisa=0x85
#byte trisb=0x86
#define PIN_A3
#define RTCC_EXT_H_TO_L

main()
 {
   port_b=0;
   set_tris_a(0x1F);
   set_tris_b(0x00);
   
   while(1)
   {
      while(PIN_A3 43);
      set_rtcc(0);
      setup_counters(RTCC_EXT_H_TO_L 48,port_a&0x07);
      port_b=get_rtcc();
   }
 }

Gracias de antemano. :5]
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Duda programacion en lenguaje C en compilador ccs
« Respuesta #1 en: 09 de Abril de 2009, 13:23:38 »
¿Qué quieres que haga el programa y cuáles son esos warnings que te han salido?

Así a bote pronto veo que haces un setup_counters dentro de un bucle, cuando lo lógico es hacerlo fuera, antes de entrar al mismo. Y no entiendo la condición de prueba del While

Pero será necesario que respondas a las preguntas iniciales para poder ayudarte.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Duda programacion en lenguaje C en compilador ccs
« Respuesta #2 en: 10 de Abril de 2009, 07:45:04 »
Hola,lo primero dar las gracias a la gente del foro (en general) para no ofender a nadie por la rapidez de las respuestas,y segundo por no tratarnos como tontos a los que empezamos cosa habitual en otros foros por lo que he estado viendo siempre como invitado,ya que he visto que si no estas a su nivel pasan de ti.
Y ahora a lo que ibamos:
Los warnings que me da la compilacion son los siguientes.

>>> Warning 203 "Predator.c" Line 17(1,1): Condition always TRUE
>>> Warning 203 "Predator.c" Line 18(1,1): Condition always TRUE
>>> Warning 208 "Predator.c" Line 10(1,5): Function not void and does not return a value  main
      Memory usage:   ROM=1%      RAM=4% - 4%
      0 Errors,  3 Warnings.

El programa en si es sencillo, se trata de un sensor conectado al pin RA4 para generar un pulso cada vez que pase un objeto entre el emisor y el receptor,el TMR0 ira contando los pulsos dependiendo del valor del preescaler,el cual lo puedo seleccionar con los interruptores conectados en RA0-RA2.
El resultado del contaje se visualiza en binario por el PORTB,despues de haberlo multiplicado por el valor del preescaler para poder determinar el numero de pulsos,y referente a la condicion de prueba del While es porque cada vez que le doy al interruptor conectado en RA3 y lo pongo a 1 se resetea el contador.
PD: El programa no es del todo mio sino que he estado cogiendo un trocito de aqui y otro de alla y los he ido juntando (todavia no soy tan bueno)  :mrgreen:
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Duda programacion en lenguaje C en compilador ccs
« Respuesta #3 en: 10 de Abril de 2009, 08:47:37 »
Vayamos por partes.
Esos warnings no tienen importancia. El último de ellos lo puedes eliminar tan fácilmente como poner la cláusula "void" delante de main()

Para hacer tu programa lo ideal es usar la interrupción externa, donde conectarás el sensor. Esta interrupción se lanzará cada vez que haya un objeto delante, enviará al PORTB el resultado del Timer y lo pondrá a 0.

Si quieres ver ejemplos que te sirvan de ayuda echa un vistazo al ex_freq.c del CCS.