Problema con programacion modular en CCS

Hola gente.
Me estoy iniciando en la programcion de los pics, tengo algunos conocimeintos sobre programacion en C pero me surgen inconvenientes a la hora de aplicarla a los pics.

Bueno les comento que estoy tratando de hacer los primeros programitas con el compilador CCS y luego los simulo en Proteus.

Pero tengo el problema que al separar el programa en modulos no puedo generar el archivo HEX.

Estoy tratando de hacer un programa que al precionar un boton encienda una baliza de leds, mi problema no es el hecho de hacer el programa, si no dividir el programa en modulos, el cual quedara algo como esto:

main.c
Funcion.h
Encender.c

En el main lo pasos a seguir serian:
*Configuracion del dispositivo(pic)
*Incluir el header Funcion.h
*Bucle infinito
*Testeo del estado del puerto donde se conecta el pulsador.
*Si se pulso, llamar a la funcion Encender (la cual se encarga de alternar el encendido de los leds, supongamos unas 10 veces)

Encender.c como dije es la funcion que produce la altenencia del encendido de los leds.

Funcion.h seria el header para el o los prototipos de las funciones.

En C se veria algo como esto:

Código:
#ifndef _FUNCION_H
      #define _FUNCION_H
      void Encender();
      .....
      ....
#endif
En C esto lo hago normalmente, pero no encuentro como implementarlo en el compilador CCS. Es para no tener que meter todas las funciones en el mismo archivo .c del main, así poder tener las funciones en modulos y el programa un poco mas ordenado.


Bueno espero que se entienda mi duda, restenle importancia a lo que hace el programa (pongo lo de la baliza como un ejemplo sencillo), si no lo que me interesa mas es si alguien conoce como divir el programa en módulos y que el CCS genere el hex.

Si alguien tiene algun ejemplo que se haya hecho esto (programación modular) seria genial, por que no encuentro info al respecto.

Saludos y Gracias!!
 
De echo, tal y como lo dices, si funciona.
Claro que todo debe de estar en la misma carpeta o si están distintas le indicas correctamente la dirección.

Explicarías más sobre los errores que te aparecen al compilar.

PD: Para crear un programa usa el PIC Wizard.

Saludos
 
El codigo es algo asi:

main.c

Código:
#include "main.h"
#include "Funcion.h"

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL);setup_wdt(WDT_18MS);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   // TODO: USER CODE!!
   set_tris_b(0);
   set_tris_a(1);
   while (1)
   {
      If (input(PIN_A1)==0)
      {
            Encender();
      }

   }
}
Funcion.h

Código:
#ifndef _FUNCION_H
   #define _FUNCION_H
   Void Encender();
#endif
Encender.c

Código:
#include "main.h"

void Encender()
{
int i;
   for (i=0; i<10; i++)
   {
      output_high(PIN_B1);
      output_low(PIN_B2);
      delay_ms(1000);
      output_low(PIN_B1);
      output_high(PIN_B2);
      delay_ms(1000);
      }
      return;
}
Los otros archivos son los que genera el compilador a través del Pic wizard (main.h) y los headers del pic. (16f876).

Aca unos pantallazos de como se ve y los errores.
http://img42.imageshack.us/img42/1293/pantallazo1vl.png
http://img230.imageshack.us/img230/8711/pantallazo2y.png

Gracias por la ayuda!!
 
Última edición:
creo que ya se debe a que está mal instalado el CCS que tienes, ya que copié el código que pones y compila perfecto... la que uso es la CCS v4.104... ahora que me fijo mejor, no será porque estás usando el VirtualBox?

PD: no pongas return;, no es necesario.

Edit...
Si vas a usar de todas formas el CCS, creo que serviría si vieras esto:
Compilador CCS con wine
Linux Install Instructions
 
Última edición:
Atrás
Arriba