View previous topic :: View next topic |
Author |
Message |
ljmnunes
Joined: 02 Sep 2004 Posts: 13 Location: Brazil
|
Multiple conditional compile |
Posted: Fri Jun 13, 2008 1:32 pm |
|
|
Hello!
After many years programming PICs I need to join four source codes in one to equalize versions.
I have four separate sources with the same working core in four hardware, with tree PICs: 16F873A, 16F876A and 18F252. The main differences are in I/O numbers and types.
Every time I make a change, I wrote it in four different files to test and debug it four times!...
So, I want to use conditional compile, but is a bit complex because I´ll need many #ifdef .
See this example:
Code: | #ifdef TC1206
#include <16F873A.h>
#include "TControl_1206_Defines.h"
#include "PIC16F873_registers.h"
#endif
#ifdef TC1200
#include <16F873A.h>
#include "TControl_1200_Defines.h"
#include "PIC16F873_registers.h"
#endif
#ifdef TC1107
#include <16F876.h>
#include "PIC16F876_registers.h"
#include "TControl_1107_Defines.h"
#endif
#ifdef TC1107A
#include <18F252.h>
#include "PIC18F252_registers.h"
#include "TControl_1107_Defines.h"
#endif
|
Can I this code instead?
Code: |
#ifdef (TC1107 + TC1107A) // <<<<<<< To use with TC1107 e and TC1107A
#include "TControl_1107_Defines.h"
#endif
#ifdef TC1107
#include <16F876.h>
#include "PIC16F876_registers.h"
#endif
#ifdef TC1107A
#include <18F252.h>
#include "PIC18F252_registers.h"
#endif
|
If isn´t possible, there are an alternative?
Thanks in advance.
Laercio |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Jun 13, 2008 4:33 pm |
|
|
Use the #if directive, and then use logical operators inside the expression.
Example:
Code: | #include <18F452.h>
#fuses XT,NOWDT,PUT,BROWNOUT,NOLVP
#use delay(clock=4000000)
#define TC1107 TRUE
#define TC1107A FALSE
// If either one of the "TC1107" values is true, then #include the file.
#if (TC1107 || TC1107A)
#include "TControl_1107_Defines.h"
#endif
//=============================
void main()
{
while(1);
} |
|
|
|
ljmnunes
Joined: 02 Sep 2004 Posts: 13 Location: Brazil
|
|
Posted: Fri Jun 13, 2008 5:35 pm |
|
|
Thanks,
I´ll try it tomorrow.
[]s |
|
|
|