hardwareprofile.h
来自「本附件为嵌入式Web的相关资料」· C头文件 代码 · 共 1,384 行 · 第 1/4 页
H
1,384 行
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;
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
typedef struct
{
unsigned char data : 5; // Bits 0 through 4
unsigned char : 3; // Bits 5 through 7
} NIC_ADDR;
typedef struct
{
unsigned char data : 8; // Bits 0 through 7
} NIC_DATA;
#define NIC_ADDR_TRIS (((NIC_ADDR*)&TRISB)->data)
#define NIC_ADDR_IO (((NIC_ADDR*)&LATB)->data)
#define NIC_DATA_TRIS (((NIC_DATA*)&TRISD)->data)
#define NIC_DATA_IO (((NIC_DATA*)&PORTD)->data)
#define NIC_RESET_TRIS (TRISE2)
#define NIC_RESET_IO (LATE2)
#define NIC_ADDR_LATCH_TRIS (PRODL)
#define NIC_ADDR_LATCH_IO (PRODL)
#define NIC_IOW_TRIS (TRISE1)
#define NIC_IOW_IO (LATE1)
#define NIC_IOR_TRIS (TRISE0)
#define NIC_IOR_IO (LATE0)
// 24LC256 I/O pins
#define EEPROM_SCL_TRIS (TRISC3)
#define EEPROM_SDA_TRIS (TRISC4)
#define EEPROM_SSPBUF (SSPBUF)
#define EEPROM_SSPCON1 (SSPCON1)
#define EEPROM_SSPCON1bits (SSPCON1bits)
#define EEPROM_SSPCON2 (SSPCON2)
#define EEPROM_SSPCON2bits (SSPCON2bits)
#define EEPROM_SSPSTATbits (SSPSTATbits)
// 24LC256 configuration
#define EEPROM_CONTROL (0xA0) // Address 0
#define I2CBAUD (400000) // Hz
// 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
#ifdef __USE_SPI_1
#define _ENC_USE_SPI_1
#elif defined(__USE_SPI_2)
#define _ENC_USE_SPI_2
#elif defined(_SPI1)
#define _ENC_USE_SPI_1
#elif defined(_SPI2)
#define _ENC_USE_SPI_2
#else
#error "No SPI available"
#endif
#ifdef _ENC_USE_SPI_1
#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 mSetSPILatch() { TRISBbits.TRISB12 = 0, TRISBbits.TRISB13 = 0, LATBbits.LATB12 = 1, LATBbits.LATB13 = 1; }
#endif
#ifdef _ENC_USE_SPI_2
#define ENC_RST_TRIS (TRISFbits.TRISF13) // Not connected by default
#define ENC_RST_IO (PORTFbits.RF13)
#define ENC_CS_TRIS (TRISFbits.TRISF12)
#define ENC_CS_IO (PORTFbits.RF12)
#define ENC_SCK_TRIS (TRISGbits.TRISG6)
#define ENC_SDI_TRIS (TRISGbits.TRISG7)
#define ENC_SDO_TRIS (TRISGbits.TRISG8)
#define ENC_SPI_IF (IFS1bits.SPI2IF)
#define ENC_SSPBUF (SPI2BUF)
#define ENC_SPISTAT (SPI2STAT)
#define ENC_SPISTATbits (SPI2STATbits)
#define ENC_SPICON1 (SPI2CON1)
#define ENC_SPICON1bits (SPI2CON1bits)
#define mSetSPILatch()
#endif
// 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)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?