📄 compiler.h
字号:
#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.TRISD7)
#define LED0_IO (PORTDbits.RD7)
#define LED1_TRIS (TRISDbits.TRISD6)
#define LED1_IO (PORTDbits.RD6)
#define LED2_TRIS (TRISDbits.TRISD5)
#define LED2_IO (PORTDbits.RD5)
#define LED3_TRIS (TRISDbits.TRISD4)
#define LED3_IO (PORTDbits.RD4)
#define LED4_TRIS (TRISDbits.TRISD3)
#define LED4_IO (PORTDbits.RD3)
#define LED5_TRIS (TRISDbits.TRISD2)
#define LED5_IO (PORTDbits.RD2)
#define LED6_TRIS (TRISDbits.TRISD1)
#define LED6_IO (PORTDbits.RD1)
#define LED7_TRIS (TRISDbits.TRISD0)
#define LED7_IO (PORTDbits.RD0)
#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(EXPLORER16_RTL)
// Define your own board hardware profile here
#define LED0_TRIS (TRISAbits.TRISA0) // Ref D3
#define LED0_IO (PORTAbits.RA0)
#define LED1_TRIS (TRISAbits.TRISA1) // Ref D4
#define LED1_IO (PORTAbits.RA1)
#define LED2_TRIS (TRISAbits.TRISA2) // Ref D5
#define LED2_IO (PORTAbits.RA2)
#define LED3_TRIS (TRISAbits.TRISA3) // Ref D6
#define LED3_IO (PORTAbits.RA3)
#define LED4_TRIS (TRISAbits.TRISA4) // Ref D7
#define LED4_IO (PORTAbits.RA4)
#define LED5_TRIS (TRISAbits.TRISA5) // Ref D8
#define LED5_IO (PORTAbits.RA5)
#define LED6_TRIS (TRISAbits.TRISA6) // Ref D9
#define LED6_IO (PORTAbits.RA6)
#define LED7_TRIS (TRISAbits.TRISA7) // Ref D10 // Note: This is multiplexed with BUTTON1
#define LED7_IO (PORTAbits.RA7)
#define LED_IO (*((volatile unsigned char*)(&PORTA)))
#define BUTTON0_TRIS (TRISDbits.TRISD13) // Ref S4
#define BUTTON0_IO (PORTDbits.RD13)
#define BUTTON1_TRIS (TRISAbits.TRISA7) // Ref S5 // Note: This is multiplexed with LED7
#define BUTTON1_IO (PORTAbits.RA7)
#define BUTTON2_TRIS (TRISDbits.TRISD7) // Ref S6
#define BUTTON2_IO (PORTDbits.RD7)
#define BUTTON3_TRIS (TRISDbits.TRISD6) // Ref S3
#define BUTTON3_IO (PORTDbits.RD6)
#define UARTTX_TRIS (TRISFbits.TRISF5)
#define UARTTX_IO (PORTFbits.RF5)
#define UARTRX_TRIS (TRISFbits.TRISF4)
#define UARTRX_IO (PORTFbits.RF4)
// RTL8019AS I/O pins
#define NIC_CTRL_TRIS (TRISF)
#define NIC_RESET_IO (PORTFbits.RF2)
#define NIC_IOW_IO (PORTFbits.RF1)
#define NIC_IOR_IO (PORTFbits.RF0)
#define NIC_ADDR_IO (PORTB)
#define NIC_ADDR_TRIS (TRISB)
#define NIC_DATA_IO (PORTE)
#define NIC_DATA_TRIS (TRISE)
// 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)
// Do not use the DMA and other goodies that Microchip Ethernet modules have
#define NON_MCHP_MAC
#else
#error "Hardware profile not defined. See available profiles in Compiler.h. Add the appropriate macro definition to your project [ex: Project -> Build Options... -> Project -> MPLAB C18 -> Add (macro) -> HPC_EXPLORER]"
#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(a) WriteUART2(a)
#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(PICDEMNET) && !defined(EXPLORER_16) && !defined(EXPLORER16_RTL) || \
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 + -