Files

Compiler.h
/********************************************************************* * * Compiler and hardware specific definitions * ********************************************************************* * FileName: Compiler.h * Dependencies: None * Processor: PIC18, PIC24F, PIC24H, PIC24E, dsPIC30F, dsPIC33F, * dsPIC33E, PIC32 * Compiler: Microchip C32 v1.00 or higher * Microchip C30 v3.01 or higher * Microchip C18 v3.13 or higher * HI-TECH PICC-18 PRO 9.63 or higher * Company: Microchip Technology, Inc. * * Software License Agreement * * Copyright (C) 2002-2010 Microchip Technology Inc. All rights * reserved. * * Microchip licenses to you the right to use, modify, copy, and * distribute: * (i) the Software when embedded on a Microchip microcontroller or * digital signal controller product ("Device") which is * integrated into Licensee's product; or * (ii) ONLY the Software driver source files ENC28J60.c and * ENC28J60.h ported to a non-Microchip device used in * conjunction with a Microchip ethernet controller for the * sole purpose of interfacing with the ethernet controller. * * You should refer to the license agreement accompanying this * Software for additional information regarding your rights and * obligations. * * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT * LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL * MICROCHIP BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF * PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS * BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE * THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER * SIMILAR COSTS, WHETHER ASSERTED ON THE BASIS OF CONTRACT, TORT * (INCLUDING NEGLIGENCE), BREACH OF WARRANTY, OR OTHERWISE. * * * Date Comment *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * 10/03/2006 Original, copied from old Compiler.h * 11/07/2007 Reorganized and simplified * 03/31/2010 Removed dependency on WORD and DWORD typedefs * 04/14/2010 Added defines to uniquely identify each compiler ********************************************************************/ #ifndef __COMPILER_H #define __COMPILER_H // Include proper device header file #if defined(__18CXX) && !defined(HI_TECH_C) // PIC18 processor with Microchip C18 compiler #define COMPILER_MPLAB_C18 #include <p18cxxx.h> #elif defined(__PICC18__) && defined(HI_TECH_C) // PIC18 processor with (Microchip) HI-TECH PICC-18 compiler #if !defined(__18CXX) #define __18CXX #endif #define COMPILER_HITECH_PICC18 #include <htc.h> #elif (defined(__PIC24F__) || defined(__PIC24FK__)) && defined(__C30__) // Microchip C30 compiler // PIC24F processor #define COMPILER_MPLAB_C30 #include <p24Fxxxx.h> #elif defined(__PIC24H__) && defined(__C30__) // Microchip C30 compiler // PIC24H processor #define COMPILER_MPLAB_C30 #include <p24Hxxxx.h> #elif defined(__PIC24E__) && defined(__C30__) // Microchip C30 compiler // PIC24E processor #define COMPILER_MPLAB_C30 #include <p24Exxxx.h> #elif defined(__dsPIC33F__) && defined(__C30__) // Microchip C30 compiler // dsPIC33F processor #define COMPILER_MPLAB_C30 #include <p33Fxxxx.h> #elif defined(__dsPIC33E__) && defined(__C30__) // Microchip C30 compiler // dsPIC33E processor #define COMPILER_MPLAB_C30 #include <p33Exxxx.h> #elif defined(__dsPIC30F__) && defined(__C30__) // Microchip C30 compiler // dsPIC30F processor #define COMPILER_MPLAB_C30 #include <p30fxxxx.h> #elif defined(__C30__) // Microchip C30 compiler, but targeting "generic-16bit" processor. #define COMPILER_MPLAB_C30 #include <p30sim.h> // Define some useful inline assembly functions which are normally in the // processor header files, but absent from the generic p30sim.h file. #if !defined(Nop) #define Nop() __builtin_nop() #define ClrWdt() {__asm__ volatile ("clrwdt");} #define Sleep() {__asm__ volatile ("pwrsav #0");} #define Idle() {__asm__ volatile ("pwrsav #1");} #endif #elif defined(__PIC32MX__) // Microchip C32 compiler #if !defined(__C32__) #define __C32__ #endif #define COMPILER_MPLAB_C32 #include <p32xxxx.h> #include <plib.h> #else #error Unknown processor or compiler. See Compiler.h #endif #include <stdio.h> #include <stdlib.h> #include <string.h> // Base RAM and ROM pointer types for given architecture #if defined(__PIC32MX__) #define PTR_BASE unsigned long #define ROM_PTR_BASE unsigned long #elif defined(__C30__) #define PTR_BASE unsigned short #define ROM_PTR_BASE unsigned short #elif defined(COMPILER_MPLAB_C18) #define PTR_BASE unsigned short #define ROM_PTR_BASE unsigned short long #elif defined(COMPILER_HITECH_PICC18) #define PTR_BASE unsigned short #define ROM_PTR_BASE unsigned long #endif // Definitions that apply to all except Microchip MPLAB C Compiler for PIC18 MCUs (C18) #if !defined(COMPILER_MPLAB_C18) #define memcmppgm2ram(a,b,c) memcmp(a,b,c) #define strcmppgm2ram(a,b) strcmp(a,b) #define memcpypgm2ram(a,b,c) memcpy(a,b,c) #define strcpypgm2ram(a,b) strcpy(a,b) #define strncpypgm2ram(a,b,c) strncpy(a,b,c) #define strstrrampgm(a,b) strstr(a,b) #define strlenpgm(a) strlen(a) #define strchrpgm(a,b) strchr(a,b) #define strcatpgm2ram(a,b) strcat(a,b) #endif // Definitions that apply to all 8-bit products // (PIC18) #if defined(__18CXX) #define __attribute__(a) #define FAR far // Microchip C18 specific defines #if defined(COMPILER_MPLAB_C18) #define ROM rom #endif // HI TECH PICC-18 specific defines #if defined(COMPILER_HITECH_PICC18) #define ROM const #define rom #define Nop() asm("NOP"); #define ClrWdt() asm("CLRWDT"); #define Reset() asm("RESET"); #endif // Definitions that apply to all 16-bit and 32-bit products // (PIC24F, PIC24H, dsPIC30F, dsPIC33F, and PIC32) #else #define ROM const // 16-bit specific defines (PIC24F, PIC24H, dsPIC30F, dsPIC33F) #if defined(__C30__) #define Reset() asm("reset") #define FAR __attribute__((far)) #endif // 32-bit specific defines (PIC32) #if defined(__PIC32MX__) #define persistent #define far #define FAR #define Reset() SoftReset() #define ClrWdt() (WDTCONSET = _WDTCON_WDTCLR_MASK) // MPLAB C Compiler for PIC32 MCUs version 1.04 and below don't have a // Nop() function. However, version 1.05 has Nop() declared as _nop(). #if !defined(Nop) && (__C32_VERSION__ <= 104) #define Nop() asm("nop") #endif #endif #endif #endif
Report a bug