⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compiler.h

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 H
📖 第 1 页 / 共 4 页
字号:
    #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 + -