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

📄 include.h

📁 CC2420+PIC单片机基础实验代码、CC2420无线收发实验代码
💻 H
📖 第 1 页 / 共 2 页
字号:
#include <p18f4620.h>


//-------------------------------------------------------------------------------------------------------
// Common data types
typedef unsigned char		BOOL;

typedef unsigned char		BYTE;
typedef unsigned short		WORD;
typedef unsigned long		DWORD;
typedef unsigned long long	QWORD;

typedef unsigned char		UINT8;
typedef unsigned short		UINT16;
typedef unsigned long		UINT32;
typedef unsigned long long	UINT64;

typedef signed char			INT8;
typedef signed short		INT16;
typedef signed long			INT32;
typedef signed long long	INT64;


#define FALSE 0
#define TRUE 1
#define NULL 0

// Useful stuff
#define BM(n) (1 << (n))
#define BF(x,b,s) (((x) & (b)) >> (s))
#define MIN(n,m) (((n) < (m)) ? (n) : (m))
#define MAX(n,m) (((n) < (m)) ? (m) : (n))
#define ABS(n) ((n < 0) ? -(n) : (n))

// Dynamic function pointer
typedef void (*VFPTR)(void);

//-------------------------------------------------------------------------------------------------------
#define ROM                 rom

    #define DC                  STATUSbits.DC

    #define EEWR                EECON1bits.WR
    #define EEWREN              EECON1bits.WREN

    #define LATA0               LATAbits.LATA0
    #define LATA1               LATAbits.LATA1
    #define LATA2               LATAbits.LATA2
    #define LATA3               LATAbits.LATA3
    #define LATA4               LATAbits.LATA4
    #define LATA5               LATAbits.LATA5
    #define LATA6               LATAbits.LATA6
    #define LATA7               LATAbits.LATA7

    #define RB0                 PORTBbits.RB0
    #define RB1                 PORTBbits.RB1
    #define RB2                 PORTBbits.RB2
    #define RB3                 PORTBbits.RB3
    #define RB4                 PORTBbits.RB4
    #define RB5                 PORTBbits.RB5
    #define RB6                 PORTBbits.RB6
    #define RB7                 PORTBbits.RB7

    #define TRISB0              TRISBbits.TRISB0
    #define TRISB1              TRISBbits.TRISB1
    #define TRISB2              TRISBbits.TRISB2
    #define TRISB3              TRISBbits.TRISB3
    #define TRISB4              TRISBbits.TRISB4
    #define TRISB5              TRISBbits.TRISB5
    #define TRISB6              TRISBbits.TRISB6
    #define TRISB7              TRISBbits.TRISB7

    #define RA0                 PORTAbits.RA0
    #define RA1                 PORTAbits.RA1
    #define RA2                 PORTAbits.RA2
    #define RA3                 PORTAbits.RA3
    #define RA4                 PORTAbits.RA4
    #define RA5                 PORTAbits.RA5
    #define RA6                 PORTAbits.RA6
    #define RA7                 PORTAbits.RA7

    #define TRISA0              TRISAbits.TRISA0
    #define TRISA1              TRISAbits.TRISA1
    #define TRISA2              TRISAbits.TRISA2
    #define TRISA3              TRISAbits.TRISA3
    #define TRISA4              TRISAbits.TRISA4
    #define TRISA5              TRISAbits.TRISA5
    #define TRISA6              TRISAbits.TRISA6
    #define TRISA7              TRISAbits.TRISA7

    #define LATC0               LATCbits.LATC0
    #define LATC1               LATCbits.LATC1
    #define LATC2               LATCbits.LATC2
    #define LATC3               LATCbits.LATC3
    #define LATC4               LATCbits.LATC4
    #define LATC5               LATCbits.LATC5
    #define LATC6               LATCbits.LATC6
    #define LATC7               LATCbits.LATC7

    #define TRISC0              TRISCbits.TRISC0
    #define TRISC1              TRISCbits.TRISC1
    #define TRISC2              TRISCbits.TRISC2
    #define TRISC3              TRISCbits.TRISC3
    #define TRISC4              TRISCbits.TRISC4
    #define TRISC5              TRISCbits.TRISC5
    #define TRISC6              TRISCbits.TRISC6
    #define TRISC7              TRISCbits.TRISC7

    #define RC0                 PORTCbits.RC0
    #define RC1                 PORTCbits.RC1
    #define RC2                 PORTCbits.RC2
    #define RC3                 PORTCbits.RC3
    #define RC4                 PORTCbits.RC4
    #define RC5                 PORTCbits.RC5
    #define RC6                 PORTCbits.RC6
    #define RC7                 PORTCbits.RC7

    #define TRISD7              TRISDbits.TRISD7
    #define TRISD6              TRISDbits.TRISD6
    #define TRISD5              TRISDbits.TRISD5
    #define TRISD4              TRISDbits.TRISD4
    #define TRISD3              TRISDbits.TRISD3
    #define TRISD2              TRISDbits.TRISD2
    #define TRISD1              TRISDbits.TRISD1
    #define TRISD0              TRISDbits.TRISD0

    #define LATD0               LATDbits.LATD0
    #define LATD1               LATDbits.LATD1
    #define LATD2               LATDbits.LATD2
    #define LATD3               LATDbits.LATD3
    #define LATD4               LATDbits.LATD4
    #define LATD5               LATDbits.LATD5
    #define LATD6               LATDbits.LATD6
    #define LATD7               LATDbits.LATD7


    #define RD7                 PORTDbits.RD7
    #define RD6                 PORTDbits.RD6
    #define RD5                 PORTDbits.RD5
    #define RD4                 PORTDbits.RD4
    #define RD3                 PORTDbits.RD3
    #define RD2                 PORTDbits.RD2
    #define RD1                 PORTDbits.RD1
    #define RD0                 PORTDbits.RD0

    #define RE0                 PORTEbits.RE0
    #define RE1                 PORTEbits.RE1
    #define RE2                 PORTEbits.RE2
    #define RE3                 PORTEbits.RE3
    #define RE4                 PORTEbits.RE4
    #define RE5                 PORTEbits.RE5
    #define RE6                 PORTEbits.RE6
    #define RE7                 PORTEbits.RE7

    #define TMR0IE              INTCONbits.TMR0IE
    #define TMR0IF              INTCONbits.TMR0IF
    #define INT0IE              INTCONbits.INT0IE
    #define INT0IF              INTCONbits.INT0IF
    #define RBPU                INTCON2bits.RBPU
    #define RBIF                INTCONbits.RBIF
    #define RBIE                INTCONbits.RBIE

    #define CCP2IF              PIR2bits.CCP2IF
    #define CCP2IE              PIE2bits.CCP2IE
    #define CCP2IP              IPR2bits.CCP2IP

    #define INT2IE              INTCON3bits.INT2IE
    #define INT2IF              INTCON3bits.INT2IF
    #define INT0IF              INTCONbits.INT0IF

    #define INT2IP              INTCON3bits.INT2IP
    #define INTEDG2             INTCON2bits.INTEDG2
    #define TMR0IP              INTCON2bits.TMR0IP

    #define TMR0ON              T0CONbits.TMR0ON

    #define TMR1ON              T1CONbits.TMR1ON

    #define TMR3IE              PIE2bits.TMR3IE
    #define TMR3IF              PIR2bits.TMR3IF
    #define TMR3ON              T3CONbits.TMR3ON

    #define WCOL                SSPCON1bits.WCOL

    #define SEN                 SSPCON2bits.SEN
    #define ACKSTAT             SSPCON2bits.ACKSTAT
    #define RSEN                SSPCON2bits.RSEN
    #define RCEN                SSPCON2bits.RCEN
    #define ACKEN               SSPCON2bits.ACKEN
    #define PEN                 SSPCON2bits.PEN
    #define ACKDT               SSPCON2bits.ACKDT

    #define SSPRW               SSPSTATbits.R_W
    #define SSPBF               SSPSTATbits.BF
    #define CKE                 SSPSTATbits.CKE
    #define SMP                 SSPSTATbits.SMP

    #define GIEH                INTCONbits.GIEH
    #define GIEL                INTCONbits.GIEL

    #define BCLIF               PIR2bits.BCLIF

    #define TXIE                PIE1bits.TXIE
    #define RCIE                PIE1bits.RCIE
    #define TMR1IE              PIE1bits.TMR1IE

    #define RCIF                PIR1bits.RCIF
    #define TXIF                PIR1bits.TXIF
    #define TMR1IF              PIR1bits.TMR1IF
    #define SSPIF               PIR1bits.SSPIF

    #define RCIP                IPR1bits.RCIP


    #define TRMT                TXSTAbits.TRMT
    #define BRGH                TXSTAbits.BRGH

    #define CREN                RCSTAbits.CREN
    #define OERR                RCSTAbits.OERR

    #define ADGO                ADCON0bits.GO
    #define ADON                ADCON0bits.ADON

    #define RI                  RCONbits.RI
    #define TO                  RCONbits.TO
    #define PD                  RCONbits.PD
    #define POR                 RCONbits.POR
    #define BOR                 RCONbits.BOR
    #define IPEN                RCONbits.IPEN

    #define WUE                 BAUDCONbits.WUE

    #define STKFUL              STKPTRbits.STKFUL
    #define STKUNF              STKPTRbits.STKUNF

    #define NOP()               Nop()
    #define CLRWDT()            ClrWdt()
    #define RESET()             Reset()
    #define SLEEP()             Sleep()
    #define DISABLE_WDT()       (WDTCONbits.SWDTEN = 0)
    #define ENABLE_WDT()        (WDTCONbits.SWDTEN = 1)

#define ENABLE_GLOBAL_INT()     GIEH=1;GIEL=1
#define DISABLE_GLOBAL_INT()    GIEH=0;GIEL=0
//-------------------------------------------------------------------------------------------------------
// io
#define LED1 LATA1
#define LED2 LATA2
#define LED3 LATA3

//-------------------------------------------------------------------------------------------------------
// 

#define VREG_EN       LATC1//O
#define RESET_N       LATC2//O
#define FIFO          RB0//I
#define FIFO_P        RB3//I
#define SFD           RB2//I
#define CCA           RB1//I

//-------------------------------------------------------------------------------------------------------
// SPI

#define SCK           LATC3//O
#define MOSI          LATC5//O
#define MISO          LATC4//I
#define CSN           LATC0//O

#define SPI_INIT()  halSpiInit()

// Enables/disables the SPI interface

#define SPI_ENABLE()    CSN=0// ENABLE CSn (active low)
#define SPI_DISABLE()	CSN=1// DISABLE CSn (active low)

//-------------------------------------------------------------------------------------------------------
// CC2420 pin access

// Pin status

#define FIFO_IS_1       FIFO
#define CCA_IS_1        CCA
#define RESET_IS_1      RESET_N
#define VREG_IS_1       VREG_EN
#define FIFOP_IS_1      FIFO_P
#define SFD_IS_1        SFD

// The CC2420 reset pin
#define SET_RESET_INACTIVE()    RESET_N=1 
#define SET_RESET_ACTIVE()      RESET_N=0

// CC2420 voltage regulator enable pin
#define SET_VREG_ACTIVE()       VREG_EN=1
#define SET_VREG_INACTIVE()     VREG_EN=0

#define FIFOP_INT_INIT()            do {FIFO_P=0; CLEAR_FIFOP_INT(); } while (0)

// FIFOP on CCP2 interrupt
#define ENABLE_FIFOP_INT()          do { CCP2IE=1; } while (0)
#define DISABLE_FIFOP_INT()         do { CCP2IE=0; } while (0)
#define CLEAR_FIFOP_INT()           do { CCP2IF=0; } while (0)
//-------------------------------------------------------------------------------------------------------


//-------------------------------------------------------------------------------------------------------
// SFD interrupt on XI2 
#define ENABLE_SFD_CAPTURE_INT()    do { INT2IE=1; } while (0)
#define DISABLE_SFD_CAPTURE_INT()   do { INT2IE=0; } while (0)
#define CLEAR_SFD_CAPTURE_INT()     do { INT2IF=0; } while (0)
//-------------------------------------------------------------------------------------------------------



/*******************************************************************************************************
 *******************************************************************************************************
 **************************                      BUTTONS                      **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//-------------------------------------------------------------------------------------------------------
// S2 button
#define SW1_PRESSED()            !(SW1)
#define SW2_PRESSED()            !(SW2)
#define SW3_PRESSED()            !(SW3)
#define SW4_PRESSED()            !(SW4)

/*******************************************************************************************************
 *******************************************************************************************************
 **************************               APPLICATION DEBUGGING               **************************
 *******************************************************************************************************
 *******************************************************************************************************/


//-------------------------------------------------------------------------------------------------------
// Controlled application crash (flashes the LEDs forever to indicate an error code)
#define EXCEPTION(n) \
    do { \
        DISABLE_GLOBAL_INT(); \
        TOGGLE_LED1(); \
        halWait(20000); \
        TOGGLE_LED1(); \
        halWait(50000); \
    } while (TRUE)
//-------------------------------------------------------------------------------------------------------

/***********************************************************
	FAST SPI: Low level functions
***********************************************************/

#define	SPI_WAITFOREOTx()	while (!SSPIF);SSPIF=0  // USART1 Tx buffer ready? 
#define	SPI_WAITFOREORx()	while (!SSPIF);SSPIF=0 // USART1 Rx buffer ready?


#define FASTSPI_TX(x)\
	do {\
		SSPBUF = x;\
		SPI_WAITFOREOTx();\
	} while(0)

#define FASTSPI_RX(x)\
    do {\
        SSPBUF = 0;\
	    SPI_WAITFOREORx();\
		x = SSPBUF;\
    } while(0)

#define FASTSPI_RX_GARBAGE()\
	do {\
    	SSPBUF = 0;\
		SPI_WAITFOREORx();\
		SSPBUF;\
	} while(0)

#define FASTSPI_TX_MANY(p,c)\
	do {\
		UINT8 spiCnt;\

⌨️ 快捷键说明

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