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

📄 compiler.h

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 H
📖 第 1 页 / 共 4 页
字号:
        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 SSPSTATbits           (*((SSPSTATbits*)&SSPSTAT))
    #define INTCONbits            (*((INTCONbits*)&INTCON))
    #define INTCON2bits           (*((INTCON2bits*)&INTCON2))
    #define ADCON0bits            (*((ADCON0bits*)&ADCON0))
    #define ADCON2bits            (*((ADCON2bits*)&ADCON2))
    #define PIR1bits              (*((PIR1bits*)&PIR1))
    #define PIR2bits              (*((PIR2bits*)&PIR2))
    #define PIE1bits              (*((PIE1bits*)&PIE1))
    #define T0CONbits             (*((T0CONbits*)&T0CON))
    #define TXSTAbits             (*((TXSTAbits*)&TXSTA))
    #define RCSTAbits             (*((RCSTAbits*)&RCSTA))
    #define SSPCON1bits           (*((SSPCON1bits*)&SSPCON1))
    #define SSPCON2bits           (*((SSPCON2bits*)&SSPCON2))

    // I/O pins
    #define LED0_TRIS             (TRISA4)
    #define LED0_IO                (RA4)
    #define LED1_TRIS             (TRISA3)
    #define LED1_IO                (RA3)
    #define LED2_TRIS             (TRISA2)
    #define LED2_IO                (RA2)
    #define LED3_TRIS             (TRISA4)
    #define LED3_IO                (RA4)
    #define LED4_TRIS             (TRISA3)
    #define LED4_IO                (RA3)
    #define LED5_TRIS             (TRISA2)
    #define LED5_IO                (RA2)
    #define LED6_TRIS             (TRISA4)
    #define LED6_IO                (RA4)
    #define LED7_TRIS             (TRISA3)
    #define LED7_IO                (RA3)

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

    // RTL8019AS I/O pins
    #define NIC_CTRL_TRIS       (TRISE)
    #define NIC_RESET_IO        (RE2)
    #define NIC_IOW_IO          (RE1)
    #define NIC_IOR_IO          (RE0)
    #define NIC_ADDR_IO         (PORTB)
    #define NIC_DATA_IO         (PORTD)

    // 24LC256 I/O pins
    #define EEPROM_SCL_TRIS        (TRISC3)
    #define EEPROM_SDA_TRIS        (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
    // LCD Module I/O pins
    typedef struct
    {
        unsigned char data : 4;    // Bits 0 through 3
        unsigned char : 4;        // Bits 4 through 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        (TRISD5)
    #define LCD_RD_WR_IO        (LATD5)
    #define LCD_RS_TRIS            (TRISD4)
    #define LCD_RS_IO            (LATD4)
    #define LCD_E_TRIS            (TRISA5)
    #define LCD_E_IO            (LATA5)

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

#elif defined(EXPLORER_16)
// Explorer 16 + Ethernet PICtail Plus

    #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)

    // 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)

⌨️ 快捷键说明

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