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

📄 compiler.h

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 H
📖 第 1 页 / 共 4 页
字号:
    #define ENC_RST_TRIS        (TRISB5)
    #define ENC_RST_IO            (LATB5)
    #define ENC_CS_TRIS            (TRISB3)
    #define ENC_CS_IO            (LATB3)
    #define ENC_SCK_TRIS        (TRISC3)
    #define ENC_SDI_TRIS        (TRISC4)
    #define ENC_SDO_TRIS        (TRISC5)
    #define ENC_SPI_IF            (SSP1IF)
    #define ENC_SSPBUF            (SSP1BUF)
    #define ENC_SPISTAT            (SSP1STAT)
    #define ENC_SPISTATbits        (*((SSPSTATbits*)&SSP1STAT))
    #define ENC_SPICON1            (SSP1CON1)
    #define ENC_SPICON1bits        (*((SSPCON1bits*)&SSP1CON))
    #define ENC_SPICON2            (SSP1CON2)

    // 25LC256 I/O pins
    #define EEPROM_CS_TRIS        (TRISB4)
    #define EEPROM_CS_IO        (LATB4)
    #define EEPROM_SCK_TRIS        (TRISC3)
    #define EEPROM_SDI_TRIS        (TRISC4)
    #define EEPROM_SDO_TRIS        (TRISC5)
    #define EEPROM_SPI_IF        (SSP1IF)
    #define EEPROM_SSPBUF        (SSP1BUF)
    #define EEPROM_SPICON1        (SSP1CON1)
    #define EEPROM_SPICON1bits    (*((SSPCON1bits*)&SSP1CON))
    #define EEPROM_SPICON2        (SSP1CON2)
    #define EEPROM_SPISTAT        (SSP1STAT)
    #define EEPROM_SPISTATbits    (*((SSPSTATbits*)&SSP1STAT))

    #define INTCONbits            (*((INTCONbits*)&INTCON))
    #define INTCON2bits            (*((INTCON2bits*)&INTCON2))
    #define ADCON0bits            (*((ADCON0bits*)&ADCON0))
    #define ADCON2bits            (*((ADCON2bits*)&ADCON2))
    #define PIR1bits            (*((PIR1bits*)&PIR1))
    #define PIE1bits            (*((PIE1bits*)&PIE1))
    #define T0CONbits            (*((T0CONbits*)&T0CON))
    #define TXSTAbits            (*((TXSTAbits*)&TXSTA1))
    #define RCSTAbits            (*((RCSTAbits*)&RCSTA1))

#elif defined(FS_USB) && !defined(HI_TECH_C)
// NOTE: THIS IS A WORK IN PROGRESS
// PICDEM FS USB demo board support still needs more work
// PICDEM FS USB + Ethernet PICtail
// To use the PICDEM FS USB board, you must :
// 1. On Ethernet PICtail, cut the traces under J5, J6, and J7, install jumper headers, and place jumper shunts on pins 2-3, 2-3, and 2-3.
// 2. On PICDEM FS USB, cut trace under JP3 to prevent SDO and MAX232 RX output bus contention
// 3. Remove all UART code in the stack.  The SPI and UART share the same PIC18F4550 pins, so you must disable the UART and not use it.
// 4. RAM and ROM are tight on the PIC18F4550.  Need to unprotect several USB RAM banks and enable all C18 compiler optimizations (especially procedural abstraction), or remove a bunch of stack modules.

    // I/O pins
    #define LED0_TRIS            (TRISDbits.TRISD3)
    #define LED0_IO              (PORTDbits.RD3)
    #define LED1_TRIS            (TRISDbits.TRISD2)
    #define LED1_IO              (PORTDbits.RD2)
    #define LED2_TRIS            (TRISDbits.TRISD1)
    #define LED2_IO              (PORTDbits.RD1)
    #define LED3_TRIS            (TRISDbits.TRISD0)
    #define LED3_IO              (PORTDbits.RD0)
    #define LED4_TRIS            (TRISDbits.TRISD3)    // No LED remap to LED0
    #define LED4_IO              (PORTDbits.RD3)
    #define LED5_TRIS            (TRISDbits.TRISD2)    // No LED remap to LED1
    #define LED5_IO              (PORTDbits.RD2)
    #define LED6_TRIS            (TRISDbits.TRISD1)    // No LED remap to LED2
    #define LED6_IO              (PORTDbits.RD1)
    #define LED7_TRIS            (TRISDbits.TRISD0)    // No LED remap to LED3
    #define LED7_IO              (PORTDbits.RD0)


    #define BUTTON0_TRIS        (TRISBbits.TRISB5)
    #define BUTTON0_IO          (PORTBbits.RB5)
    #define BUTTON1_TRIS        (TRISBbits.TRISB4)
    #define BUTTON1_IO          (PORTBbits.RB4)
    #define BUTTON2_TRIS        (TRISBbits.TRISB5)    // No Button2 on this board, remap to Button0
    #define BUTTON2_IO          (PORTBbits.RB5)
    #define BUTTON3_TRIS        (TRISBbits.TRISB4)    // No Button3 on this board, remap to Button0
    #define BUTTON3_IO          (PORTBbits.RB4)

    // 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        (TRISBbits.TRISB1)
    #define ENC_SDI_TRIS        (TRISBbits.TRISB0)
    #define ENC_SDO_TRIS        (TRISCbits.TRISC7)
    #define ENC_SPI_IF          (PIR1bits.SSPIF)
    #define ENC_SSPBUF          (SSPBUF)
    #define ENC_SPISTAT         (SSPSTAT)
    #define ENC_SPISTATbits     (SSPSTATbits)
    #define ENC_SPICON1         (SSPCON1)
    #define ENC_SPICON1bits     (SSPCON1bits)
    #define ENC_SPICON2         (SSPCON2)

    // 25LC256 I/O pins
    #define EEPROM_CS_TRIS      (TRISBbits.TRISB4)
    #define EEPROM_CS_IO        (LATBbits.LATB4)
    #define EEPROM_SCK_TRIS     (TRISBbits.TRISB1)
    #define EEPROM_SDI_TRIS     (TRISBbits.TRISB0)
    #define EEPROM_SDO_TRIS     (TRISCbits.TRISC7)
    #define EEPROM_SPI_IF       (PIR1bits.SSPIF)
    #define EEPROM_SSPBUF       (SSPBUF)
    #define EEPROM_SPICON1      (SSPCON1)
    #define EEPROM_SPICON1bits  (SSPCON1bits)
    #define EEPROM_SPICON2      (SSPCON2)
    #define EEPROM_SPISTAT      (SSPSTAT)
    #define EEPROM_SPISTATbits  (SSPSTATbits)
//-----------------------------------------------------------------
// 本例硬件引脚连接配置(PIC18F452+RTL8019)
//-----------------------------------------------------------------
#elif defined(PICDEMNET) && !defined(HI_TECH_C)
    //LED引脚配置
    #define LED1_TRIS           (TRISAbits.TRISA2)
    #define LED1_IO             (PORTAbits.RA2)
    #define LED2_TRIS           (TRISAbits.TRISA3)
    #define LED2_IO             (PORTAbits.RA3)
    #define LED_PTR_TRIS        (TRISAbits.TRISA4)
    #define LED_PTR_IO          (PORTAbits.RA4)
       
    //继电器控制引脚配置
    #define RELAY_TRIS          (TRISAbits.TRISA1)
    #define RELAY_IO            (PORTAbits.RA1)

    //开关/按键引脚配置
    #define BUTTON0_TRIS        (TRISBbits.TRISB5)
    #define BUTTON0_IO          (PORTBbits.RB5)
    #define BUTTON1_TRIS        (TRISBbits.TRISB5) //无此按键,重映射为BUTTON0
    #define BUTTON1_IO          (PORTBbits.RB5)
    #define BUTTON2_TRIS        (TRISBbits.TRISB5) //无此按键,重映射为BUTTON0
    #define BUTTON2_IO          (PORTBbits.RB5)
    #define BUTTON3_TRIS        (TRISBbits.TRISB5) //无此按键,重映射为BUTTON0
    #define BUTTON3_IO          (PORTBbits.RB5)

    // RTL8019AS I/O 引脚配置
    #define NIC_CTRL_TRIS       (TRISE)
    #define NIC_RESET_IO        (PORTEbits.RE2)
    #define NIC_IOW_IO          (PORTEbits.RE1)
    #define NIC_IOR_IO          (PORTEbits.RE0)
    #define NIC_ADDR_IO         (PORTB)
    #define NIC_ADDR_TRIS       (TRISB)
    #define NIC_DATA_IO         (PORTD)
    #define NIC_DATA_TRIS       (TRISD)

    //IIC 存储器 24LC256 I/O引脚配置
    #define EEPROM_SCL_TRIS     (TRISCbits.TRISC3)
    #define EEPROM_SDA_TRIS     (TRISCbits.TRISC4)
    #define EEPROM_SPI_IF       (PIR1bits.SSPIF)
    #define EEPROM_SSPBUF       (SSPBUF)
    #define EEPROM_SPICON1      (SSPCON1)
    #define EEPROM_SPICON1bits  (SSPCON1bits)
    #define EEPROM_SPICON2      (SSPCON2)
    #define EEPROM_SPICON2bits  (SSPCON2bits)
    #define EEPROM_SPISTAT      (SSPSTAT)
    #define EEPROM_SPISTATbits  (SSPSTATbits)

    // LCD模块引脚配置
    typedef struct
    {
        unsigned char data : 4;    //Bits 0~3
        unsigned char : 4;         //Bits 4~7
    } LCD_DATA;
    #define LCD_DATA_TRIS        (((volatile LCD_DATA*)&TRISD)->data)
    #define LCD_DATA_IO          (((volatile LCD_DATA*)&LATD)->data)
    #define LCD_RD_WR_TRIS       (TRISDbits.TRISD5)
    #define LCD_RD_WR_IO         (LATDbits.LATD5)
    #define LCD_RS_TRIS          (TRISDbits.TRISD4)
    #define LCD_RS_IO            (LATDbits.LATD4)
    #define LCD_E_TRIS           (TRISAbits.TRISA5)
    #define LCD_E_IO             (LATAbits.LATA5)

    // Do not use the DMA and other goodies that Microchip Ethernet modules have
    #define NON_MCHP_MAC

    #if defined(__18F452)
        #define OSCTUNE        PRODL
        #define ADCON2         PRODL
    #endif
//---------------------本例硬件引脚连接配置结束----------------------
//------------------------------------------------------------------

#elif defined(PICDEMNET) && defined(HI_TECH_C)
// PICDEM.net (classic) board with Realtek RTL8019AS Ethernet controller
// It is strongly recommended that the PIC18F452 that came installed 
// on the PICDEM.net be removed and a PIC18F4620 be installed in its 
// place.  The PIC18F4620 has twice the FLASH, substantially more 
// RAM, and as a result can support all of the latest TCP/IP stack 
// modules compiled all at once.  The PIC18F4620 also has superior 
// peripherals that are natively supported by the stack.
//
// If using the PIC18F452, you most likely will not be able to compile
// the stack with the HI-TECH compiler due to excessive code space needed.
// You must remove unneeded modules or use a bigger microcontroller.
    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 SSPM0:1;
        unsigned char SSPM1:1;
        unsigned char SSPM2:1;
        unsigned char SSPM3:1;
        unsigned char CKP:1;
        unsigned char SSPEN:1;
        unsigned char SSPOV:1;
        unsigned char WCOL:1;
    } SSPCON1bits;
    typedef struct
    {
        unsigned char SEN:1;
        unsigned char RSEN:1;
        unsigned char PEN:1;
        unsigned char RCEN:1;
        unsigned char ACKEN:1;
        unsigned char ACKDT:1;
        unsigned char ACKSTAT:1;
        unsigned char GCEN:1;
    } SSPCON2bits;
    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 CCP2IF:1;
        unsigned char TMR3IF:1;
        unsigned char HLVDIF:1;
        unsigned char BCLIF:1;
        unsigned char EEIF:1;
        unsigned char :1;
        unsigned char CMIF:1;
        unsigned char OSCFIF:1;
    } PIR2bits;
    typedef struct 
    {
        unsigned char TMR1IE:1;
        unsigned char TMR2IE:1;
        unsigned char CCP1IE:1;
        unsigned char SSPIE:1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -