📄 compiler.h
字号:
#define UARTRX_IO (PORTFbits.RF4)
// ENC28J60 I/O pins
#define ENC_RST_TRIS (TRISDbits.TRISD15) // Not connected by default
#define ENC_RST_IO (PORTDbits.RD15)
#define ENC_CS_TRIS (TRISDbits.TRISD14)
#define ENC_CS_IO (PORTDbits.RD14)
#define ENC_SCK_TRIS (TRISFbits.TRISF6)
#define ENC_SDI_TRIS (TRISFbits.TRISF7)
#define ENC_SDO_TRIS (TRISFbits.TRISF8)
#define ENC_SPI_IF (IFS0bits.SPI1IF)
#define ENC_SSPBUF (SPI1BUF)
#define ENC_SPISTAT (SPI1STAT)
#define ENC_SPISTATbits (SPI1STATbits)
#define ENC_SPICON1 (SPI1CON1)
#define ENC_SPICON1bits (SPI1CON1bits)
#define ENC_SPICON2 (SPI1CON2)
// 25LC256 I/O pins
#define EEPROM_CS_TRIS (TRISDbits.TRISD12)
#define EEPROM_CS_IO (PORTDbits.RD12)
#define EEPROM_SCK_TRIS (TRISGbits.TRISG6)
#define EEPROM_SDI_TRIS (TRISGbits.TRISG7)
#define EEPROM_SDO_TRIS (TRISGbits.TRISG8)
#define EEPROM_SPI_IF (IFS2bits.SPI2IF)
#define EEPROM_SSPBUF (SPI2BUF)
#define EEPROM_SPICON1 (SPI2CON1)
#define EEPROM_SPICON1bits (SPI2CON1bits)
#define EEPROM_SPICON2 (SPI2CON2)
#define EEPROM_SPISTAT (SPI2STAT)
#define EEPROM_SPISTATbits (SPI2STATbits)
// LCD Module I/O pins
typedef struct
{
unsigned char data : 8; // Bits 0 through 7
unsigned char : 8; // Bits 8 through 15
} LCD_DATA;
#define LCD_DATA_TRIS (((LCD_DATA*)&TRISE)->data)
#define LCD_DATA_IO (((LCD_DATA*)&LATE)->data)
#define LCD_RD_WR_TRIS (TRISDbits.TRISD5)
#define LCD_RD_WR_IO (LATDbits.LATD5)
#define LCD_RS_TRIS (TRISBbits.TRISB15)
#define LCD_RS_IO (LATBbits.LATB15)
#define LCD_E_TRIS (TRISDbits.TRISD4)
#define LCD_E_IO (LATDbits.LATD4)
#elif defined(DSPICDEM11)
// dsPICDEM 1.1 Development Board + Ethernet PICtail airwired. There
// is no PICtail header on this development board. The following
// airwires must be made:
// 1. dsPICDEM GND <-> PICtail GND (PICtail pin 27)
// 2. dsPICDEM Vdd <- PICtail VPIC (PICtail pin 25)
// 3. dsPICDEM RG2 -> PICtail ENC28J60 CS (PICtail pin 22)
// 4. dsPICDEM RF6 -> PICtail SCK (PICtail pin 11)
// 5. dsPICDEM RF7 <- PICtail SDI (PICtail pin 9)
// 6. dsPICDEM RF8 -> PICtail SDO (PICtail pin 7)
// 7. dsPICDEM RG3 -> PICtail 25LC256 CS (PICtail pin 20)
#define LED0_TRIS (TRISDbits.TRISD3) // Ref LED4
#define LED0_IO (PORTDbits.RD3)
#define LED1_TRIS (TRISDbits.TRISD2) // Ref LED3
#define LED1_IO (PORTDbits.RD2)
#define LED2_TRIS (TRISDbits.TRISD1) // Ref LED2
#define LED2_IO (PORTDbits.RD1)
#define LED3_TRIS (TRISDbits.TRISD0) // Ref LED1
#define LED3_IO (PORTDbits.RD0)
#define LED4_TRIS (TRISDbits.TRISD3) // No LED, Remapped to Ref LED4
#define LED4_IO (PORTDbits.RD3)
#define LED5_TRIS (TRISDbits.TRISD2) // No LED, Remapped to Ref LED3
#define LED5_IO (PORTDbits.RD2)
#define LED6_TRIS (TRISDbits.TRISD1) // No LED, Remapped to Ref LED2
#define LED6_IO (PORTDbits.RD1)
#define LED7_TRIS (TRISDbits.TRISD0) // No LED, Remapped to Ref LED1
#define LED7_IO (PORTDbits.RD0)
#define BUTTON0_TRIS (TRISAbits.TRISA15) // Ref SW4
#define BUTTON0_IO (PORTAbits.RA15)
#define BUTTON1_TRIS (TRISAbits.TRISA14) // Ref SW3
#define BUTTON1_IO (PORTAbits.RA14)
#define BUTTON2_TRIS (TRISAbits.TRISA13) // Ref SW2
#define BUTTON2_IO (PORTAbits.RA13)
#define BUTTON3_TRIS (TRISAbits.TRISA12) // Ref SW1
#define BUTTON3_IO (PORTAbits.RA12)
#define UARTTX_TRIS (TRISFbits.TRISF3)
#define UARTTX_IO (PORTFbits.RF3)
#define UARTRX_TRIS (TRISFbits.TRISF2)
#define UARTRX_IO (PORTFbits.RF2)
// ENC28J60 I/O pins
#define ENC_RST_TRIS (0) // Not connected
#define ENC_RST_IO (0)
#define ENC_CS_TRIS (TRISGbits.TRISG2) // User must airwire this
#define ENC_CS_IO (PORTGbits.RG2)
#define ENC_SCK_TRIS (TRISFbits.TRISF6) // User must airwire this
#define ENC_SDI_TRIS (TRISFbits.TRISF7) // User must airwire this
#define ENC_SDO_TRIS (TRISFbits.TRISF8) // User must airwire this
#define ENC_SPI_IF (IFS0bits.SPI1IF)
#define ENC_SSPBUF (SPI1BUF)
#define ENC_SPICON1 (SPI1CON)
#define ENC_SPICON1bits (SPI1CONbits)
#define ENC_SPICON2 (SPI1BUF) // SPI1CON2 doesn't exist, remap to unimportant register
#define ENC_SPISTAT (SPI1STAT)
#define ENC_SPISTATbits (SPI1STATbits)
// 25LC256 I/O pins
#define EEPROM_CS_TRIS (TRISGbits.TRISG3) // User must airwire this
#define EEPROM_CS_IO (PORTGbits.RG3)
#define EEPROM_SCK_TRIS (TRISGbits.TRISG6)
#define EEPROM_SDI_TRIS (TRISGbits.TRISG7)
#define EEPROM_SDO_TRIS (TRISGbits.TRISG8)
#define EEPROM_SPI_IF (IFS0bits.SPI1IF)
#define EEPROM_SSPBUF (SPI1BUF)
#define EEPROM_SPICON1 (SPI1CON)
#define EEPROM_SPICON1bits (SPI1CONbits)
#define EEPROM_SPICON2 (SPI1BUF) // SPI1CON2 doesn't exist, remap to unimportant register
#define EEPROM_SPISTAT (SPI1STAT)
#define EEPROM_SPISTATbits (SPI1STATbits)
// SI3000 codec pins
#define CODEC_RST_TRIS (TRISFbits.TRISF6)
#define CODEC_RST_IO (PORTFbits.RF6)
// PIC18F252 LCD Controller
#define LCDCTRL_CS_TRIS (TRISGbits.TRISG9)
#define LCDCTRL_CS_IO (PORTGbits.RG9)
#elif defined(PICDEMNET2)
// PICDEM.net 2 (PIC18F97J60 + ENC28J60)
// I/O pins
#define LED0_TRIS (TRISJbits.TRISJ0)
#define LED0_IO (PORTJbits.RJ0)
#define LED1_TRIS (TRISJbits.TRISJ1)
#define LED1_IO (PORTJbits.RJ1)
#define LED2_TRIS (TRISJbits.TRISJ2)
#define LED2_IO (PORTJbits.RJ2)
#define LED3_TRIS (TRISJbits.TRISJ3)
#define LED3_IO (PORTJbits.RJ3)
#define LED4_TRIS (TRISJbits.TRISJ4)
#define LED4_IO (PORTJbits.RJ4)
#define LED5_TRIS (TRISJbits.TRISJ5)
#define LED5_IO (PORTJbits.RJ5)
#define LED6_TRIS (TRISJbits.TRISJ6)
#define LED6_IO (PORTJbits.RJ6)
#define LED7_TRIS (TRISJbits.TRISJ7)
#define LED7_IO (PORTJbits.RJ7)
#define LED_IO (*((volatile unsigned char*)(&PORTJ)))
#define BUTTON0_TRIS (TRISBbits.TRISB3)
#define BUTTON0_IO (PORTBbits.RB3)
#define BUTTON1_TRIS (TRISBbits.TRISB2)
#define BUTTON1_IO (PORTBbits.RB2)
#define BUTTON2_TRIS (TRISBbits.TRISB1)
#define BUTTON2_IO (PORTBbits.RB1)
#define BUTTON3_TRIS (TRISBbits.TRISB0)
#define BUTTON3_IO (PORTBbits.RB0)
// ENC28J60 I/O pins
#define ENC_RST_TRIS (TRISDbits.TRISD2) // Not connected by default
#define ENC_RST_IO (LATDbits.LATD2)
#define ENC_CS_TRIS (TRISDbits.TRISD3)
#define ENC_CS_IO (LATDbits.LATD3)
#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 (SSP1BUF)
#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 (TRISDbits.TRISD7)
#define EEPROM_CS_IO (LATDbits.LATD7)
#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)
#define LCD_DATA_TRIS (TRISE)
#define LCD_DATA_IO (LATE)
#define LCD_RD_WR_TRIS (TRISHbits.TRISH1)
#define LCD_RD_WR_IO (LATHbits.LATH1)
#define LCD_RS_TRIS (TRISHbits.TRISH2)
#define LCD_RS_IO (LATHbits.LATH2)
#define LCD_E_TRIS (TRISHbits.TRISH0)
#define LCD_E_IO (LATHbits.LATH0)
#elif defined(PIC18F97J60_TEST_BOARD)
// PIC18F97J60 Test board for early Adopters and beta customers
// 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.TRISB3)
#define BUTTON0_IO (PORTBbits.RB3)
#define BUTTON1_TRIS (TRISBbits.TRISB2)
#define BUTTON1_IO (PORTBbits.RB2)
#define BUTTON2_TRIS (TRISBbits.TRISB1)
#define BUTTON2_IO (PORTBbits.RB1)
#define BUTTON3_TRIS (TRISBbits.TRISB0)
#define BUTTON3_IO (PORTBbits.RB0)
// 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(YOUR_BOARD)
// Define your own board hardware profile here
#endif
#if defined(DEBUG)
#define DebugPrint(a) {putrsUART(a);}
#else
#define DebugPrint(a) {}
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef __C30__
#include <stdlib.h>
#endif
#if defined(__18CXX) && !defined(HI_TECH_C)
#define ROM rom
#define strcpypgm2ram(a, b) strcpypgm2ram(a,(far rom char*)b)
#elif defined(__18CXX) && defined(HI_TECH_C)
#define ROM const
#define rom
#define Nop() asm("NOP");
#define Reset() asm("RESET");
#define memcmppgm2ram(a,b,c) memcmp(a,b,c)
#define memcpypgm2ram(a,b,c) memcpy(a,b,c)
#define strcpypgm2ram(a, b) strcpy(a,b)
#define strcpypgm2ram(a, b) strcpy(a,b)
#endif
#if defined(__18CXX)
#define __attribute__(a)
#define BusyUART() BusyUSART()
#define CloseUART() CloseUSART()
#define ConfigIntUART(a) ConfigIntUSART(a)
#define DataRdyUART() DataRdyUSART()
#define OpenUART(a,b,c) OpenUSART(a,b,c)
#define ReadUART() ReadUSART()
#define WriteUART(a) WriteUSART(a)
#define getsUART(a,b,c) getsUSART(b,a)
#define putsUART(a) putsUSART(a)
#define getcUART() ReadUSART()
#define putcUART(a) WriteUSART(a)
#define putrsUART(a) putrsUSART((far rom char*)a)
#if defined(__18F8720) || defined(__18F87J10) || defined(__18F97J60)
#define TXSTAbits TXSTA1bits
#define TXREG TXREG1
#define TXSTA TXSTA1
#define RCSTA RCSTA1
#define SPBRG SPBRG1
#define RCREG RCREG1
#define SPICON SSP1CON1
#define SPISTATbits SPI1STATbits
#endif
#elif defined(__C30__)
#define ROM const
#define BusyUART() BusyUART2()
#define CloseUART() CloseUART2()
#define ConfigIntUART(a) ConfigIntUART2(a)
#define DataRdyUART() DataRdyUART2()
#define OpenUART(a,b,c) OpenUART2(a,b,c)
#define ReadUART() ReadUART2()
#define WriteUART(a) WriteUART2(a)
#define getsUART(a,b,c) getsUART2(a,b,c)
#define putsUART(a) putsUART2((unsigned int *)a)
#define getcUART() getcUART2()
#define putcUART() putcUART2()
#define putrsUART(a) putsUART2((unsigned int *)a)
#define memcmppgm2ram(a,b,c) memcmp(a,b,c)
#define memcpypgm2ram(a,b,c) memcpy(a,b,c)
#define strcpypgm2ram(a, b) strcpy(a,b)
#define Reset() asm("reset")
#if defined(__dsPIC33F__) || defined(__PIC24H__)
#define AD1PCFGbits AD1PCFGLbits
#define AD1CHS AD1CHS0
#elif defined(__dsPIC30F__)
#define ADC1BUF0 ADCBUF0
#define AD1CHS ADCHS
#define AD1CON1 ADCON1
#define AD1CON2 ADCON2
#define AD1CON3 ADCON3
#define AD1PCFGbits ADPCFGbits
#define AD1CSSL ADCSSL
#define AD1IF ADIF
#define AD1IE ADIE
#define _ADC1Interrupt _ADCInterrupt
#endif
#endif
// Various compilation warnings
#if defined(__18F97J60) && !(defined(PICDEMNET2) || defined(PIC18F97J60_TEST_BOARD)) || \
(defined(__18F18F8722) || defined(__18F87J10)) && !defined(HPC_EXPLORER) || \
(defined(__PIC24F__) || defined(__PIC24H__) || defined(__dsPIC33F__)) && !defined(EXPLORER_16) || \
defined(__dsPIC30F__) && !defined(DSPICDEM11)
#error "Warning: The board profile may not be configured correctly."
#error
#error "Make sure that a proper board profile macro (HPC_EXPLORER, "
#error "EXPLORER_16, PICDEMNET2, DSPICDEM11, etc) is defined in your "
#error "project settings (Project -> Build Options... -> Project -> "
#error "MPLAB Cxx -> Add (macro)"
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -