📄 compiler.h
字号:
/*********************************************************************
*
* Compiler and hardware specific definitions
*
*********************************************************************
* FileName: Compiler.h
* Dependencies: None
* Processor: PIC18, PIC24F, PIC24H, dsPIC30F, dsPIC33F
* Complier: Microchip C18 v3.02 or higher
* Microchip C30 v2.01 or higher
* Company: Microchip Technology, Inc.
*
* Software License Agreement
*
* This software is owned by Microchip Technology Inc. ("Microchip")
* and is supplied to you for use exclusively as described in the
* associated software agreement. This software is protected by
* software and other intellectual property laws. Any use in
* violation of the software license may subject the user to criminal
* sanctions as well as civil liability. Copyright 2006 Microchip
* Technology Inc. All rights reserved.
*
* This software is provided "AS IS." MICROCHIP DISCLAIMS ALL
* WARRANTIES, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, NOT LIMITED
* TO MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
* INFRINGEMENT. Microchip shall in no event be liable for special,
* incidental, or consequential damages.
*
*
* Author Date Comment
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Nilesh Rajbharti 11/14/01 Original (Rev 1.0)
* Nilesh Rajbharti 2/9/02 Cleanup
* Nilesh Rajbharti 5/22/02 Rev 2.0 (See version.log for detail)
* Howard Schlunder 11/30/04 Added some more defines
* Howard Schlunder 6/14/06 Added hardware definitions
* Howard Schlunder 8/10/06 Added PICDEMNET, PIC18F97J60_TEST_BOARD, FS_USB hardware definitions
********************************************************************/
#ifndef COMPILER_H
#define COMPILER_H
// Clock frequency value.
// This value is used to calculate Tick Counter value
#if defined(__18CXX)
// All PIC18 processors
#include <p18cxxx.h>
#if defined(PICDEMNET2)
#define CLOCK_FREQ (41666667) // Hz
#elif defined(FS_USB)
#define CLOCK_FREQ (48000000) // Hz
#elif defined(PICDEMNET)
//#define CLOCK_FREQ (40000000) // Hz
#define CLOCK_FREQ (19660800) // Hz
#else
#define CLOCK_FREQ (40000000) // Hz
#endif
#define INSTR_FREQ (CLOCK_FREQ/4)
#elif defined(__PIC24F__)
// PIC24F processor
#include <p24Fxxxx.h>
#define CLOCK_FREQ (32000000) // Hz
#define INSTR_FREQ (CLOCK_FREQ/2)
#elif defined(__PIC24H__)
// PIC24H processor
#include <p24Hxxxx.h>
#define CLOCK_FREQ (80000000) // Hz
#define INSTR_FREQ (CLOCK_FREQ/2)
#elif defined(__dsPIC33F__)
// dsPIC33F processor
#include <p33Fxxxx.h>
#define CLOCK_FREQ (80000000) // Hz
#define INSTR_FREQ (CLOCK_FREQ/2)
#elif defined(__dsPIC30F__)
// dsPIC30F processor
#include <p30fxxxx.h>
#define CLOCK_FREQ (117920000) // Hz
#define INSTR_FREQ (CLOCK_FREQ/4)
#elif defined(HI_TECH_C) // Hi Tech PICC18 compiler
#define __18CXX
#include <pic18.h>
#define CLOCK_FREQ (40000000) // Hz
#define INSTR_FREQ (CLOCK_FREQ/4)
#else
#error Unknown processor. See Compiler.h
#endif
// Hardware mappings
#if defined(HPC_EXPLORER) && !defined(HI_TECH_C)
// PICDEM HPC Explorer + Ethernet PICtail
// I/O pins
#define LED0_TRIS (TRISDbits.TRISD0)
#define LED0_IO (PORTDbits.RD0)
#define LED1_TRIS (TRISDbits.TRISD1)
#define LED1_IO (PORTDbits.RD1)
#define LED2_TRIS (TRISDbits.TRISD2)
#define LED2_IO (PORTDbits.RD2)
#define LED3_TRIS (TRISDbits.TRISD3)
#define LED3_IO (PORTDbits.RD3)
#define LED4_TRIS (TRISDbits.TRISD4)
#define LED4_IO (PORTDbits.RD4)
#define LED5_TRIS (TRISDbits.TRISD5)
#define LED5_IO (PORTDbits.RD5)
#define LED6_TRIS (TRISDbits.TRISD6)
#define LED6_IO (PORTDbits.RD6)
#define LED7_TRIS (TRISDbits.TRISD7)
#define LED7_IO (PORTDbits.RD7)
#define LED_IO (*((volatile unsigned char*)(&PORTD)))
#define BUTTON0_TRIS (TRISBbits.TRISB0)
#define BUTTON0_IO (PORTBbits.RB0)
#define BUTTON1_TRIS (TRISBbits.TRISB0) // No Button1 on this board, remap to Button0
#define BUTTON1_IO (PORTBbits.RB0)
#define BUTTON2_TRIS (TRISBbits.TRISB0) // No Button2 on this board, remap to Button0
#define BUTTON2_IO (PORTBbits.RB0)
#define BUTTON3_TRIS (TRISBbits.TRISB0) // No Button3 on this board, remap to Button0
#define BUTTON3_IO (PORTBbits.RB0)
// ENC28J60 I/O pins
#define ENC_RST_TRIS (TRISBbits.TRISB5)
#define ENC_RST_IO (LATBbits.LATB5)
#define ENC_CS_TRIS (TRISBbits.TRISB3)
#define ENC_CS_IO (LATBbits.LATB3)
#define ENC_SCK_TRIS (TRISCbits.TRISC3)
#define ENC_SDI_TRIS (TRISCbits.TRISC4)
#define ENC_SDO_TRIS (TRISCbits.TRISC5)
#define ENC_SPI_IF (PIR1bits.SSPIF)
#define ENC_SSPBUF (SSPBUF)
#define ENC_SPISTAT (SSP1STAT)
#define ENC_SPISTATbits (SSP1STATbits)
#define ENC_SPICON1 (SSP1CON1)
#define ENC_SPICON1bits (SSP1CON1bits)
#define ENC_SPICON2 (SSP1CON2)
// 25LC256 I/O pins
#define EEPROM_CS_TRIS (TRISBbits.TRISB4)
#define EEPROM_CS_IO (LATBbits.LATB4)
#define EEPROM_SCK_TRIS (TRISCbits.TRISC3)
#define EEPROM_SDI_TRIS (TRISCbits.TRISC4)
#define EEPROM_SDO_TRIS (TRISCbits.TRISC5)
#define EEPROM_SPI_IF (PIR1bits.SSPIF)
#define EEPROM_SSPBUF (SSPBUF)
#define EEPROM_SPICON1 (SSP1CON1)
#define EEPROM_SPICON1bits (SSP1CON1bits)
#define EEPROM_SPICON2 (SSP1CON2)
#define EEPROM_SPISTAT (SSP1STAT)
#define EEPROM_SPISTATbits (SSP1STATbits)
#elif defined(HPC_EXPLORER) && defined(HI_TECH_C)
// PICDEM HPC Explorer + Ethernet PICtail
typedef struct
{
unsigned char BF:1;
unsigned char UA:1;
unsigned char R_W:1;
unsigned char S:1;
unsigned char P:1;
unsigned char D_A:1;
unsigned char CKE:1;
unsigned char SMP:1;
} SSPSTATbits;
typedef struct
{
unsigned char RBIF:1;
unsigned char INT0IF:1;
unsigned char TMR0IF:1;
unsigned char RBIE:1;
unsigned char INT0IE:1;
unsigned char TMR0IE:1;
unsigned char GIEL:1;
unsigned char GIEH:1;
} INTCONbits;
typedef struct
{
unsigned char RBIP:1;
unsigned char INT3IP:1;
unsigned char TMR0IP:1;
unsigned char INTEDG3:1;
unsigned char INTEDG2:1;
unsigned char INTEDG1:1;
unsigned char INTEDG0:1;
unsigned char RBPU:1;
} INTCON2bits;
typedef struct
{
unsigned char ADON:1;
unsigned char GO:1;
unsigned char CHS0:1;
unsigned char CHS1:1;
unsigned char CHS2:1;
unsigned char CHS3:1;
} ADCON0bits;
typedef struct
{
unsigned char ADCS0:1;
unsigned char ADCS1:1;
unsigned char ADCS2:1;
unsigned char ACQT0:1;
unsigned char ACQT1:1;
unsigned char ACQT2:1;
unsigned char :1;
unsigned char ADFM:1;
} ADCON2bits;
typedef struct
{
unsigned char TMR1IF:1;
unsigned char TMR2IF:1;
unsigned char CCP1IF:1;
unsigned char SSPIF:1;
unsigned char TXIF:1;
unsigned char RCIF:1;
unsigned char ADIF:1;
unsigned char PSPIF:1;
} PIR1bits;
typedef struct
{
unsigned char TMR1IE:1;
unsigned char TMR2IE:1;
unsigned char CCP1IE:1;
unsigned char SSPIE:1;
unsigned char TXIE:1;
unsigned char RCIE:1;
unsigned char ADIE:1;
unsigned char PSPIE:1;
} PIE1bits;
typedef struct
{
unsigned char T0PS0:1;
unsigned char T0PS1:1;
unsigned char T0PS2:1;
unsigned char PSA:1;
unsigned char T0SE:1;
unsigned char T0CS:1;
unsigned char T08BIT:1;
unsigned char TMR0ON:1;
} T0CONbits;
typedef struct
{
unsigned char TX9D:1;
unsigned char TRMT:1;
unsigned char BRGH:1;
unsigned char SENDB:1;
unsigned char SYNC:1;
unsigned char TXEN:1;
unsigned char TX9:1;
unsigned char CSRC:1;
} TXSTAbits;
typedef struct
{
unsigned char RX9D:1;
unsigned char OERR:1;
unsigned char FERR:1;
unsigned char ADDEN:1;
unsigned char CREN:1;
unsigned char SREN:1;
unsigned char RX9:1;
unsigned char SPEN:1;
} RCSTAbits;
#define TXSTA TXSTA1
#define RCSTA RCSTA1
#define SPBRG SPBRG1
#define RCREG RCREG1
#define TXREG TXREG1
// I/O pins
#define LED0_TRIS (TRISD0)
#define LED0_IO (RD0)
#define LED1_TRIS (TRISD1)
#define LED1_IO (RD1)
#define LED2_TRIS (TRISD2)
#define LED2_IO (RD2)
#define LED3_TRIS (TRISD3)
#define LED3_IO (RD3)
#define LED4_TRIS (TRISD4)
#define LED4_IO (RD4)
#define LED5_TRIS (TRISD5)
#define LED5_IO (RD5)
#define LED6_TRIS (TRISD6)
#define LED6_IO (RD6)
#define LED7_TRIS (TRISD7)
#define LED7_IO (RD7)
#define LED_IO (*((volatile unsigned char*)(&PORTD)))
#define BUTTON0_TRIS (TRISB0)
#define BUTTON0_IO (RB0)
#define BUTTON1_TRIS (TRISB0) // No Button1 on this board, remap to Button0
#define BUTTON1_IO (RB0)
#define BUTTON2_TRIS (TRISB0) // No Button2 on this board, remap to Button0
#define BUTTON2_IO (RB0)
#define BUTTON3_TRIS (TRISB0) // No Button3 on this board, remap to Button0
#define BUTTON3_IO (RB0)
// ENC28J60 I/O pins
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -