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

📄 compiler.h

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 H
📖 第 1 页 / 共 4 页
字号:
/*********************************************************************
 *
 *         Compiler and hardware specific definitions
 *
 *********************************************************************
 * FileName:        Compiler.h
 * Dependencies:    None
 * Processor:       PIC18, PIC24F, PIC24H, dsPIC30F, dsPIC33F
 * Complier:        Microchip C18 v3.02 or higher
 *                    Microchip C30 v2.01 or higher
 * Company:         Microchip Technology, Inc.
 *
 * Software License Agreement
 *
 * This software is owned by Microchip Technology Inc. ("Microchip") 
 * and is supplied to you for use exclusively as described in the 
 * associated software agreement.  This software is protected by 
 * software and other intellectual property laws.  Any use in 
 * violation of the software license may subject the user to criminal 
 * sanctions as well as civil liability.  Copyright 2006 Microchip
 * Technology Inc.  All rights reserved.
 *
 * This software is provided "AS IS."  MICROCHIP DISCLAIMS ALL 
 * WARRANTIES, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, NOT LIMITED 
 * TO MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND 
 * INFRINGEMENT.  Microchip shall in no event be liable for special, 
 * incidental, or consequential damages.
 *
 *
 * Author               Date    Comment
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Nilesh Rajbharti     11/14/01 Original        (Rev 1.0)
 * Nilesh Rajbharti     2/9/02  Cleanup
 * Nilesh Rajbharti     5/22/02 Rev 2.0 (See version.log for detail)
 * Howard Schlunder        11/30/04 Added some more defines
 * Howard Schlunder        6/14/06    Added hardware definitions
 * Howard Schlunder        8/10/06    Added PICDEMNET, PIC18F97J60_TEST_BOARD, FS_USB hardware definitions
 ********************************************************************/
#ifndef COMPILER_H
#define COMPILER_H

// Clock frequency value.
// This value is used to calculate Tick Counter value
#if defined(__18CXX)        
    // All PIC18 processors
    #include <p18cxxx.h>
    #if defined(PICDEMNET2)
        #define CLOCK_FREQ        (41666667)      // Hz
    #elif defined(FS_USB)
        #define CLOCK_FREQ        (48000000)      // Hz
    #elif defined(PICDEMNET)
        //#define CLOCK_FREQ      (40000000)      // Hz
        #define CLOCK_FREQ        (19660800)      // Hz
    #else
        #define CLOCK_FREQ        (40000000)      // Hz
    #endif
    #define INSTR_FREQ            (CLOCK_FREQ/4)
#elif defined(__PIC24F__)    
    // PIC24F processor
    #include <p24Fxxxx.h>
    #define CLOCK_FREQ            (32000000)      // Hz
    #define INSTR_FREQ            (CLOCK_FREQ/2)
#elif defined(__PIC24H__)    
    // PIC24H processor
    #include <p24Hxxxx.h>
    #define CLOCK_FREQ            (80000000)      // Hz
    #define INSTR_FREQ            (CLOCK_FREQ/2)
#elif defined(__dsPIC33F__)    
    // dsPIC33F processor
    #include <p33Fxxxx.h>
    #define CLOCK_FREQ            (80000000)      // Hz
    #define INSTR_FREQ            (CLOCK_FREQ/2)
#elif defined(__dsPIC30F__)
    // dsPIC30F processor
    #include <p30fxxxx.h>
    #define CLOCK_FREQ            (117920000)      // Hz
    #define INSTR_FREQ            (CLOCK_FREQ/4)
#elif defined(HI_TECH_C)    // Hi Tech PICC18 compiler
    #define __18CXX
    #include <pic18.h>
    #define CLOCK_FREQ            (40000000)      // Hz
    #define INSTR_FREQ            (CLOCK_FREQ/4)
#else
    #error Unknown processor.  See Compiler.h
#endif

// Hardware mappings
#if defined(HPC_EXPLORER) && !defined(HI_TECH_C)
// PICDEM HPC Explorer + Ethernet PICtail
    // 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.TRISB0)
    #define    BUTTON0_IO            (PORTBbits.RB0)
    #define BUTTON1_TRIS        (TRISBbits.TRISB0)    // No Button1 on this board, remap to Button0
    #define    BUTTON1_IO            (PORTBbits.RB0)
    #define BUTTON2_TRIS        (TRISBbits.TRISB0)    // No Button2 on this board, remap to Button0
    #define    BUTTON2_IO            (PORTBbits.RB0)
    #define BUTTON3_TRIS        (TRISBbits.TRISB0)    // No Button3 on this board, remap to Button0
    #define    BUTTON3_IO            (PORTBbits.RB0)

    // 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        (TRISCbits.TRISC3)
    #define ENC_SDI_TRIS        (TRISCbits.TRISC4)
    #define ENC_SDO_TRIS        (TRISCbits.TRISC5)
    #define ENC_SPI_IF            (PIR1bits.SSPIF)
    #define ENC_SSPBUF            (SSPBUF)
    #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        (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(HPC_EXPLORER) && defined(HI_TECH_C)
// PICDEM HPC Explorer + Ethernet PICtail
    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 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 TMR1IE:1;
        unsigned char TMR2IE:1;
        unsigned char CCP1IE:1;
        unsigned char SSPIE:1;
        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 TXSTA                TXSTA1
    #define RCSTA                RCSTA1
    #define SPBRG                SPBRG1
    #define RCREG                RCREG1
    #define TXREG                TXREG1

    // I/O pins
    #define LED0_TRIS            (TRISD0)
    #define LED0_IO                (RD0)
    #define LED1_TRIS            (TRISD1)
    #define LED1_IO                (RD1)
    #define LED2_TRIS            (TRISD2)
    #define LED2_IO                (RD2)
    #define LED3_TRIS            (TRISD3)
    #define LED3_IO                (RD3)
    #define LED4_TRIS            (TRISD4)
    #define LED4_IO                (RD4)
    #define LED5_TRIS            (TRISD5)
    #define LED5_IO                (RD5)
    #define LED6_TRIS            (TRISD6)
    #define LED6_IO                (RD6)
    #define LED7_TRIS            (TRISD7)
    #define LED7_IO                (RD7)
    #define LED_IO                (*((volatile unsigned char*)(&PORTD)))

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

    // ENC28J60 I/O pins

⌨️ 快捷键说明

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