* device/lib/pic/libdev/*.c
[fw/sdcc] / device / include / pic / pic16f877.h
index 851479717a5115eeee7c3c1e8e5d129bd8028f89..6805f234be6b847ac714196dec009171ad66e794 100644 (file)
@@ -4,7 +4,7 @@
 //
 // This header file was automatically generated by:
 //
-//     inc2h.pl V1.6
+//     inc2h.pl V4585
 //
 //     Copyright (c) 2002, Kevin L. Pauba, All Rights Reserved
 //
 // Memory organization.
 //
 
-#pragma memmap INDF_ADDR INDF_ADDR SFR 0x000   // INDF
-#pragma memmap TMR0_ADDR TMR0_ADDR SFR 0x000   // TMR0
-#pragma memmap PCL_ADDR PCL_ADDR SFR 0x000     // PCL
-#pragma memmap STATUS_ADDR STATUS_ADDR SFR 0x000       // STATUS
-#pragma memmap FSR_ADDR FSR_ADDR SFR 0x000     // FSR
-#pragma memmap PORTA_ADDR PORTA_ADDR SFR 0x000 // PORTA
-#pragma memmap PORTB_ADDR PORTB_ADDR SFR 0x000 // PORTB
-#pragma memmap PORTC_ADDR PORTC_ADDR SFR 0x000 // PORTC
-#pragma memmap PORTD_ADDR PORTD_ADDR SFR 0x000 // PORTD
-#pragma memmap PORTE_ADDR PORTE_ADDR SFR 0x000 // PORTE
-#pragma memmap PCLATH_ADDR PCLATH_ADDR SFR 0x000       // PCLATH
-#pragma memmap INTCON_ADDR INTCON_ADDR SFR 0x000       // INTCON
-#pragma memmap PIR1_ADDR PIR1_ADDR SFR 0x000   // PIR1
-#pragma memmap PIR2_ADDR PIR2_ADDR SFR 0x000   // PIR2
-#pragma memmap TMR1L_ADDR TMR1L_ADDR SFR 0x000 // TMR1L
-#pragma memmap TMR1H_ADDR TMR1H_ADDR SFR 0x000 // TMR1H
-#pragma memmap T1CON_ADDR T1CON_ADDR SFR 0x000 // T1CON
-#pragma memmap TMR2_ADDR TMR2_ADDR SFR 0x000   // TMR2
-#pragma memmap T2CON_ADDR T2CON_ADDR SFR 0x000 // T2CON
-#pragma memmap SSPBUF_ADDR SSPBUF_ADDR SFR 0x000       // SSPBUF
-#pragma memmap SSPCON_ADDR SSPCON_ADDR SFR 0x000       // SSPCON
-#pragma memmap CCPR1L_ADDR CCPR1L_ADDR SFR 0x000       // CCPR1L
-#pragma memmap CCPR1H_ADDR CCPR1H_ADDR SFR 0x000       // CCPR1H
-#pragma memmap CCP1CON_ADDR CCP1CON_ADDR SFR 0x000     // CCP1CON
-#pragma memmap RCSTA_ADDR RCSTA_ADDR SFR 0x000 // RCSTA
-#pragma memmap TXREG_ADDR TXREG_ADDR SFR 0x000 // TXREG
-#pragma memmap RCREG_ADDR RCREG_ADDR SFR 0x000 // RCREG
-#pragma memmap CCPR2L_ADDR CCPR2L_ADDR SFR 0x000       // CCPR2L
-#pragma memmap CCPR2H_ADDR CCPR2H_ADDR SFR 0x000       // CCPR2H
-#pragma memmap CCP2CON_ADDR CCP2CON_ADDR SFR 0x000     // CCP2CON
-#pragma memmap ADRESH_ADDR ADRESH_ADDR SFR 0x000       // ADRESH
-#pragma memmap ADCON0_ADDR ADCON0_ADDR SFR 0x000       // ADCON0
-#pragma memmap OPTION_REG_ADDR OPTION_REG_ADDR SFR 0x000       // OPTION_REG
-#pragma memmap TRISA_ADDR TRISA_ADDR SFR 0x000 // TRISA
-#pragma memmap TRISB_ADDR TRISB_ADDR SFR 0x000 // TRISB
-#pragma memmap TRISC_ADDR TRISC_ADDR SFR 0x000 // TRISC
-#pragma memmap TRISD_ADDR TRISD_ADDR SFR 0x000 // TRISD
-#pragma memmap TRISE_ADDR TRISE_ADDR SFR 0x000 // TRISE
-#pragma memmap PIE1_ADDR PIE1_ADDR SFR 0x000   // PIE1
-#pragma memmap PIE2_ADDR PIE2_ADDR SFR 0x000   // PIE2
-#pragma memmap PCON_ADDR PCON_ADDR SFR 0x000   // PCON
-#pragma memmap SSPCON2_ADDR SSPCON2_ADDR SFR 0x000     // SSPCON2
-#pragma memmap PR2_ADDR PR2_ADDR SFR 0x000     // PR2
-#pragma memmap SSPADD_ADDR SSPADD_ADDR SFR 0x000       // SSPADD
-#pragma memmap SSPSTAT_ADDR SSPSTAT_ADDR SFR 0x000     // SSPSTAT
-#pragma memmap TXSTA_ADDR TXSTA_ADDR SFR 0x000 // TXSTA
-#pragma memmap SPBRG_ADDR SPBRG_ADDR SFR 0x000 // SPBRG
-#pragma memmap ADRESL_ADDR ADRESL_ADDR SFR 0x000       // ADRESL
-#pragma memmap ADCON1_ADDR ADCON1_ADDR SFR 0x000       // ADCON1
-#pragma memmap EEDATA_ADDR EEDATA_ADDR SFR 0x000       // EEDATA
-#pragma memmap EEADR_ADDR EEADR_ADDR SFR 0x000 // EEADR
-#pragma memmap EEDATH_ADDR EEDATH_ADDR SFR 0x000       // EEDATH
-#pragma memmap EEADRH_ADDR EEADRH_ADDR SFR 0x000       // EEADRH
-#pragma memmap EECON1_ADDR EECON1_ADDR SFR 0x000       // EECON1
-#pragma memmap EECON2_ADDR EECON2_ADDR SFR 0x000       // EECON2
 
 
 //         LIST
 
 //----- Register Files------------------------------------------------------
 
-extern data __at (INDF_ADDR) volatile char      INDF;
-extern sfr  __at (TMR0_ADDR)                    TMR0;
-extern data __at (PCL_ADDR) volatile char       PCL;
-extern sfr  __at (STATUS_ADDR)                  STATUS;
-extern sfr  __at (FSR_ADDR)                     FSR;
-extern sfr  __at (PORTA_ADDR)                   PORTA;
-extern sfr  __at (PORTB_ADDR)                   PORTB;
-extern sfr  __at (PORTC_ADDR)                   PORTC;
-extern sfr  __at (PORTD_ADDR)                   PORTD;
-extern sfr  __at (PORTE_ADDR)                   PORTE;
-extern sfr  __at (PCLATH_ADDR)                  PCLATH;
-extern sfr  __at (INTCON_ADDR)                  INTCON;
-extern sfr  __at (PIR1_ADDR)                    PIR1;
-extern sfr  __at (PIR2_ADDR)                    PIR2;
-extern sfr  __at (TMR1L_ADDR)                   TMR1L;
-extern sfr  __at (TMR1H_ADDR)                   TMR1H;
-extern sfr  __at (T1CON_ADDR)                   T1CON;
-extern sfr  __at (TMR2_ADDR)                    TMR2;
-extern sfr  __at (T2CON_ADDR)                   T2CON;
-extern sfr  __at (SSPBUF_ADDR)                  SSPBUF;
-extern sfr  __at (SSPCON_ADDR)                  SSPCON;
-extern sfr  __at (CCPR1L_ADDR)                  CCPR1L;
-extern sfr  __at (CCPR1H_ADDR)                  CCPR1H;
-extern sfr  __at (CCP1CON_ADDR)                 CCP1CON;
-extern sfr  __at (RCSTA_ADDR)                   RCSTA;
-extern sfr  __at (TXREG_ADDR)                   TXREG;
-extern sfr  __at (RCREG_ADDR)                   RCREG;
-extern sfr  __at (CCPR2L_ADDR)                  CCPR2L;
-extern sfr  __at (CCPR2H_ADDR)                  CCPR2H;
-extern sfr  __at (CCP2CON_ADDR)                 CCP2CON;
-extern sfr  __at (ADRESH_ADDR)                  ADRESH;
-extern sfr  __at (ADCON0_ADDR)                  ADCON0;
-
-extern sfr  __at (OPTION_REG_ADDR)              OPTION_REG;
-extern sfr  __at (TRISA_ADDR)                   TRISA;
-extern sfr  __at (TRISB_ADDR)                   TRISB;
-extern sfr  __at (TRISC_ADDR)                   TRISC;
-extern sfr  __at (TRISD_ADDR)                   TRISD;
-extern sfr  __at (TRISE_ADDR)                   TRISE;
-extern sfr  __at (PIE1_ADDR)                    PIE1;
-extern sfr  __at (PIE2_ADDR)                    PIE2;
-extern sfr  __at (PCON_ADDR)                    PCON;
-extern sfr  __at (SSPCON2_ADDR)                 SSPCON2;
-extern sfr  __at (PR2_ADDR)                     PR2;
-extern sfr  __at (SSPADD_ADDR)                  SSPADD;
-extern sfr  __at (SSPSTAT_ADDR)                 SSPSTAT;
-extern sfr  __at (TXSTA_ADDR)                   TXSTA;
-extern sfr  __at (SPBRG_ADDR)                   SPBRG;
-extern sfr  __at (ADRESL_ADDR)                  ADRESL;
-extern sfr  __at (ADCON1_ADDR)                  ADCON1;
-
-extern sfr  __at (EEDATA_ADDR)                  EEDATA;
-extern sfr  __at (EEADR_ADDR)                   EEADR;
-extern sfr  __at (EEDATH_ADDR)                  EEDATH;
-extern sfr  __at (EEADRH_ADDR)                  EEADRH;
-
-extern sfr  __at (EECON1_ADDR)                  EECON1;
-extern sfr  __at (EECON2_ADDR)                  EECON2;
+extern __sfr  __at (INDF_ADDR)                    INDF;
+extern __sfr  __at (TMR0_ADDR)                    TMR0;
+extern __sfr  __at (PCL_ADDR)                     PCL;
+extern __sfr  __at (STATUS_ADDR)                  STATUS;
+extern __sfr  __at (FSR_ADDR)                     FSR;
+extern __sfr  __at (PORTA_ADDR)                   PORTA;
+extern __sfr  __at (PORTB_ADDR)                   PORTB;
+extern __sfr  __at (PORTC_ADDR)                   PORTC;
+extern __sfr  __at (PORTD_ADDR)                   PORTD;
+extern __sfr  __at (PORTE_ADDR)                   PORTE;
+extern __sfr  __at (PCLATH_ADDR)                  PCLATH;
+extern __sfr  __at (INTCON_ADDR)                  INTCON;
+extern __sfr  __at (PIR1_ADDR)                    PIR1;
+extern __sfr  __at (PIR2_ADDR)                    PIR2;
+extern __sfr  __at (TMR1L_ADDR)                   TMR1L;
+extern __sfr  __at (TMR1H_ADDR)                   TMR1H;
+extern __sfr  __at (T1CON_ADDR)                   T1CON;
+extern __sfr  __at (TMR2_ADDR)                    TMR2;
+extern __sfr  __at (T2CON_ADDR)                   T2CON;
+extern __sfr  __at (SSPBUF_ADDR)                  SSPBUF;
+extern __sfr  __at (SSPCON_ADDR)                  SSPCON;
+extern __sfr  __at (CCPR1L_ADDR)                  CCPR1L;
+extern __sfr  __at (CCPR1H_ADDR)                  CCPR1H;
+extern __sfr  __at (CCP1CON_ADDR)                 CCP1CON;
+extern __sfr  __at (RCSTA_ADDR)                   RCSTA;
+extern __sfr  __at (TXREG_ADDR)                   TXREG;
+extern __sfr  __at (RCREG_ADDR)                   RCREG;
+extern __sfr  __at (CCPR2L_ADDR)                  CCPR2L;
+extern __sfr  __at (CCPR2H_ADDR)                  CCPR2H;
+extern __sfr  __at (CCP2CON_ADDR)                 CCP2CON;
+extern __sfr  __at (ADRESH_ADDR)                  ADRESH;
+extern __sfr  __at (ADCON0_ADDR)                  ADCON0;
+
+extern __sfr  __at (OPTION_REG_ADDR)              OPTION_REG;
+extern __sfr  __at (TRISA_ADDR)                   TRISA;
+extern __sfr  __at (TRISB_ADDR)                   TRISB;
+extern __sfr  __at (TRISC_ADDR)                   TRISC;
+extern __sfr  __at (TRISD_ADDR)                   TRISD;
+extern __sfr  __at (TRISE_ADDR)                   TRISE;
+extern __sfr  __at (PIE1_ADDR)                    PIE1;
+extern __sfr  __at (PIE2_ADDR)                    PIE2;
+extern __sfr  __at (PCON_ADDR)                    PCON;
+extern __sfr  __at (SSPCON2_ADDR)                 SSPCON2;
+extern __sfr  __at (PR2_ADDR)                     PR2;
+extern __sfr  __at (SSPADD_ADDR)                  SSPADD;
+extern __sfr  __at (SSPSTAT_ADDR)                 SSPSTAT;
+extern __sfr  __at (TXSTA_ADDR)                   TXSTA;
+extern __sfr  __at (SPBRG_ADDR)                   SPBRG;
+extern __sfr  __at (ADRESL_ADDR)                  ADRESL;
+extern __sfr  __at (ADCON1_ADDR)                  ADCON1;
+
+extern __sfr  __at (EEDATA_ADDR)                  EEDATA;
+extern __sfr  __at (EEADR_ADDR)                   EEADR;
+extern __sfr  __at (EEDATH_ADDR)                  EEDATH;
+extern __sfr  __at (EEADRH_ADDR)                  EEADRH;
+
+extern __sfr  __at (EECON1_ADDR)                  EECON1;
+extern __sfr  __at (EECON2_ADDR)                  EECON2;
 
 //----- STATUS Bits --------------------------------------------------------
 
@@ -284,7 +229,7 @@ extern sfr  __at (EECON2_ADDR)                  EECON2;
 //----- ADCON0 Bits --------------------------------------------------------
 
 
-//----- OPTION Bits -----------------------------------------------------
+//----- OPTION_REG Bits -----------------------------------------------------
 
 
 //----- TRISE Bits ---------------------------------------------------------
@@ -650,6 +595,119 @@ extern volatile __PIR2_bits_t __at(PIR2_ADDR) PIR2_bits;
 #define BCLIF                PIR2_bits.BCLIF
 #define EEIF                 PIR2_bits.EEIF
 
+// ----- PORTA bits --------------------
+typedef union {
+  struct {
+    unsigned char RA0:1;
+    unsigned char RA1:1;
+    unsigned char RA2:1;
+    unsigned char RA3:1;
+    unsigned char RA4:1;
+    unsigned char RA5:1;
+    unsigned char :1;
+    unsigned char :1;
+  };
+} __PORTA_bits_t;
+extern volatile __PORTA_bits_t __at(PORTA_ADDR) PORTA_bits;
+
+#define RA0                  PORTA_bits.RA0
+#define RA1                  PORTA_bits.RA1
+#define RA2                  PORTA_bits.RA2
+#define RA3                  PORTA_bits.RA3
+#define RA4                  PORTA_bits.RA4
+#define RA5                  PORTA_bits.RA5
+
+// ----- PORTB bits --------------------
+typedef union {
+  struct {
+    unsigned char RB0:1;
+    unsigned char RB1:1;
+    unsigned char RB2:1;
+    unsigned char RB3:1;
+    unsigned char RB4:1;
+    unsigned char RB5:1;
+    unsigned char RB6:1;
+    unsigned char RB7:1;
+  };
+} __PORTB_bits_t;
+extern volatile __PORTB_bits_t __at(PORTB_ADDR) PORTB_bits;
+
+#define RB0                  PORTB_bits.RB0
+#define RB1                  PORTB_bits.RB1
+#define RB2                  PORTB_bits.RB2
+#define RB3                  PORTB_bits.RB3
+#define RB4                  PORTB_bits.RB4
+#define RB5                  PORTB_bits.RB5
+#define RB6                  PORTB_bits.RB6
+#define RB7                  PORTB_bits.RB7
+
+// ----- PORTC bits --------------------
+typedef union {
+  struct {
+    unsigned char RC0:1;
+    unsigned char RC1:1;
+    unsigned char RC2:1;
+    unsigned char RC3:1;
+    unsigned char RC4:1;
+    unsigned char RC5:1;
+    unsigned char RC6:1;
+    unsigned char RC7:1;
+  };
+} __PORTC_bits_t;
+extern volatile __PORTC_bits_t __at(PORTC_ADDR) PORTC_bits;
+
+#define RC0                  PORTC_bits.RC0
+#define RC1                  PORTC_bits.RC1
+#define RC2                  PORTC_bits.RC2
+#define RC3                  PORTC_bits.RC3
+#define RC4                  PORTC_bits.RC4
+#define RC5                  PORTC_bits.RC5
+#define RC6                  PORTC_bits.RC6
+#define RC7                  PORTC_bits.RC7
+
+// ----- PORTD bits --------------------
+typedef union {
+  struct {
+    unsigned char RD0:1;
+    unsigned char RD1:1;
+    unsigned char RD2:1;
+    unsigned char RD3:1;
+    unsigned char RD4:1;
+    unsigned char RD5:1;
+    unsigned char RD6:1;
+    unsigned char RD7:1;
+  };
+} __PORTD_bits_t;
+extern volatile __PORTD_bits_t __at(PORTD_ADDR) PORTD_bits;
+
+#define RD0                  PORTD_bits.RD0
+#define RD1                  PORTD_bits.RD1
+#define RD2                  PORTD_bits.RD2
+#define RD3                  PORTD_bits.RD3
+#define RD4                  PORTD_bits.RD4
+#define RD5                  PORTD_bits.RD5
+#define RD6                  PORTD_bits.RD6
+#define RD7                  PORTD_bits.RD7
+
+// ----- PORTE bits --------------------
+typedef union {
+  struct {
+    unsigned char RE0:1;
+    unsigned char RE1:1;
+    unsigned char RE2:1;
+    unsigned char :1;
+    unsigned char :1;
+    unsigned char :1;
+    unsigned char :1;
+    unsigned char :1;
+  };
+} __PORTE_bits_t;
+extern volatile __PORTE_bits_t __at(PORTE_ADDR) PORTE_bits;
+
+#define RE0                  PORTE_bits.RE0
+#define RE1                  PORTE_bits.RE1
+#define RE2                  PORTE_bits.RE2
+
 // ----- RCSTA bits --------------------
 typedef union {
   struct {
@@ -933,6 +991,100 @@ extern volatile __T2CON_bits_t __at(T2CON_ADDR) T2CON_bits;
 #define TOUTPS2              T2CON_bits.TOUTPS2
 #define TOUTPS3              T2CON_bits.TOUTPS3
 
+// ----- TRISA bits --------------------
+typedef union {
+  struct {
+    unsigned char TRISA0:1;
+    unsigned char TRISA1:1;
+    unsigned char TRISA2:1;
+    unsigned char TRISA3:1;
+    unsigned char TRISA4:1;
+    unsigned char TRISA5:1;
+    unsigned char :1;
+    unsigned char :1;
+  };
+} __TRISA_bits_t;
+extern volatile __TRISA_bits_t __at(TRISA_ADDR) TRISA_bits;
+
+#define TRISA0               TRISA_bits.TRISA0
+#define TRISA1               TRISA_bits.TRISA1
+#define TRISA2               TRISA_bits.TRISA2
+#define TRISA3               TRISA_bits.TRISA3
+#define TRISA4               TRISA_bits.TRISA4
+#define TRISA5               TRISA_bits.TRISA5
+
+// ----- TRISB bits --------------------
+typedef union {
+  struct {
+    unsigned char TRISB0:1;
+    unsigned char TRISB1:1;
+    unsigned char TRISB2:1;
+    unsigned char TRISB3:1;
+    unsigned char TRISB4:1;
+    unsigned char TRISB5:1;
+    unsigned char TRISB6:1;
+    unsigned char TRISB7:1;
+  };
+} __TRISB_bits_t;
+extern volatile __TRISB_bits_t __at(TRISB_ADDR) TRISB_bits;
+
+#define TRISB0               TRISB_bits.TRISB0
+#define TRISB1               TRISB_bits.TRISB1
+#define TRISB2               TRISB_bits.TRISB2
+#define TRISB3               TRISB_bits.TRISB3
+#define TRISB4               TRISB_bits.TRISB4
+#define TRISB5               TRISB_bits.TRISB5
+#define TRISB6               TRISB_bits.TRISB6
+#define TRISB7               TRISB_bits.TRISB7
+
+// ----- TRISC bits --------------------
+typedef union {
+  struct {
+    unsigned char TRISC0:1;
+    unsigned char TRISC1:1;
+    unsigned char TRISC2:1;
+    unsigned char TRISC3:1;
+    unsigned char TRISC4:1;
+    unsigned char TRISC5:1;
+    unsigned char TRISC6:1;
+    unsigned char TRISC7:1;
+  };
+} __TRISC_bits_t;
+extern volatile __TRISC_bits_t __at(TRISC_ADDR) TRISC_bits;
+
+#define TRISC0               TRISC_bits.TRISC0
+#define TRISC1               TRISC_bits.TRISC1
+#define TRISC2               TRISC_bits.TRISC2
+#define TRISC3               TRISC_bits.TRISC3
+#define TRISC4               TRISC_bits.TRISC4
+#define TRISC5               TRISC_bits.TRISC5
+#define TRISC6               TRISC_bits.TRISC6
+#define TRISC7               TRISC_bits.TRISC7
+
+// ----- TRISD bits --------------------
+typedef union {
+  struct {
+    unsigned char TRISD0:1;
+    unsigned char TRISD1:1;
+    unsigned char TRISD2:1;
+    unsigned char TRISD3:1;
+    unsigned char TRISD4:1;
+    unsigned char TRISD5:1;
+    unsigned char TRISD6:1;
+    unsigned char TRISD7:1;
+  };
+} __TRISD_bits_t;
+extern volatile __TRISD_bits_t __at(TRISD_ADDR) TRISD_bits;
+
+#define TRISD0               TRISD_bits.TRISD0
+#define TRISD1               TRISD_bits.TRISD1
+#define TRISD2               TRISD_bits.TRISD2
+#define TRISD3               TRISD_bits.TRISD3
+#define TRISD4               TRISD_bits.TRISD4
+#define TRISD5               TRISD_bits.TRISD5
+#define TRISD6               TRISD_bits.TRISD6
+#define TRISD7               TRISD_bits.TRISD7
+
 // ----- TRISE bits --------------------
 typedef union {
   struct {