* device/include/mcs51/at89s8253.h: new, thanks to Krzysztof Polomka
authormaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 16 Feb 2006 11:11:51 +0000 (11:11 +0000)
committermaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 16 Feb 2006 11:11:51 +0000 (11:11 +0000)
* device/include/mcs51/at89S8252.h: fixed, thanks to Krzysztof Polomka
* device/include/mcs51/c8051f326.h,
* device/include/mcs51/c8051f340.h: new SiLabs mcu's
* device/include/mcs51/c8051f000.h,
* device/include/mcs51/c8051f018.h,
* device/include/mcs51/c8051f020.h: used () with __at, renamed IDLE,STOP to
  PCON_IDLE,PCON_STOP and added sfr16 definitions

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4044 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
device/include/mcs51/at89S8252.h
device/include/mcs51/at89s8253.h [new file with mode: 0644]
device/include/mcs51/c8051f000.h
device/include/mcs51/c8051f018.h
device/include/mcs51/c8051f020.h
device/include/mcs51/c8051f326.h [new file with mode: 0644]
device/include/mcs51/c8051f340.h [new file with mode: 0644]

index 93d49ad53ca5d0c71220a2cf46592da9acb420c1..5b3e2f46d69fb6e215093e8e471c901510280cce 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2006-02-16 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * device/include/mcs51/at89s8253.h: new, thanks to Krzysztof Polomka
+       * device/include/mcs51/at89S8252.h: fixed, thanks to Krzysztof Polomka
+       * device/include/mcs51/c8051f326.h,
+       * device/include/mcs51/c8051f340.h: new SiLabs mcu's
+       * device/include/mcs51/c8051f000.h,
+       * device/include/mcs51/c8051f018.h,
+       * device/include/mcs51/c8051f020.h: used () with __at, renamed IDLE,STOP to
+         PCON_IDLE,PCON_STOP and added sfr16 definitions
+
 2006-02-14 Maarten Brock <sourceforge.brock AT dse.nl>
 
        * src/mcs51/gen.c (genPlus, genMinus, genMult, genGetAbit, genGetByte,
index 75096ffdc4af1dd0a14dc3bf5ffcc6f1b511c5ba..1c0902048253b47815e90cbc8847f0653791faa4 100644 (file)
@@ -13,6 +13,9 @@
     based on reg51.h by Sandeep Dutta sandeep.dutta@usa.net
     KEIL C compatible definitions are included
 
+    Bug-Fix Feb 16 2006
+      by Krzysztof Polomka <del_p@op.pl>
+
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
    Free Software Foundation; either version 2, or (at your option) any
 #define AT89S8252_H
 
 /* BYTE addressable registers */
-__sfr __at 0x80 P0          ;
-__sfr __at 0x81 SP          ;
-__sfr __at 0x82 DPL         ;
-__sfr __at 0x82 DP0L        ; /* as called by Atmel */
-__sfr __at 0x83 DPH         ;
-__sfr __at 0x83 DP0H        ; /* as called by Atmel */
-__sfr __at 0x84 DP1L        ; /* at89S8252 specific register */
-__sfr __at 0x85 DP1H        ; /* at89S8252 specific register */
-__sfr __at 0x86 SPDR        ; /* at89S8252 specific register */
-__sfr __at 0x87 PCON        ;
-__sfr __at 0x88 TCON        ;
-__sfr __at 0x89 TMOD        ;
-__sfr __at 0x8A TL0         ;
-__sfr __at 0x8B TL1         ;
-__sfr __at 0x8C TH0         ;
-__sfr __at 0x8D TH1         ;
-__sfr __at 0x90 P1          ;
-__sfr __at 0x96 WMCON       ; /* at89S8252 specific register */
-__sfr __at 0x98 SCON        ;
-__sfr __at 0x99 SBUF        ;
-__sfr __at 0xA0 P2          ;
-__sfr __at 0xA8 IE          ;
-__sfr __at 0xAA SPSR        ; /* at89S8252 specific register */
-__sfr __at 0xB0 P3          ;
-__sfr __at 0xB8 IP          ;
-__sfr __at 0xC8 T2CON       ;
-__sfr __at 0xC9 T2MOD       ;
-__sfr __at 0xCA RCAP2L      ;
-__sfr __at 0xCB RCAP2H      ;
-__sfr __at 0xCC TL2         ;
-__sfr __at 0xCD TH2         ;
-__sfr __at 0xD0 PSW         ;
-__sfr __at 0xD5 SPCR        ; /* at89S8252 specific register */
-__sfr __at 0xE0 ACC         ;
-__sfr __at 0xE0 A           ;
-__sfr __at 0xF0 B           ;
+__sfr __at (0x80) P0          ;
+__sfr __at (0x81) SP          ;
+__sfr __at (0x82) DPL         ;
+__sfr __at (0x82) DP0L        ; /* as called by Atmel */
+__sfr __at (0x83) DPH         ;
+__sfr __at (0x83) DP0H        ; /* as called by Atmel */
+__sfr __at (0x84) DP1L        ; /* at89S8252 specific register */
+__sfr __at (0x85) DP1H        ; /* at89S8252 specific register */
+__sfr __at (0x86) SPDR        ; /* at89S8252 specific register */
+__sfr __at (0x87) PCON        ;
+__sfr __at (0x88) TCON        ;
+__sfr __at (0x89) TMOD        ;
+__sfr __at (0x8A) TL0         ;
+__sfr __at (0x8B) TL1         ;
+__sfr __at (0x8C) TH0         ;
+__sfr __at (0x8D) TH1         ;
+__sfr __at (0x90) P1          ;
+__sfr __at (0x96) WMCON       ; /* at89S8252 specific register */
+__sfr __at (0x98) SCON        ;
+__sfr __at (0x99) SBUF        ;
+__sfr __at (0xA0) P2          ;
+__sfr __at (0xA8) IE          ;
+__sfr __at (0xAA) SPSR        ; /* at89S8252 specific register */
+__sfr __at (0xB0) P3          ;
+__sfr __at (0xB8) IP          ;
+__sfr __at (0xC8) T2CON       ;
+__sfr __at (0xC9) T2MOD       ;
+__sfr __at (0xCA) RCAP2L      ;
+__sfr __at (0xCB) RCAP2H      ;
+__sfr __at (0xCC) TL2         ;
+__sfr __at (0xCD) TH2         ;
+__sfr __at (0xD0) PSW         ;
+__sfr __at (0xD5) SPCR        ; /* at89S8252 specific register */
+__sfr __at (0xE0) ACC         ;
+__sfr __at (0xE0) A           ;
+__sfr __at (0xF0) B           ;
 
 
 /* BIT addressable registers */
 /* P0 */
-__sbit __at 0x80 P0_0       ;
-__sbit __at 0x81 P0_1       ;
-__sbit __at 0x82 P0_2       ;
-__sbit __at 0x83 P0_3       ;
-__sbit __at 0x84 P0_4       ;
-__sbit __at 0x85 P0_5       ;
-__sbit __at 0x86 P0_6       ;
-__sbit __at 0x87 P0_7       ;
+__sbit __at (0x80) P0_0       ;
+__sbit __at (0x81) P0_1       ;
+__sbit __at (0x82) P0_2       ;
+__sbit __at (0x83) P0_3       ;
+__sbit __at (0x84) P0_4       ;
+__sbit __at (0x85) P0_5       ;
+__sbit __at (0x86) P0_6       ;
+__sbit __at (0x87) P0_7       ;
 
 /* TCON */
-__sbit __at 0x88 IT0        ;
-__sbit __at 0x89 IE0        ;
-__sbit __at 0x8A IT1        ;
-__sbit __at 0x8B IE1        ;
-__sbit __at 0x8C TR0        ;
-__sbit __at 0x8D TF0        ;
-__sbit __at 0x8E TR1        ;
-__sbit __at 0x8F TF1        ;
+__sbit __at (0x88) IT0        ;
+__sbit __at (0x89) IE0        ;
+__sbit __at (0x8A) IT1        ;
+__sbit __at (0x8B) IE1        ;
+__sbit __at (0x8C) TR0        ;
+__sbit __at (0x8D) TF0        ;
+__sbit __at (0x8E) TR1        ;
+__sbit __at (0x8F) TF1        ;
 
 /* P1 */
-__sbit __at 0x90 P1_0       ;
-__sbit __at 0x91 P1_1       ;
-__sbit __at 0x92 P1_2       ;
-__sbit __at 0x93 P1_3       ;
-__sbit __at 0x94 P1_4       ;
-__sbit __at 0x95 P1_5       ;
-__sbit __at 0x96 P1_6       ;
-__sbit __at 0x97 P1_7       ;
-
-__sbit __at 0x90 T2         ;
-__sbit __at 0x91 T2EX       ;
+__sbit __at (0x90) P1_0       ;
+__sbit __at (0x91) P1_1       ;
+__sbit __at (0x92) P1_2       ;
+__sbit __at (0x93) P1_3       ;
+__sbit __at (0x94) P1_4       ;
+__sbit __at (0x95) P1_5       ;
+__sbit __at (0x96) P1_6       ;
+__sbit __at (0x97) P1_7       ;
+
+__sbit __at (0x90) T2         ;
+__sbit __at (0x91) T2EX       ;
 
 /* P1 SPI portpins */
-__sbit __at 0x94 SS;           /* SPI: SS - Slave port select input */
-__sbit __at 0x95 MOSI;         /* SPI: MOSI - Master data output, slave data input */
-__sbit __at 0x96 MISO;         /* SPI: MISO - Master data input, slave data output */
-__sbit __at 0x97 SCK;          /* SPI: SCK - Master clock output, slave clock input */
+__sbit __at (0x94) SS         ; /* SPI: SS - Slave port select input */
+__sbit __at (0x95) MOSI       ; /* SPI: MOSI - Master data output, slave data input */
+__sbit __at (0x96) MISO       ; /* SPI: MISO - Master data input, slave data output */
+__sbit __at (0x97) SCK        ; /* SPI: SCK - Master clock output, slave clock input */
 
 
 /* SCON */
-__sbit __at 0x98 RI         ;
-__sbit __at 0x99 TI         ;
-__sbit __at 0x9A RB8        ;
-__sbit __at 0x9B TB8        ;
-__sbit __at 0x9C REN        ;
-__sbit __at 0x9D SM2        ;
-__sbit __at 0x9E SM1        ;
-__sbit __at 0x9F SM0        ;
+__sbit __at (0x98) RI         ;
+__sbit __at (0x99) TI         ;
+__sbit __at (0x9A) RB8        ;
+__sbit __at (0x9B) TB8        ;
+__sbit __at (0x9C) REN        ;
+__sbit __at (0x9D) SM2        ;
+__sbit __at (0x9E) SM1        ;
+__sbit __at (0x9F) SM0        ;
 
 /* P2 */
-__sbit __at 0xA0 P2_0       ;
-__sbit __at 0xA1 P2_1       ;
-__sbit __at 0xA2 P2_2       ;
-__sbit __at 0xA3 P2_3       ;
-__sbit __at 0xA4 P2_4       ;
-__sbit __at 0xA5 P2_5       ;
-__sbit __at 0xA6 P2_6       ;
-__sbit __at 0xA7 P2_7       ;
+__sbit __at (0xA0) P2_0       ;
+__sbit __at (0xA1) P2_1       ;
+__sbit __at (0xA2) P2_2       ;
+__sbit __at (0xA3) P2_3       ;
+__sbit __at (0xA4) P2_4       ;
+__sbit __at (0xA5) P2_5       ;
+__sbit __at (0xA6) P2_6       ;
+__sbit __at (0xA7) P2_7       ;
 
 /* IE */
-__sbit __at 0xA8 EX0        ;
-__sbit __at 0xA9 ET0        ;
-__sbit __at 0xAA EX1        ;
-__sbit __at 0xAB ET1        ;
-__sbit __at 0xAC ES         ;
-__sbit __at 0xAD ET2        ;
-__sbit __at 0xAF EA         ;
+__sbit __at (0xA8) EX0        ;
+__sbit __at (0xA9) ET0        ;
+__sbit __at (0xAA) EX1        ;
+__sbit __at (0xAB) ET1        ;
+__sbit __at (0xAC) ES         ;
+__sbit __at (0xAD) ET2        ;
+__sbit __at (0xAF) EA         ;
 
 /* P3 */
-__sbit __at 0xB0 P3_0       ;
-__sbit __at 0xB1 P3_1       ;
-__sbit __at 0xB2 P3_2       ;
-__sbit __at 0xB3 P3_3       ;
-__sbit __at 0xB4 P3_4       ;
-__sbit __at 0xB5 P3_5       ;
-__sbit __at 0xB6 P3_6       ;
-__sbit __at 0xB7 P3_7       ;
-
-__sbit __at 0xB0 RXD        ;
-__sbit __at 0xB1 TXD        ;
-__sbit __at 0xB2 INT0       ;
-__sbit __at 0xB3 INT1       ;
-__sbit __at 0xB4 T0         ;
-__sbit __at 0xB5 T1         ;
-__sbit __at 0xB6 WR         ;
-__sbit __at 0xB7 RD         ;
+__sbit __at (0xB0) P3_0       ;
+__sbit __at (0xB1) P3_1       ;
+__sbit __at (0xB2) P3_2       ;
+__sbit __at (0xB3) P3_3       ;
+__sbit __at (0xB4) P3_4       ;
+__sbit __at (0xB5) P3_5       ;
+__sbit __at (0xB6) P3_6       ;
+__sbit __at (0xB7) P3_7       ;
+
+__sbit __at (0xB0) RXD        ;
+__sbit __at (0xB1) TXD        ;
+__sbit __at (0xB2) INT0       ;
+__sbit __at (0xB3) INT1       ;
+__sbit __at (0xB4) T0         ;
+__sbit __at (0xB5) T1         ;
+__sbit __at (0xB6) WR         ;
+__sbit __at (0xB7) RD         ;
 
 /* IP */
-__sbit __at 0xB8 PX0        ;
-__sbit __at 0xB9 PT0        ;
-__sbit __at 0xBA PX1        ;
-__sbit __at 0xBB PT1        ;
-__sbit __at 0xBC PS         ;
-__sbit __at 0xBD PT2        ;
+__sbit __at (0xB8) PX0        ;
+__sbit __at (0xB9) PT0        ;
+__sbit __at (0xBA) PX1        ;
+__sbit __at (0xBB) PT1        ;
+__sbit __at (0xBC) PS         ;
+__sbit __at (0xBD) PT2        ;
 
 /* T2CON */
-__sbit __at 0xC8 T2CON_0    ;
-__sbit __at 0xC9 T2CON_1    ;
-__sbit __at 0xCA T2CON_2    ;
-__sbit __at 0xCB T2CON_3    ;
-__sbit __at 0xCC T2CON_4    ;
-__sbit __at 0xCD T2CON_5    ;
-__sbit __at 0xCE T2CON_6    ;
-__sbit __at 0xCF T2CON_7    ;
-
-__sbit __at 0xC8 CP_RL2     ;
-__sbit __at 0xC9 C_T2       ;
-__sbit __at 0xCA TR2        ;
-__sbit __at 0xCB EXEN2      ;
-__sbit __at 0xCC TCLK       ;
-__sbit __at 0xCD RCLK       ;
-__sbit __at 0xCE EXF2       ;
-__sbit __at 0xCF TF2        ;
+__sbit __at (0xC8) T2CON_0    ;
+__sbit __at (0xC9) T2CON_1    ;
+__sbit __at (0xCA) T2CON_2    ;
+__sbit __at (0xCB) T2CON_3    ;
+__sbit __at (0xCC) T2CON_4    ;
+__sbit __at (0xCD) T2CON_5    ;
+__sbit __at (0xCE) T2CON_6    ;
+__sbit __at (0xCF) T2CON_7    ;
+
+__sbit __at (0xC8) CP_RL2     ;
+__sbit __at (0xC9) C_T2       ;
+__sbit __at (0xCA) TR2        ;
+__sbit __at (0xCB) EXEN2      ;
+__sbit __at (0xCC) TCLK       ;
+__sbit __at (0xCD) RCLK       ;
+__sbit __at (0xCE) EXF2       ;
+__sbit __at (0xCF) TF2        ;
 
 /* PSW */
-__sbit __at 0xD0 P          ;
-__sbit __at 0xD1 FL         ;
-__sbit __at 0xD2 OV         ;
-__sbit __at 0xD3 RS0        ;
-__sbit __at 0xD4 RS1        ;
-__sbit __at 0xD5 F0         ;
-__sbit __at 0xD6 AC         ;
-__sbit __at 0xD7 CY         ;
+__sbit __at (0xD0) P          ;
+__sbit __at (0xD1) FL         ;
+__sbit __at (0xD2) OV         ;
+__sbit __at (0xD3) RS0        ;
+__sbit __at (0xD4) RS1        ;
+__sbit __at (0xD5) F0         ;
+__sbit __at (0xD6) AC         ;
+__sbit __at (0xD7) CY         ;
 
 /* B */
-__sbit __at 0xF0 BREG_F0    ;
-__sbit __at 0xF1 BREG_F1    ;
-__sbit __at 0xF2 BREG_F2    ;
-__sbit __at 0xF3 BREG_F3    ;
-__sbit __at 0xF4 BREG_F4    ;
-__sbit __at 0xF5 BREG_F5    ;
-__sbit __at 0xF6 BREG_F6    ;
-__sbit __at 0xF7 BREG_F7    ;
+__sbit __at (0xF0) BREG_F0    ;
+__sbit __at (0xF1) BREG_F1    ;
+__sbit __at (0xF2) BREG_F2    ;
+__sbit __at (0xF3) BREG_F3    ;
+__sbit __at (0xF4) BREG_F4    ;
+__sbit __at (0xF5) BREG_F5    ;
+__sbit __at (0xF6) BREG_F6    ;
+__sbit __at (0xF7) BREG_F7    ;
 
 
 /* BIT definitions for bits that are not directly accessible */
@@ -300,10 +303,10 @@ __sbit __at 0xF7 BREG_F7    ;
 #define SPSR_SPIF       0x80
 
 /* SPDR-SPI bits */
-#define SPDR_SPD0       0x10
-#define SPDR_SPD1       0x20
-#define SPDR_SPD2       0x40
-#define SPDR_SPD3       0x80
+#define SPDR_SPD0       0x01
+#define SPDR_SPD1       0x02
+#define SPDR_SPD2       0x04
+#define SPDR_SPD3       0x08
 #define SPDR_SPD4       0x10
 #define SPDR_SPD5       0x20
 #define SPDR_SPD6       0x40
@@ -321,21 +324,20 @@ __sbit __at 0xF7 BREG_F7    ;
 #define EX2_VECTOR      5       /* 0x2B external interrupt 2 */
 
 
-/* This is one of the addons comming from Bernd Krueger-Knauber */
+/* This is one of the addons coming from Bernd Krueger-Knauber   */
 
 /* ALE (0x8E) Bit Values */
 __sfr __at 0x8E ALE;           /* at89S8252 specific register */
 
 /* Macro to enable and disable the toggling of the ALE-pin (EMV) */
 
-/* Explanation : Orignal Intel 8051 Cores (Atmel has to use the  */
-/* Intel Core) have a festure that ALE is only active during     */
+/* Explanation : Original Intel 8051 Cores (Atmel has to use the */
+/* Intel Core) have a feature that ALE is only active during     */
 /* MOVX or MOVC instruction. Otherwise the ALE-Pin is weakly     */
 /* pulled high. This can be used to force some external devices  */
-/* into stanby mode and reduced EMI noise                        */
+/* into standby mode and reduced EMI noise                       */
 
 #define ALE_OFF  ALE = ALE | 0x01
 #define ALE_ON   ALE = ALE & 0xFE
 
 #endif
-
diff --git a/device/include/mcs51/at89s8253.h b/device/include/mcs51/at89s8253.h
new file mode 100644 (file)
index 0000000..36238e0
--- /dev/null
@@ -0,0 +1,374 @@
+/*-------------------------------------------------------------------------
+  Register Declarations for ATMEL 89S8253 Processors
+
+   Written By - Krzysztof Polomka <del_p@op.pl>
+
+    based on at89S8252.h By - Dipl.-Ing. (FH) Michael Schmitt
+    mschmitt@mainz-online.de
+    michael.schmitt@t-online.de
+
+    Bug-Fix Jun 29 1999
+
+    Additional definitions Nov 23 1999
+      by Bernd Krueger-Knauber <bkk@infratec-plus.de>
+
+    based on reg51.h by Sandeep Dutta sandeep.dutta@usa.net
+    KEIL C compatible definitions are included
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+   In other words, you are welcome to use, share and improve this program.
+   You are forbidden to forbid anyone else to use, share and improve
+   what you give them.   Help stamp out software-hoarding!
+-------------------------------------------------------------------------*/
+
+#ifndef AT89S8253_H
+#define AT89S8253_H
+
+/* BYTE addressable registers */
+__sfr __at (0x80) P0          ;
+__sfr __at (0x81) SP          ;
+__sfr __at (0x82) DPL         ;
+__sfr __at (0x82) DP0L        ; /* as called by Atmel */
+__sfr __at (0x83) DPH         ;
+__sfr __at (0x83) DP0H        ; /* as called by Atmel */
+__sfr __at (0x84) DP1L        ; /* at89S8253 specific register */
+__sfr __at (0x85) DP1H        ; /* at89S8253 specific register */
+__sfr __at (0x86) SPDR        ; /* at89S8253 specific register */
+__sfr __at (0x87) PCON        ;
+__sfr __at (0x88) TCON        ;
+__sfr __at (0x89) TMOD        ;
+__sfr __at (0x8A) TL0         ;
+__sfr __at (0x8B) TL1         ;
+__sfr __at (0x8C) TH0         ;
+__sfr __at (0x8D) TH1         ;
+__sfr __at (0x8E) AUXR        ; /* at89S8253 specific register */
+__sfr __at (0x8F) CLKREG      ; /* at89S8253 specific register */
+__sfr __at (0x90) P1          ;
+__sfr __at (0x96) EECON       ; /* at89S8253 specific register */
+__sfr __at (0x98) SCON        ;
+__sfr __at (0x99) SBUF        ;
+__sfr __at (0xA0) P2          ;
+__sfr __at (0xA6) WDTRST      ; /* at89S8253 specific register */
+__sfr __at (0xA7) WDTCON      ; /* at89S8253 specific register */
+__sfr __at (0xA8) IE          ;
+__sfr __at (0xA9) SADDR       ; /* at89S8253 specific register */
+__sfr __at (0xAA) SPSR        ; /* at89S8253 specific register */
+__sfr __at (0xB0) P3          ;
+__sfr __at (0xB7) IPH         ; /* at89S8253 specific register */
+__sfr __at (0xB8) IP          ;
+__sfr __at (0xB9) SADEN       ; /* at89S8253 specific register */
+__sfr __at (0xC8) T2CON       ;
+__sfr __at (0xC9) T2MOD       ;
+__sfr __at (0xCA) RCAP2L      ;
+__sfr __at (0xCB) RCAP2H      ;
+__sfr __at (0xCC) TL2         ;
+__sfr __at (0xCD) TH2         ;
+__sfr __at (0xD0) PSW         ;
+__sfr __at (0xD5) SPCR        ; /* at89S8253 specific register */
+__sfr __at (0xE0) ACC         ;
+__sfr __at (0xE0) A           ;
+__sfr __at (0xF0) B           ;
+
+
+/* BIT addressable registers */
+/* P0 */
+__sbit __at (0x80) P0_0       ;
+__sbit __at (0x81) P0_1       ;
+__sbit __at (0x82) P0_2       ;
+__sbit __at (0x83) P0_3       ;
+__sbit __at (0x84) P0_4       ;
+__sbit __at (0x85) P0_5       ;
+__sbit __at (0x86) P0_6       ;
+__sbit __at (0x87) P0_7       ;
+
+/* TCON */
+__sbit __at (0x88) IT0        ;
+__sbit __at (0x89) IE0        ;
+__sbit __at (0x8A) IT1        ;
+__sbit __at (0x8B) IE1        ;
+__sbit __at (0x8C) TR0        ;
+__sbit __at (0x8D) TF0        ;
+__sbit __at (0x8E) TR1        ;
+__sbit __at (0x8F) TF1        ;
+
+/* P1 */
+__sbit __at (0x90) P1_0       ;
+__sbit __at (0x91) P1_1       ;
+__sbit __at (0x92) P1_2       ;
+__sbit __at (0x93) P1_3       ;
+__sbit __at (0x94) P1_4       ;
+__sbit __at (0x95) P1_5       ;
+__sbit __at (0x96) P1_6       ;
+__sbit __at (0x97) P1_7       ;
+
+__sbit __at (0x90) T2         ;
+__sbit __at (0x91) T2EX       ;
+
+/* P1 SPI portpins */
+__sbit __at (0x94) SS         ; /* SPI: SS - Slave port select input */
+__sbit __at (0x95) MOSI       ; /* SPI: MOSI - Master data output, slave data input */
+__sbit __at (0x96) MISO       ; /* SPI: MISO - Master data input, slave data output */
+__sbit __at (0x97) SCK        ; /* SPI: SCK - Master clock output, slave clock input */
+
+
+/* SCON */
+__sbit __at (0x98) RI         ;
+__sbit __at (0x99) TI         ;
+__sbit __at (0x9A) RB8        ;
+__sbit __at (0x9B) TB8        ;
+__sbit __at (0x9C) REN        ;
+__sbit __at (0x9D) SM2        ;
+__sbit __at (0x9E) SM1        ;
+__sbit __at (0x9F) SM0        ;
+
+/* P2 */
+__sbit __at (0xA0) P2_0       ;
+__sbit __at (0xA1) P2_1       ;
+__sbit __at (0xA2) P2_2       ;
+__sbit __at (0xA3) P2_3       ;
+__sbit __at (0xA4) P2_4       ;
+__sbit __at (0xA5) P2_5       ;
+__sbit __at (0xA6) P2_6       ;
+__sbit __at (0xA7) P2_7       ;
+
+/* IE */
+__sbit __at (0xA8) EX0        ;
+__sbit __at (0xA9) ET0        ;
+__sbit __at (0xAA) EX1        ;
+__sbit __at (0xAB) ET1        ;
+__sbit __at (0xAC) ES         ;
+__sbit __at (0xAD) ET2        ;
+__sbit __at (0xAF) EA         ;
+
+/* P3 */
+__sbit __at (0xB0) P3_0       ;
+__sbit __at (0xB1) P3_1       ;
+__sbit __at (0xB2) P3_2       ;
+__sbit __at (0xB3) P3_3       ;
+__sbit __at (0xB4) P3_4       ;
+__sbit __at (0xB5) P3_5       ;
+__sbit __at (0xB6) P3_6       ;
+__sbit __at (0xB7) P3_7       ;
+
+__sbit __at (0xB0) RXD        ;
+__sbit __at (0xB1) TXD        ;
+__sbit __at (0xB2) INT0       ;
+__sbit __at (0xB3) INT1       ;
+__sbit __at (0xB4) T0         ;
+__sbit __at (0xB5) T1         ;
+__sbit __at (0xB6) WR         ;
+__sbit __at (0xB7) RD         ;
+
+/* IP */
+__sbit __at (0xB8) PX0        ;
+__sbit __at (0xB9) PT0        ;
+__sbit __at (0xBA) PX1        ;
+__sbit __at (0xBB) PT1        ;
+__sbit __at (0xBC) PS         ;
+__sbit __at (0xBD) PT2        ;
+
+/* T2CON */
+__sbit __at (0xC8) T2CON_0    ;
+__sbit __at (0xC9) T2CON_1    ;
+__sbit __at (0xCA) T2CON_2    ;
+__sbit __at (0xCB) T2CON_3    ;
+__sbit __at (0xCC) T2CON_4    ;
+__sbit __at (0xCD) T2CON_5    ;
+__sbit __at (0xCE) T2CON_6    ;
+__sbit __at (0xCF) T2CON_7    ;
+
+__sbit __at (0xC8) CP_RL2     ;
+__sbit __at (0xC9) C_T2       ;
+__sbit __at (0xCA) TR2        ;
+__sbit __at (0xCB) EXEN2      ;
+__sbit __at (0xCC) TCLK       ;
+__sbit __at (0xCD) RCLK       ;
+__sbit __at (0xCE) EXF2       ;
+__sbit __at (0xCF) TF2        ;
+
+/* PSW */
+__sbit __at (0xD0) P          ;
+__sbit __at (0xD1) FL         ;
+__sbit __at (0xD2) OV         ;
+__sbit __at (0xD3) RS0        ;
+__sbit __at (0xD4) RS1        ;
+__sbit __at (0xD5) F0         ;
+__sbit __at (0xD6) AC         ;
+__sbit __at (0xD7) CY         ;
+
+/* B */
+__sbit __at (0xF0) BREG_F0    ;
+__sbit __at (0xF1) BREG_F1    ;
+__sbit __at (0xF2) BREG_F2    ;
+__sbit __at (0xF3) BREG_F3    ;
+__sbit __at (0xF4) BREG_F4    ;
+__sbit __at (0xF5) BREG_F5    ;
+__sbit __at (0xF6) BREG_F6    ;
+__sbit __at (0xF7) BREG_F7    ;
+
+
+/* BIT definitions for bits that are not directly accessible */
+/* PCON bits */
+#define IDL             0x01
+#define PD              0x02
+#define GF0             0x04
+#define GF1             0x08
+#define SMOD            0x80
+
+#define IDL_            0x01
+#define PD_             0x02
+#define GF0_            0x04
+#define GF1_            0x08
+#define SMOD_           0x80
+
+/* TMOD bits */
+#define M0_0            0x01
+#define M1_0            0x02
+#define C_T0            0x04
+#define GATE0           0x08
+#define M0_1            0x10
+#define M1_1            0x20
+#define C_T1            0x40
+#define GATE1           0x80
+
+#define M0_0_           0x01
+#define M1_0_           0x02
+#define C_T0_           0x04
+#define GATE0_          0x08
+#define M0_1_           0x10
+#define M1_1_           0x20
+#define C_T1_           0x40
+#define GATE1_          0x80
+
+#define T0_M0           0x01
+#define T0_M1           0x02
+#define T0_CT           0x04
+#define T0_GATE         0x08
+#define T1_M0           0x10
+#define T1_M1           0x20
+#define T1_CT           0x40
+#define T1_GATE         0x80
+
+#define T0_M0_          0x01
+#define T0_M1_          0x02
+#define T0_CT_          0x04
+#define T0_GATE_        0x08
+#define T1_M0_          0x10
+#define T1_M1_          0x20
+#define T1_CT_          0x40
+#define T1_GATE_        0x80
+
+#define T0_MASK         0x0F
+#define T1_MASK         0xF0
+
+#define T0_MASK_        0x0F
+#define T1_MASK_        0xF0
+
+/* T2MOD bits */
+#define DCEN            0x01
+#define T2OE            0x02
+
+#define DCEN_           0x01
+#define T2OE_           0x02
+
+/* EECON bits */
+#define EECON_WRTINH    0x01
+#define EECON_RDY       0x02
+#define EECON_DPS       0x04
+#define EECON_EEMEN     0x08
+#define EECON_EEMWE     0x10
+#define EECON_EELD      0x20
+
+/* WDTCON bits */
+#define WDTCON_WDTEN    0x01
+#define WDTCON_WSWRST   0x02
+#define WDTCON_HWDT     0x04
+#define WDTCON_DISRTO   0x08
+#define WDTCON_WDIDLE   0x10
+#define WDTCON_PS0      0x20
+#define WDTCON_PS1      0x40
+#define WDTCON_PS2      0x80
+
+/* SPCR-SPI bits */
+#define SPCR_SPR0       0x01
+#define SPCR_SPR1       0x02
+#define SPCR_CPHA       0x04
+#define SPCR_CPOL       0x08
+#define SPCR_MSTR       0x10
+#define SPCR_DORD       0x20
+#define SPCR_SPE        0x40
+#define SPCR_SPIE       0x80
+
+/* SPSR-SPI bits */
+#define SPSR_ENH        0x01
+#define SPSR_DISSO      0x02
+#define SPSR_LDEN       0x20
+#define SPSR_WCOL       0x40
+#define SPSR_SPIF       0x80
+
+/* SPDR-SPI bits */
+#define SPDR_SPD0       0x01
+#define SPDR_SPD1       0x02
+#define SPDR_SPD2       0x04
+#define SPDR_SPD3       0x08
+#define SPDR_SPD4       0x10
+#define SPDR_SPD5       0x20
+#define SPDR_SPD6       0x40
+#define SPDR_SPD7       0x80
+
+/* IPH bits */
+#define IPH_PX0H        0x01
+#define IPH_PT0H        0x02
+#define IPH_PX1H        0x04
+#define IPH_PT1H        0x08
+#define IPH_PSH         0x10
+#define IPH_PT2H        0x20
+
+/* Interrupt numbers: address = (number * 8) + 3 */
+#define IE0_VECTOR      0       /* 0x03 external interrupt 0 */
+#define EX0_VECTOR      0       /* 0x03 external interrupt 0 */
+#define TF0_VECTOR      1       /* 0x0b timer 0 */
+#define IE1_VECTOR      2       /* 0x13 external interrupt 1 */
+#define EX1_VECTOR      2       /* 0x13 external interrupt 1 */
+#define TF1_VECTOR      3       /* 0x1b timer 1 */
+#define SI0_VECTOR      4       /* 0x23 serial port 0 */
+#define TF2_VECTOR      5       /* 0x2B timer 2 */
+#define EX2_VECTOR      5       /* 0x2B external interrupt 2 */
+
+/* AUXR bits */
+#define AUXR_DISALE          0x01
+#define AUXR_INTEL_PWD_EXIT  0x02
+
+/* CLKREG bits */
+#define CLKREG_X2         0x01
+
+/* This is one of the addons coming from Bernd Krueger-Knauber   */
+
+/* ALE (0x8E) Bit Values */
+__sfr __at (0x8E) ALE;      /* at89S8252 specific register */
+
+/* Macro to enable and disable the toggling of the ALE-pin (EMV) */
+
+/* Explanation : Original Intel 8051 Cores (Atmel has to use the */
+/* Intel Core) have a feature that ALE is only active during     */
+/* MOVX or MOVC instruction. Otherwise the ALE-Pin is weakly     */
+/* pulled high. This can be used to force some external devices  */
+/* into standby mode and reduced EMI noise                       */
+
+#define ALE_OFF  ALE = ALE | 0x01
+#define ALE_ON   ALE = ALE & 0xFE
+
+#endif
index 4c8ad26d8bf66879ef398d8e211d27c585bda8d8..4d1ade6130390cfdcbc5136fc4e98f8b4264dba3 100644 (file)
 
 
 /*  BYTE Registers  */
-__sfr __at 0x80 P0       ;  /* PORT 0                                                  */
-__sfr __at 0x81 SP       ;  /* STACK POINTER                                           */
-__sfr __at 0x82 DPL      ;  /* DATA POINTER - LOW BYTE                                 */
-__sfr __at 0x83 DPH      ;  /* DATA POINTER - HIGH BYTE                                */
-__sfr __at 0x87 PCON     ;  /* POWER CONTROL                                           */
-__sfr __at 0x88 TCON     ;  /* TIMER CONTROL                                           */
-__sfr __at 0x89 TMOD     ;  /* TIMER MODE                                              */
-__sfr __at 0x8A TL0      ;  /* TIMER 0 - LOW BYTE                                      */
-__sfr __at 0x8B TL1      ;  /* TIMER 1 - LOW BYTE                                      */
-__sfr __at 0x8C TH0      ;  /* TIMER 0 - HIGH BYTE                                     */
-__sfr __at 0x8D TH1      ;  /* TIMER 1 - HIGH BYTE                                     */
-__sfr __at 0x8E CKCON    ;  /* CLOCK CONTROL                                           */
-__sfr __at 0x8F PSCTL    ;  /* PROGRAM STORE R/W CONTROL                               */
-__sfr __at 0x90 P1       ;  /* PORT 1                                                  */
-__sfr __at 0x91 TMR3CN   ;  /* TIMER 3 CONTROL                                         */
-__sfr __at 0x92 TMR3RLL  ;  /* TIMER 3 RELOAD REGISTER - LOW BYTE                      */
-__sfr __at 0x93 TMR3RLH  ;  /* TIMER 3 RELOAD REGISTER - HIGH BYTE                     */
-__sfr __at 0x94 TMR3L    ;  /* TIMER 3 - LOW BYTE                                      */
-__sfr __at 0x95 TMR3H    ;  /* TIMER 3 - HIGH BYTE                                     */
-__sfr __at 0x98 SCON     ;  /* SERIAL PORT CONTROL                                     */
-__sfr __at 0x99 SBUF     ;  /* SERIAL PORT BUFFER                                      */
-__sfr __at 0x9A SPI0CFG  ;  /* SERIAL PERIPHERAL INTERFACE 0 CONFIGURATION             */
-__sfr __at 0x9B SPI0DAT  ;  /* SERIAL PERIPHERAL INTERFACE 0 DATA                      */
-__sfr __at 0x9D SPI0CKR  ;  /* SERIAL PERIPHERAL INTERFACE 0 CLOCK RATE CONTROL        */
-__sfr __at 0x9E CPT0CN   ;  /* COMPARATOR 0 CONTROL                                    */
-__sfr __at 0x9F CPT1CN   ;  /* COMPARATOR 1 CONTROL                                    */
-__sfr __at 0xA0 P2       ;  /* PORT 2                                                  */
-__sfr __at 0xA4 PRT0CF   ;  /* PORT 0 CONFIGURATION                                    */
-__sfr __at 0xA5 PRT1CF   ;  /* PORT 1 CONFIGURATION                                    */
-__sfr __at 0xA6 PRT2CF   ;  /* PORT 2 CONFIGURATION                                    */
-__sfr __at 0xA7 PRT3CF   ;  /* PORT 3 CONFIGURATION                                    */
-__sfr __at 0xA8 IE       ;  /* INTERRUPT ENABLE                                        */
-__sfr __at 0xAD PRT1IF   ;  /* PORT 1 EXTERNAL INTERRUPT FLAGS                         */
-__sfr __at 0xAF EMI0CN   ;  /* EXTERNAL MEMORY INTERFACE CONTROL                       */
-__sfr __at 0xAF _XPAGE ;    /* XDATA/PDATA PAGE                                        */
-__sfr __at 0xB0 P3       ;  /* PORT 3                                                  */
-__sfr __at 0xB1 OSCXCN   ;  /* EXTERNAL OSCILLATOR CONTROL                             */
-__sfr __at 0xB2 OSCICN   ;  /* INTERNAL OSCILLATOR CONTROL                             */
-__sfr __at 0xB6 FLSCL    ;  /* FLASH MEMORY TIMING PRESCALER                           */
-__sfr __at 0xB7 FLACL    ;  /* FLASH ACESS LIMIT                                       */
-__sfr __at 0xB8 IP       ;  /* INTERRUPT PRIORITY                                      */
-__sfr __at 0xBA AMX0CF   ;  /* ADC 0 MUX CONFIGURATION                                 */
-__sfr __at 0xBB AMX0SL   ;  /* ADC 0 MUX CHANNEL SELECTION                             */
-__sfr __at 0xBC ADC0CF   ;  /* ADC 0 CONFIGURATION                                     */
-__sfr __at 0xBE ADC0L    ;  /* ADC 0 DATA - LOW BYTE                                   */
-__sfr __at 0xBF ADC0H    ;  /* ADC 0 DATA - HIGH BYTE                                  */
-__sfr __at 0xC0 SMB0CN   ;  /* SMBUS 0 CONTROL                                         */
-__sfr __at 0xC1 SMB0STA  ;  /* SMBUS 0 STATUS                                          */
-__sfr __at 0xC2 SMB0DAT  ;  /* SMBUS 0 DATA                                            */
-__sfr __at 0xC3 SMB0ADR  ;  /* SMBUS 0 SLAVE ADDRESS                                   */
-__sfr __at 0xC4 ADC0GTL  ;  /* ADC 0 GREATER-THAN REGISTER - LOW BYTE                  */
-__sfr __at 0xC5 ADC0GTH  ;  /* ADC 0 GREATER-THAN REGISTER - HIGH BYTE                 */
-__sfr __at 0xC6 ADC0LTL  ;  /* ADC 0 LESS-THAN REGISTER - LOW BYTE                     */
-__sfr __at 0xC7 ADC0LTH  ;  /* ADC 0 LESS-THAN REGISTER - HIGH BYTE                    */
-__sfr __at 0xC8 T2CON    ;  /* TIMER 2 CONTROL                                         */
-__sfr __at 0xCA RCAP2L   ;  /* TIMER 2 CAPTURE REGISTER - LOW BYTE                     */
-__sfr __at 0xCB RCAP2H   ;  /* TIMER 2 CAPTURE REGISTER - HIGH BYTE                    */
-__sfr __at 0xCC TL2      ;  /* TIMER 2 - LOW BYTE                                      */
-__sfr __at 0xCD TH2      ;  /* TIMER 2 - HIGH BYTE                                     */
-__sfr __at 0xCF SMB0CR   ;  /* SMBUS 0 CLOCK RATE                                      */
-__sfr __at 0xD0 PSW      ;  /* PROGRAM STATUS WORD                                     */
-__sfr __at 0xD1 REF0CN   ;  /* VOLTAGE REFERENCE 0 CONTROL                             */
-__sfr __at 0xD2 DAC0L    ;  /* DAC 0 REGISTER - LOW BYTE                               */
-__sfr __at 0xD3 DAC0H    ;  /* DAC 0 REGISTER - HIGH BYTE                              */
-__sfr __at 0xD4 DAC0CN   ;  /* DAC 0 CONTROL                                           */
-__sfr __at 0xD5 DAC1L    ;  /* DAC 1 REGISTER - LOW BYTE                               */
-__sfr __at 0xD6 DAC1H    ;  /* DAC 1 REGISTER - HIGH BYTE                              */
-__sfr __at 0xD7 DAC1CN   ;  /* DAC 1 CONTROL                                           */
-__sfr __at 0xD8 PCA0CN   ;  /* PCA 0 COUNTER CONTROL                                   */
-__sfr __at 0xD9 PCA0MD   ;  /* PCA 0 COUNTER MODE                                      */
-__sfr __at 0xDA PCA0CPM0 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 0                     */
-__sfr __at 0xDB PCA0CPM1 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 1                     */
-__sfr __at 0xDC PCA0CPM2 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 2                     */
-__sfr __at 0xDD PCA0CPM3 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 3                     */
-__sfr __at 0xDE PCA0CPM4 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 4                     */
-__sfr __at 0xE0 ACC      ;  /* ACCUMULATOR                                             */
-__sfr __at 0xE1 XBR0     ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 0               */
-__sfr __at 0xE2 XBR1     ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 1               */
-__sfr __at 0xE3 XBR2     ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 2               */
-__sfr __at 0xE6 EIE1     ;  /* EXTERNAL INTERRUPT ENABLE 1                             */
-__sfr __at 0xE7 EIE2     ;  /* EXTERNAL INTERRUPT ENABLE 2                             */
-__sfr __at 0xE8 ADC0CN   ;  /* ADC 0 CONTROL                                           */
-__sfr __at 0xE9 PCA0L    ;  /* PCA 0 TIMER - LOW BYTE                                  */
-__sfr __at 0xEA PCA0CPL0 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - LOW BYTE  */
-__sfr __at 0xEB PCA0CPL1 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - LOW BYTE  */
-__sfr __at 0xEC PCA0CPL2 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - LOW BYTE  */
-__sfr __at 0xED PCA0CPL3 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - LOW BYTE  */
-__sfr __at 0xEE PCA0CPL4 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - LOW BYTE  */
-__sfr __at 0xEF RSTSRC   ;  /* RESET SOURCE                                            */
-__sfr __at 0xF0 B        ;  /* B REGISTER                                              */
-__sfr __at 0xF6 EIP1     ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 1                  */
-__sfr __at 0xF7 EIP2     ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 2                  */
-__sfr __at 0xF8 SPI0CN   ;  /* SERIAL PERIPHERAL INTERFACE 0 CONTROL                   */
-__sfr __at 0xF9 PCA0H    ;  /* PCA 0 TIMER - HIGH BYTE                                 */
-__sfr __at 0xFA PCA0CPH0 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - HIGH BYTE */
-__sfr __at 0xFB PCA0CPH1 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - HIGH BYTE */
-__sfr __at 0xFC PCA0CPH2 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - HIGH BYTE */
-__sfr __at 0xFD PCA0CPH3 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - HIGH BYTE */
-__sfr __at 0xFE PCA0CPH4 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - HIGH BYTE */
-__sfr __at 0xFF WDTCN    ;  /* WATCHDOG TIMER CONTROL                                  */
+__sfr __at (0x80) P0           ;  /* PORT 0                                                  */
+__sfr __at (0x81) SP           ;  /* STACK POINTER                                           */
+__sfr __at (0x82) DPL          ;  /* DATA POINTER - LOW BYTE                                 */
+__sfr __at (0x83) DPH          ;  /* DATA POINTER - HIGH BYTE                                */
+__sfr __at (0x87) PCON         ;  /* POWER CONTROL                                           */
+__sfr __at (0x88) TCON         ;  /* TIMER CONTROL                                           */
+__sfr __at (0x89) TMOD         ;  /* TIMER MODE                                              */
+__sfr __at (0x8A) TL0          ;  /* TIMER 0 - LOW BYTE                                      */
+__sfr __at (0x8B) TL1          ;  /* TIMER 1 - LOW BYTE                                      */
+__sfr __at (0x8C) TH0          ;  /* TIMER 0 - HIGH BYTE                                     */
+__sfr __at (0x8D) TH1          ;  /* TIMER 1 - HIGH BYTE                                     */
+__sfr __at (0x8E) CKCON        ;  /* CLOCK CONTROL                                           */
+__sfr __at (0x8F) PSCTL        ;  /* PROGRAM STORE R/W CONTROL                               */
+__sfr __at (0x90) P1           ;  /* PORT 1                                                  */
+__sfr __at (0x91) TMR3CN       ;  /* TIMER 3 CONTROL                                         */
+__sfr __at (0x92) TMR3RLL      ;  /* TIMER 3 RELOAD REGISTER - LOW BYTE                      */
+__sfr __at (0x93) TMR3RLH      ;  /* TIMER 3 RELOAD REGISTER - HIGH BYTE                     */
+__sfr __at (0x94) TMR3L        ;  /* TIMER 3 - LOW BYTE                                      */
+__sfr __at (0x95) TMR3H        ;  /* TIMER 3 - HIGH BYTE                                     */
+__sfr __at (0x98) SCON         ;  /* SERIAL PORT CONTROL                                     */
+__sfr __at (0x99) SBUF         ;  /* SERIAL PORT BUFFER                                      */
+__sfr __at (0x9A) SPI0CFG      ;  /* SERIAL PERIPHERAL INTERFACE 0 CONFIGURATION             */
+__sfr __at (0x9B) SPI0DAT      ;  /* SERIAL PERIPHERAL INTERFACE 0 DATA                      */
+__sfr __at (0x9D) SPI0CKR      ;  /* SERIAL PERIPHERAL INTERFACE 0 CLOCK RATE CONTROL        */
+__sfr __at (0x9E) CPT0CN       ;  /* COMPARATOR 0 CONTROL                                    */
+__sfr __at (0x9F) CPT1CN       ;  /* COMPARATOR 1 CONTROL                                    */
+__sfr __at (0xA0) P2           ;  /* PORT 2                                                  */
+__sfr __at (0xA4) PRT0CF       ;  /* PORT 0 CONFIGURATION                                    */
+__sfr __at (0xA5) PRT1CF       ;  /* PORT 1 CONFIGURATION                                    */
+__sfr __at (0xA6) PRT2CF       ;  /* PORT 2 CONFIGURATION                                    */
+__sfr __at (0xA7) PRT3CF       ;  /* PORT 3 CONFIGURATION                                    */
+__sfr __at (0xA8) IE           ;  /* INTERRUPT ENABLE                                        */
+__sfr __at (0xAD) PRT1IF       ;  /* PORT 1 EXTERNAL INTERRUPT FLAGS                         */
+__sfr __at (0xAF) EMI0CN       ;  /* EXTERNAL MEMORY INTERFACE CONTROL                       */
+__sfr __at (0xAF) _XPAGE       ;  /* XDATA/PDATA PAGE                                        */
+__sfr __at (0xB0) P3           ;  /* PORT 3                                                  */
+__sfr __at (0xB1) OSCXCN       ;  /* EXTERNAL OSCILLATOR CONTROL                             */
+__sfr __at (0xB2) OSCICN       ;  /* INTERNAL OSCILLATOR CONTROL                             */
+__sfr __at (0xB6) FLSCL        ;  /* FLASH MEMORY TIMING PRESCALER                           */
+__sfr __at (0xB7) FLACL        ;  /* FLASH ACESS LIMIT                                       */
+__sfr __at (0xB8) IP           ;  /* INTERRUPT PRIORITY                                      */
+__sfr __at (0xBA) AMX0CF       ;  /* ADC 0 MUX CONFIGURATION                                 */
+__sfr __at (0xBB) AMX0SL       ;  /* ADC 0 MUX CHANNEL SELECTION                             */
+__sfr __at (0xBC) ADC0CF       ;  /* ADC 0 CONFIGURATION                                     */
+__sfr __at (0xBE) ADC0L        ;  /* ADC 0 DATA - LOW BYTE                                   */
+__sfr __at (0xBF) ADC0H        ;  /* ADC 0 DATA - HIGH BYTE                                  */
+__sfr __at (0xC0) SMB0CN       ;  /* SMBUS 0 CONTROL                                         */
+__sfr __at (0xC1) SMB0STA      ;  /* SMBUS 0 STATUS                                          */
+__sfr __at (0xC2) SMB0DAT      ;  /* SMBUS 0 DATA                                            */
+__sfr __at (0xC3) SMB0ADR      ;  /* SMBUS 0 SLAVE ADDRESS                                   */
+__sfr __at (0xC4) ADC0GTL      ;  /* ADC 0 GREATER-THAN REGISTER - LOW BYTE                  */
+__sfr __at (0xC5) ADC0GTH      ;  /* ADC 0 GREATER-THAN REGISTER - HIGH BYTE                 */
+__sfr __at (0xC6) ADC0LTL      ;  /* ADC 0 LESS-THAN REGISTER - LOW BYTE                     */
+__sfr __at (0xC7) ADC0LTH      ;  /* ADC 0 LESS-THAN REGISTER - HIGH BYTE                    */
+__sfr __at (0xC8) T2CON        ;  /* TIMER 2 CONTROL                                         */
+__sfr __at (0xCA) RCAP2L       ;  /* TIMER 2 CAPTURE REGISTER - LOW BYTE                     */
+__sfr __at (0xCB) RCAP2H       ;  /* TIMER 2 CAPTURE REGISTER - HIGH BYTE                    */
+__sfr __at (0xCC) TL2          ;  /* TIMER 2 - LOW BYTE                                      */
+__sfr __at (0xCD) TH2          ;  /* TIMER 2 - HIGH BYTE                                     */
+__sfr __at (0xCF) SMB0CR       ;  /* SMBUS 0 CLOCK RATE                                      */
+__sfr __at (0xD0) PSW          ;  /* PROGRAM STATUS WORD                                     */
+__sfr __at (0xD1) REF0CN       ;  /* VOLTAGE REFERENCE 0 CONTROL                             */
+__sfr __at (0xD2) DAC0L        ;  /* DAC 0 REGISTER - LOW BYTE                               */
+__sfr __at (0xD3) DAC0H        ;  /* DAC 0 REGISTER - HIGH BYTE                              */
+__sfr __at (0xD4) DAC0CN       ;  /* DAC 0 CONTROL                                           */
+__sfr __at (0xD5) DAC1L        ;  /* DAC 1 REGISTER - LOW BYTE                               */
+__sfr __at (0xD6) DAC1H        ;  /* DAC 1 REGISTER - HIGH BYTE                              */
+__sfr __at (0xD7) DAC1CN       ;  /* DAC 1 CONTROL                                           */
+__sfr __at (0xD8) PCA0CN       ;  /* PCA 0 COUNTER CONTROL                                   */
+__sfr __at (0xD9) PCA0MD       ;  /* PCA 0 COUNTER MODE                                      */
+__sfr __at (0xDA) PCA0CPM0     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 0                     */
+__sfr __at (0xDB) PCA0CPM1     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 1                     */
+__sfr __at (0xDC) PCA0CPM2     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 2                     */
+__sfr __at (0xDD) PCA0CPM3     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 3                     */
+__sfr __at (0xDE) PCA0CPM4     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 4                     */
+__sfr __at (0xE0) ACC          ;  /* ACCUMULATOR                                             */
+__sfr __at (0xE1) XBR0         ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 0               */
+__sfr __at (0xE2) XBR1         ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 1               */
+__sfr __at (0xE3) XBR2         ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 2               */
+__sfr __at (0xE6) EIE1         ;  /* EXTERNAL INTERRUPT ENABLE 1                             */
+__sfr __at (0xE7) EIE2         ;  /* EXTERNAL INTERRUPT ENABLE 2                             */
+__sfr __at (0xE8) ADC0CN       ;  /* ADC 0 CONTROL                                           */
+__sfr __at (0xE9) PCA0L        ;  /* PCA 0 TIMER - LOW BYTE                                  */
+__sfr __at (0xEA) PCA0CPL0     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - LOW BYTE  */
+__sfr __at (0xEB) PCA0CPL1     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - LOW BYTE  */
+__sfr __at (0xEC) PCA0CPL2     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - LOW BYTE  */
+__sfr __at (0xED) PCA0CPL3     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - LOW BYTE  */
+__sfr __at (0xEE) PCA0CPL4     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - LOW BYTE  */
+__sfr __at (0xEF) RSTSRC       ;  /* RESET SOURCE                                            */
+__sfr __at (0xF0) B            ;  /* B REGISTER                                              */
+__sfr __at (0xF6) EIP1         ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 1                  */
+__sfr __at (0xF7) EIP2         ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 2                  */
+__sfr __at (0xF8) SPI0CN       ;  /* SERIAL PERIPHERAL INTERFACE 0 CONTROL                   */
+__sfr __at (0xF9) PCA0H        ;  /* PCA 0 TIMER - HIGH BYTE                                 */
+__sfr __at (0xFA) PCA0CPH0     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - HIGH BYTE */
+__sfr __at (0xFB) PCA0CPH1     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - HIGH BYTE */
+__sfr __at (0xFC) PCA0CPH2     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - HIGH BYTE */
+__sfr __at (0xFD) PCA0CPH3     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - HIGH BYTE */
+__sfr __at (0xFE) PCA0CPH4     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - HIGH BYTE */
+__sfr __at (0xFF) WDTCN        ;  /* WATCHDOG TIMER CONTROL                                  */
+
+
+/*  WORD/DWORD Registers  */
+
+__sfr16 __at (0x8C8A) TMR0     ;  /* TIMER 0 COUNTER                                         */
+__sfr16 __at (0x8D8B) TMR1     ;  /* TIMER 1 COUNTER                                         */
+__sfr16 __at (0xCDCC) TMR2     ;  /* TIMER 2 COUNTER                                         */
+__sfr16 __at (0xCBCA) RCAP2    ;  /* TIMER 2 CAPTURE REGISTER WORD                           */
+__sfr16 __at (0x9594) TMR3     ;  /* TIMER 3 COUNTER                                         */
+__sfr16 __at (0x9392) TMR3RL   ;  /* TIMER 3 CAPTURE REGISTER WORD                           */
+__sfr16 __at (0xBFBE) ADC0     ;  /* ADC 0 DATA WORD                                         */
+__sfr16 __at (0xC5C4) ADC0GT   ;  /* ADC 0 GREATER-THAN REGISTER WORD                        */
+__sfr16 __at (0xC7C6) ADC0LT   ;  /* ADC 0 LESS-THAN REGISTER WORD                           */
+__sfr16 __at (0xD3D2) DAC0     ;  /* DAC 0 REGISTER WORD                                     */
+__sfr16 __at (0xD6D5) DAC1     ;  /* DAC 1 REGISTER WORD                                     */
+__sfr16 __at (0xF9E9) PCA0     ;  /* PCA COUNTER                                             */
+__sfr16 __at (0xFAEA) PCA0CP0  ;  /* PCA CAPTURE 0 WORD                                      */
+__sfr16 __at (0xFBEB) PCA0CP1  ;  /* PCA CAPTURE 1 WORD                                      */
+__sfr16 __at (0xFCEC) PCA0CP2  ;  /* PCA CAPTURE 2 WORD                                      */
+__sfr16 __at (0xFDED) PCA0CP3  ;  /* PCA CAPTURE 3 WORD                                      */
+__sfr16 __at (0xFEEE) PCA0CP4  ;  /* PCA CAPTURE 4 WORD                                      */
 
 
 /*  BIT Registers  */
 
 /*  P0  0x80 */
-__sbit __at 0x87 P0_7    ;
-__sbit __at 0x86 P0_6    ;
-__sbit __at 0x85 P0_5    ;
-__sbit __at 0x84 P0_4    ;
-__sbit __at 0x83 P0_3    ;
-__sbit __at 0x82 P0_2    ;
-__sbit __at 0x81 P0_1    ;
-__sbit __at 0x80 P0_0    ;
+__sbit __at (0x87) P0_7        ;
+__sbit __at (0x86) P0_6        ;
+__sbit __at (0x85) P0_5        ;
+__sbit __at (0x84) P0_4        ;
+__sbit __at (0x83) P0_3        ;
+__sbit __at (0x82) P0_2        ;
+__sbit __at (0x81) P0_1        ;
+__sbit __at (0x80) P0_0        ;
 
 /*  TCON  0x88 */
-__sbit __at 0x8F TF1     ;  /* TIMER 1 OVERFLOW FLAG                     */
-__sbit __at 0x8E TR1     ;  /* TIMER 1 ON/OFF CONTROL                    */
-__sbit __at 0x8D TF0     ;  /* TIMER 0 OVERFLOW FLAG                     */
-__sbit __at 0x8C TR0     ;  /* TIMER 0 ON/OFF CONTROL                    */
-__sbit __at 0x8B IE1     ;  /* EXT. INTERRUPT 1 EDGE FLAG                */
-__sbit __at 0x8A IT1     ;  /* EXT. INTERRUPT 1 TYPE                     */
-__sbit __at 0x89 IE0     ;  /* EXT. INTERRUPT 0 EDGE FLAG                */
-__sbit __at 0x88 IT0     ;  /* EXT. INTERRUPT 0 TYPE                     */
+__sbit __at (0x8F) TF1         ;  /* TIMER 1 OVERFLOW FLAG                                   */
+__sbit __at (0x8E) TR1         ;  /* TIMER 1 ON/OFF CONTROL                                  */
+__sbit __at (0x8D) TF0         ;  /* TIMER 0 OVERFLOW FLAG                                   */
+__sbit __at (0x8C) TR0         ;  /* TIMER 0 ON/OFF CONTROL                                  */
+__sbit __at (0x8B) IE1         ;  /* EXT. INTERRUPT 1 EDGE FLAG                              */
+__sbit __at (0x8A) IT1         ;  /* EXT. INTERRUPT 1 TYPE                                   */
+__sbit __at (0x89) IE0         ;  /* EXT. INTERRUPT 0 EDGE FLAG                              */
+__sbit __at (0x88) IT0         ;  /* EXT. INTERRUPT 0 TYPE                                   */
 
 /*  P1  0x90 */
-__sbit __at 0x97 P1_7    ;
-__sbit __at 0x96 P1_6    ;
-__sbit __at 0x95 P1_5    ;
-__sbit __at 0x94 P1_4    ;
-__sbit __at 0x93 P1_3    ;
-__sbit __at 0x92 P1_2    ;
-__sbit __at 0x91 P1_1    ;
-__sbit __at 0x90 P1_0    ;
+__sbit __at (0x97) P1_7        ;
+__sbit __at (0x96) P1_6        ;
+__sbit __at (0x95) P1_5        ;
+__sbit __at (0x94) P1_4        ;
+__sbit __at (0x93) P1_3        ;
+__sbit __at (0x92) P1_2        ;
+__sbit __at (0x91) P1_1        ;
+__sbit __at (0x90) P1_0        ;
 
 /*  SCON  0x98 */
-__sbit __at 0x9F SM0     ;  /* SERIAL MODE CONTROL BIT 0                 */
-__sbit __at 0x9E SM1     ;  /* SERIAL MODE CONTROL BIT 1                 */
-__sbit __at 0x9D SM2     ;  /* MULTIPROCESSOR COMMUNICATION ENABLE       */
-__sbit __at 0x9C REN     ;  /* RECEIVE ENABLE                            */
-__sbit __at 0x9B TB8     ;  /* TRANSMIT BIT 8                            */
-__sbit __at 0x9A RB8     ;  /* RECEIVE BIT 8                             */
-__sbit __at 0x99 TI      ;  /* TRANSMIT INTERRUPT FLAG                   */
-__sbit __at 0x98 RI      ;  /* RECEIVE INTERRUPT FLAG                    */
+__sbit __at (0x9F) SM0         ;  /* SERIAL MODE CONTROL BIT 0                               */
+__sbit __at (0x9E) SM1         ;  /* SERIAL MODE CONTROL BIT 1                               */
+__sbit __at (0x9D) SM2         ;  /* MULTIPROCESSOR COMMUNICATION ENABLE                     */
+__sbit __at (0x9C) REN         ;  /* RECEIVE ENABLE                                          */
+__sbit __at (0x9B) TB8         ;  /* TRANSMIT BIT 8                                          */
+__sbit __at (0x9A) RB8         ;  /* RECEIVE BIT 8                                           */
+__sbit __at (0x99) TI          ;  /* TRANSMIT INTERRUPT FLAG                                 */
+__sbit __at (0x98) RI          ;  /* RECEIVE INTERRUPT FLAG                                  */
 
 /*  P2  0xA0 */
-__sbit __at 0xA7 P2_7    ;
-__sbit __at 0xA6 P2_6    ;
-__sbit __at 0xA5 P2_5    ;
-__sbit __at 0xA4 P2_4    ;
-__sbit __at 0xA3 P2_3    ;
-__sbit __at 0xA2 P2_2    ;
-__sbit __at 0xA1 P2_1    ;
-__sbit __at 0xA0 P2_0    ;
+__sbit __at (0xA7) P2_7        ;
+__sbit __at (0xA6) P2_6        ;
+__sbit __at (0xA5) P2_5        ;
+__sbit __at (0xA4) P2_4        ;
+__sbit __at (0xA3) P2_3        ;
+__sbit __at (0xA2) P2_2        ;
+__sbit __at (0xA1) P2_1        ;
+__sbit __at (0xA0) P2_0        ;
 
 /*  IE  0xA8 */
-__sbit __at 0xAF EA      ;  /* GLOBAL INTERRUPT ENABLE                   */
-__sbit __at 0xAD ET2     ;  /* TIMER 2 INTERRUPT ENABLE                  */
-__sbit __at 0xAC ES      ;  /* SERIAL PORT INTERRUPT ENABLE              */
-__sbit __at 0xAB ET1     ;  /* TIMER 1 INTERRUPT ENABLE                  */
-__sbit __at 0xAA EX1     ;  /* EXTERNAL INTERRUPT 1 ENABLE               */
-__sbit __at 0xA9 ET0     ;  /* TIMER 0 INTERRUPT ENABLE                  */
-__sbit __at 0xA8 EX0     ;  /* EXTERNAL INTERRUPT 0 ENABLE               */
+__sbit __at (0xAF) EA          ;  /* GLOBAL INTERRUPT ENABLE                                 */
+__sbit __at (0xAD) ET2         ;  /* TIMER 2 INTERRUPT ENABLE                                */
+__sbit __at (0xAC) ES          ;  /* SERIAL PORT INTERRUPT ENABLE                            */
+__sbit __at (0xAB) ET1         ;  /* TIMER 1 INTERRUPT ENABLE                                */
+__sbit __at (0xAA) EX1         ;  /* EXTERNAL INTERRUPT 1 ENABLE                             */
+__sbit __at (0xA9) ET0         ;  /* TIMER 0 INTERRUPT ENABLE                                */
+__sbit __at (0xA8) EX0         ;  /* EXTERNAL INTERRUPT 0 ENABLE                             */
 
 /*  P3  0xB0 */
-__sbit __at 0xB7 P3_7    ;
-__sbit __at 0xB6 P3_6    ;
-__sbit __at 0xB5 P3_5    ;
-__sbit __at 0xB4 P3_4    ;
-__sbit __at 0xB3 P3_3    ;
-__sbit __at 0xB2 P3_2    ;
-__sbit __at 0xB1 P3_1    ;
-__sbit __at 0xB0 P3_0    ;
+__sbit __at (0xB7) P3_7        ;
+__sbit __at (0xB6) P3_6        ;
+__sbit __at (0xB5) P3_5        ;
+__sbit __at (0xB4) P3_4        ;
+__sbit __at (0xB3) P3_3        ;
+__sbit __at (0xB2) P3_2        ;
+__sbit __at (0xB1) P3_1        ;
+__sbit __at (0xB0) P3_0        ;
 
 /*  IP  0xB8 */
-__sbit __at 0xBD PT2     ;  /* TIMER 2 PRIORITY                          */
-__sbit __at 0xBC PS      ;  /* SERIAL PORT PRIORITY                      */
-__sbit __at 0xBB PT1     ;  /* TIMER 1 PRIORITY                          */
-__sbit __at 0xBA PX1     ;  /* EXTERNAL INTERRUPT 1 PRIORITY             */
-__sbit __at 0xB9 PT0     ;  /* TIMER 0 PRIORITY                          */
-__sbit __at 0xB8 PX0     ;  /* EXTERNAL INTERRUPT 0 PRIORITY             */
+__sbit __at (0xBD) PT2         ;  /* TIMER 2 PRIORITY                                        */
+__sbit __at (0xBC) PS          ;  /* SERIAL PORT PRIORITY                                    */
+__sbit __at (0xBB) PT1         ;  /* TIMER 1 PRIORITY                                        */
+__sbit __at (0xBA) PX1         ;  /* EXTERNAL INTERRUPT 1 PRIORITY                           */
+__sbit __at (0xB9) PT0         ;  /* TIMER 0 PRIORITY                                        */
+__sbit __at (0xB8) PX0         ;  /* EXTERNAL INTERRUPT 0 PRIORITY                           */
 
 /*  SMB0CN  0xC0 */
-__sbit __at 0xC7 BUSY    ;  /* SMBUS 0 BUSY                              */
-__sbit __at 0xC6 ENSMB   ;  /* SMBUS 0 ENABLE                            */
-__sbit __at 0xC5 STA     ;  /* SMBUS 0 START FLAG                        */
-__sbit __at 0xC4 STO     ;  /* SMBUS 0 STOP FLAG                         */
-__sbit __at 0xC3 SI      ;  /* SMBUS 0 INTERRUPT PENDING FLAG            */
-__sbit __at 0xC2 AA      ;  /* SMBUS 0 ASSERT/ACKNOWLEDGE FLAG           */
-__sbit __at 0xC1 SMBFTE  ;  /* SMBUS 0 FREE TIMER ENABLE                 */
-__sbit __at 0xC0 SMBTOE  ;  /* SMBUS 0 TIMEOUT ENABLE                    */
+__sbit __at (0xC7) BUSY        ;  /* SMBUS 0 BUSY                                            */
+__sbit __at (0xC6) ENSMB       ;  /* SMBUS 0 ENABLE                                          */
+__sbit __at (0xC5) STA         ;  /* SMBUS 0 START FLAG                                      */
+__sbit __at (0xC4) STO         ;  /* SMBUS 0 STOP FLAG                                       */
+__sbit __at (0xC3) SI          ;  /* SMBUS 0 INTERRUPT PENDING FLAG                          */
+__sbit __at (0xC2) AA          ;  /* SMBUS 0 ASSERT/ACKNOWLEDGE FLAG                         */
+__sbit __at (0xC1) SMBFTE      ;  /* SMBUS 0 FREE TIMER ENABLE                               */
+__sbit __at (0xC0) SMBTOE      ;  /* SMBUS 0 TIMEOUT ENABLE                                  */
 
 /*  T2CON  0xC8 */
-__sbit __at 0xCF TF2     ;  /* TIMER 2 OVERFLOW FLAG                     */
-__sbit __at 0xCE EXF2    ;  /* EXTERNAL FLAG                             */
-__sbit __at 0xCD RCLK    ;  /* RECEIVE CLOCK FLAG                        */
-__sbit __at 0xCC TCLK    ;  /* TRANSMIT CLOCK FLAG                       */
-__sbit __at 0xCB EXEN2   ;  /* TIMER 2 EXTERNAL ENABLE FLAG              */
-__sbit __at 0xCA TR2     ;  /* TIMER 2 ON/OFF CONTROL                    */
-__sbit __at 0xC9 CT2     ;  /* TIMER OR COUNTER SELECT                   */
-__sbit __at 0xC8 CPRL2   ;  /* CAPTURE OR RELOAD SELECT                  */
+__sbit __at (0xCF) TF2         ;  /* TIMER 2 OVERFLOW FLAG                                   */
+__sbit __at (0xCE) EXF2        ;  /* EXTERNAL FLAG                                           */
+__sbit __at (0xCD) RCLK        ;  /* RECEIVE CLOCK FLAG                                      */
+__sbit __at (0xCC) TCLK        ;  /* TRANSMIT CLOCK FLAG                                     */
+__sbit __at (0xCB) EXEN2       ;  /* TIMER 2 EXTERNAL ENABLE FLAG                            */
+__sbit __at (0xCA) TR2         ;  /* TIMER 2 ON/OFF CONTROL                                  */
+__sbit __at (0xC9) CT2         ;  /* TIMER OR COUNTER SELECT                                 */
+__sbit __at (0xC8) CPRL2       ;  /* CAPTURE OR RELOAD SELECT                                */
 
 /*  PSW  0xD0 */
-__sbit __at 0xD7 CY      ;  /* CARRY FLAG                                */
-__sbit __at 0xD6 AC      ;  /* AUXILIARY CARRY FLAG                      */
-__sbit __at 0xD5 F0      ;  /* USER FLAG 0                               */
-__sbit __at 0xD4 RS1     ;  /* REGISTER BANK SELECT 1                    */
-__sbit __at 0xD3 RS0     ;  /* REGISTER BANK SELECT 0                    */
-__sbit __at 0xD2 OV      ;  /* OVERFLOW FLAG                             */
-__sbit __at 0xD1 F1      ;  /* USER FLAG 1                               */
-__sbit __at 0xD0 P       ;  /* ACCUMULATOR PARITY FLAG                   */
+__sbit __at (0xD7) CY          ;  /* CARRY FLAG                                              */
+__sbit __at (0xD6) AC          ;  /* AUXILIARY CARRY FLAG                                    */
+__sbit __at (0xD5) F0          ;  /* USER FLAG 0                                             */
+__sbit __at (0xD4) RS1         ;  /* REGISTER BANK SELECT 1                                  */
+__sbit __at (0xD3) RS0         ;  /* REGISTER BANK SELECT 0                                  */
+__sbit __at (0xD2) OV          ;  /* OVERFLOW FLAG                                           */
+__sbit __at (0xD1) F1          ;  /* USER FLAG 1                                             */
+__sbit __at (0xD0) P           ;  /* ACCUMULATOR PARITY FLAG                                 */
 
 /*  PCA0CN  0xD8H */
-__sbit __at 0xDF CF      ;  /* PCA 0 COUNTER OVERFLOW FLAG               */
-__sbit __at 0xDE CR      ;  /* PCA 0 COUNTER RUN CONTROL BIT             */
-__sbit __at 0xDC CCF4    ;  /* PCA 0 MODULE 4 INTERRUPT FLAG             */
-__sbit __at 0xDB CCF3    ;  /* PCA 0 MODULE 3 INTERRUPT FLAG             */
-__sbit __at 0xDA CCF2    ;  /* PCA 0 MODULE 2 INTERRUPT FLAG             */
-__sbit __at 0xD9 CCF1    ;  /* PCA 0 MODULE 1 INTERRUPT FLAG             */
-__sbit __at 0xD8 CCF0    ;  /* PCA 0 MODULE 0 INTERRUPT FLAG             */
+__sbit __at (0xDF) CF          ;  /* PCA 0 COUNTER OVERFLOW FLAG                             */
+__sbit __at (0xDE) CR          ;  /* PCA 0 COUNTER RUN CONTROL BIT                           */
+__sbit __at (0xDC) CCF4        ;  /* PCA 0 MODULE 4 INTERRUPT FLAG                           */
+__sbit __at (0xDB) CCF3        ;  /* PCA 0 MODULE 3 INTERRUPT FLAG                           */
+__sbit __at (0xDA) CCF2        ;  /* PCA 0 MODULE 2 INTERRUPT FLAG                           */
+__sbit __at (0xD9) CCF1        ;  /* PCA 0 MODULE 1 INTERRUPT FLAG                           */
+__sbit __at (0xD8) CCF0        ;  /* PCA 0 MODULE 0 INTERRUPT FLAG                           */
 
 /*  ADC0CN  0xE8H */
-__sbit __at 0xEF AD0EN   ;  /* ADC 0 ENABLE                              */
-__sbit __at 0xEE AD0TM   ;  /* ADC 0 TRACK MODE                          */
-__sbit __at 0xED AD0INT  ;  /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG */
-__sbit __at 0xEC AD0BUSY ;  /* ADC 0 BUSY FLAG                           */
-__sbit __at 0xEB ADSTM1  ;  /* ADC 0 START OF CONVERSION MODE BIT 1      */
-__sbit __at 0xEA ADSTM0  ;  /* ADC 0 START OF CONVERSION MODE BIT 0      */
-__sbit __at 0xE9 AD0WINT ;  /* ADC 0 WINDOW COMPARE INTERRUPT FLAG       */
-__sbit __at 0xE8 ADLJST  ;  /* ADC 0 RIGHT JUSTIFY DATA BIT              */
+__sbit __at (0xEF) AD0EN       ;  /* ADC 0 ENABLE                                            */
+__sbit __at (0xEE) AD0TM       ;  /* ADC 0 TRACK MODE                                        */
+__sbit __at (0xED) AD0INT      ;  /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG               */
+__sbit __at (0xEC) AD0BUSY     ;  /* ADC 0 BUSY FLAG                                         */
+__sbit __at (0xEB) ADSTM1      ;  /* ADC 0 START OF CONVERSION MODE BIT 1                    */
+__sbit __at (0xEA) ADSTM0      ;  /* ADC 0 START OF CONVERSION MODE BIT 0                    */
+__sbit __at (0xE9) AD0WINT     ;  /* ADC 0 WINDOW COMPARE INTERRUPT FLAG                     */
+__sbit __at (0xE8) ADLJST      ;  /* ADC 0 RIGHT JUSTIFY DATA BIT                            */
 
 /*  SPI0CN  0xF8H */
-__sbit __at 0xFF SPIF    ;  /* SPI 0 INTERRUPT FLAG                      */
-__sbit __at 0xFE WCOL    ;  /* SPI 0 WRITE COLLISION FLAG                */
-__sbit __at 0xFD MODF    ;  /* SPI 0 MODE FAULT FLAG                     */
-__sbit __at 0xFC RXOVRN  ;  /* SPI 0 RX OVERRUN FLAG                     */
-__sbit __at 0xFB TXBSY   ;  /* SPI 0 TX BUSY FLAG                        */
-__sbit __at 0xFA SLVSEL  ;  /* SPI 0 SLAVE SELECT                        */
-__sbit __at 0xF9 MSTEN   ;  /* SPI 0 MASTER ENABLE                       */
-__sbit __at 0xF8 SPIEN   ;  /* SPI 0 SPI ENABLE                          */
+__sbit __at (0xFF) SPIF        ;  /* SPI 0 INTERRUPT FLAG                                    */
+__sbit __at (0xFE) WCOL        ;  /* SPI 0 WRITE COLLISION FLAG                              */
+__sbit __at (0xFD) MODF        ;  /* SPI 0 MODE FAULT FLAG                                   */
+__sbit __at (0xFC) RXOVRN      ;  /* SPI 0 RX OVERRUN FLAG                                   */
+__sbit __at (0xFB) TXBSY       ;  /* SPI 0 TX BUSY FLAG                                      */
+__sbit __at (0xFA) SLVSEL      ;  /* SPI 0 SLAVE SELECT                                      */
+__sbit __at (0xF9) MSTEN       ;  /* SPI 0 MASTER ENABLE                                     */
+__sbit __at (0xF8) SPIEN       ;  /* SPI 0 SPI ENABLE                                        */
 
 
 /* Predefined SFR Bit Masks */
 
-#define IDLE    0x01    /* PCON */
-#define STOP    0x02    /* PCON */
-#define TF3     0x80    /* TMR3CN */
-#define CPFIF   0x10    /* CPTnCN */
-#define CPRIF   0x20    /* CPTnCN */
-#define CPOUT   0x40    /* CPTnCN */
-#define ECCF    0x01    /* PCA0CPMn */
-#define PWM     0x02    /* PCA0CPMn */
-#define TOG     0x04    /* PCA0CPMn */
-#define MAT     0x08    /* PCA0CPMn */
-#define CAPN    0x10    /* PCA0CPMn */
-#define CAPP    0x20    /* PCA0CPMn */
-#define ECOM    0x40    /* PCA0CPMn */
+#define PCON_IDLE         0x01    /* PCON                                */
+#define PCON_STOP         0x02    /* PCON                                */
+#define TF3               0x80    /* TMR3CN                              */
+#define CPFIF             0x10    /* CPTnCN                              */
+#define CPRIF             0x20    /* CPTnCN                              */
+#define CPOUT             0x40    /* CPTnCN                              */
+#define ECCF              0x01    /* PCA0CPMn                            */
+#define PWM               0x02    /* PCA0CPMn                            */
+#define TOG               0x04    /* PCA0CPMn                            */
+#define MAT               0x08    /* PCA0CPMn                            */
+#define CAPN              0x10    /* PCA0CPMn                            */
+#define CAPP              0x20    /* PCA0CPMn                            */
+#define ECOM              0x40    /* PCA0CPMn                            */
 
 #endif
index 7d8169d9dc3df431411e84fcda1b12f91a781ac4..87ae4d6edd1d261885b98468339378834749cf06 100644 (file)
 
 
 /*  BYTE Registers  */
-__sfr __at 0x80 P0       ;  /* PORT 0                                                  */
-__sfr __at 0x81 SP       ;  /* STACK POINTER                                           */
-__sfr __at 0x82 DPL      ;  /* DATA POINTER - LOW BYTE                                 */
-__sfr __at 0x83 DPH      ;  /* DATA POINTER - HIGH BYTE                                */
-__sfr __at 0x87 PCON     ;  /* POWER CONTROL                                           */
-__sfr __at 0x88 TCON     ;  /* TIMER CONTROL                                           */
-__sfr __at 0x89 TMOD     ;  /* TIMER MODE                                              */
-__sfr __at 0x8A TL0      ;  /* TIMER 0 - LOW BYTE                                      */
-__sfr __at 0x8B TL1      ;  /* TIMER 1 - LOW BYTE                                      */
-__sfr __at 0x8C TH0      ;  /* TIMER 0 - HIGH BYTE                                     */
-__sfr __at 0x8D TH1      ;  /* TIMER 1 - HIGH BYTE                                     */
-__sfr __at 0x8E CKCON    ;  /* CLOCK CONTROL                                           */
-__sfr __at 0x8F PSCTL    ;  /* PROGRAM STORE R/W CONTROL                               */
-__sfr __at 0x90 P1       ;  /* PORT 1                                                  */
-__sfr __at 0x91 TMR3CN   ;  /* TIMER 3 CONTROL                                         */
-__sfr __at 0x92 TMR3RLL  ;  /* TIMER 3 RELOAD REGISTER - LOW BYTE                      */
-__sfr __at 0x93 TMR3RLH  ;  /* TIMER 3 RELOAD REGISTER - HIGH BYTE                     */
-__sfr __at 0x94 TMR3L    ;  /* TIMER 3 - LOW BYTE                                      */
-__sfr __at 0x95 TMR3H    ;  /* TIMER 3 - HIGH BYTE                                     */
-__sfr __at 0x98 SCON     ;  /* SERIAL PORT CONTROL                                     */
-__sfr __at 0x99 SBUF     ;  /* SERIAL PORT BUFFER                                      */
-__sfr __at 0x9A SPI0CFG  ;  /* SERIAL PERIPHERAL INTERFACE 0 CONFIGURATION             */
-__sfr __at 0x9B SPI0DAT  ;  /* SERIAL PERIPHERAL INTERFACE 0 DATA                      */
-__sfr __at 0x9D SPI0CKR  ;  /* SERIAL PERIPHERAL INTERFACE 0 CLOCK RATE CONTROL        */
-__sfr __at 0x9E CPT0CN   ;  /* COMPARATOR 0 CONTROL                                    */
-__sfr __at 0x9F CPT1CN   ;  /* COMPARATOR 1 CONTROL                                    */
-__sfr __at 0xA0 P2       ;  /* PORT 2                                                  */
-__sfr __at 0xA4 PRT0CF   ;  /* PORT 0 CONFIGURATION                                    */
-__sfr __at 0xA5 PRT1CF   ;  /* PORT 1 CONFIGURATION                                    */
-__sfr __at 0xA6 PRT2CF   ;  /* PORT 2 CONFIGURATION                                    */
-__sfr __at 0xA7 PRT3CF   ;  /* PORT 3 CONFIGURATION                                    */
-__sfr __at 0xA8 IE       ;  /* INTERRUPT ENABLE                                        */
-__sfr __at 0xAD PRT1IF   ;  /* PORT 1 EXTERNAL INTERRUPT FLAGS                         */
-__sfr __at 0xAF EMI0CN   ;  /* EXTERNAL MEMORY INTERFACE CONTROL                       */
-__sfr __at 0xAF _XPAGE ;    /* XDATA/PDATA PAGE                                        */
-__sfr __at 0xB0 P3       ;  /* PORT 3                                                  */
-__sfr __at 0xB1 OSCXCN   ;  /* EXTERNAL OSCILLATOR CONTROL                             */
-__sfr __at 0xB2 OSCICN   ;  /* INTERNAL OSCILLATOR CONTROL                             */
-__sfr __at 0xB6 FLSCL    ;  /* FLASH MEMORY TIMING PRESCALER                           */
-__sfr __at 0xB7 FLACL    ;  /* FLASH ACESS LIMIT                                       */
-__sfr __at 0xB8 IP       ;  /* INTERRUPT PRIORITY                                      */
-__sfr __at 0xBA AMX0CF   ;  /* ADC 0 MUX CONFIGURATION                                 */
-__sfr __at 0xBB AMX0SL   ;  /* ADC 0 MUX CHANNEL SELECTION                             */
-__sfr __at 0xBC ADC0CF   ;  /* ADC 0 CONFIGURATION                                     */
-__sfr __at 0xBE ADC0L    ;  /* ADC 0 DATA - LOW BYTE                                   */
-__sfr __at 0xBF ADC0H    ;  /* ADC 0 DATA - HIGH BYTE                                  */
-__sfr __at 0xC0 SMB0CN   ;  /* SMBUS 0 CONTROL                                         */
-__sfr __at 0xC1 SMB0STA  ;  /* SMBUS 0 STATUS                                          */
-__sfr __at 0xC2 SMB0DAT  ;  /* SMBUS 0 DATA                                            */
-__sfr __at 0xC3 SMB0ADR  ;  /* SMBUS 0 SLAVE ADDRESS                                   */
-__sfr __at 0xC4 ADC0GTL  ;  /* ADC 0 GREATER-THAN REGISTER - LOW BYTE                  */
-__sfr __at 0xC5 ADC0GTH  ;  /* ADC 0 GREATER-THAN REGISTER - HIGH BYTE                 */
-__sfr __at 0xC6 ADC0LTL  ;  /* ADC 0 LESS-THAN REGISTER - LOW BYTE                     */
-__sfr __at 0xC7 ADC0LTH  ;  /* ADC 0 LESS-THAN REGISTER - HIGH BYTE                    */
-__sfr __at 0xC8 T2CON    ;  /* TIMER 2 CONTROL                                         */
-__sfr __at 0xCA RCAP2L   ;  /* TIMER 2 CAPTURE REGISTER - LOW BYTE                     */
-__sfr __at 0xCB RCAP2H   ;  /* TIMER 2 CAPTURE REGISTER - HIGH BYTE                    */
-__sfr __at 0xCC TL2      ;  /* TIMER 2 - LOW BYTE                                      */
-__sfr __at 0xCD TH2      ;  /* TIMER 2 - HIGH BYTE                                     */
-__sfr __at 0xCF SMB0CR   ;  /* SMBUS 0 CLOCK RATE                                      */
-__sfr __at 0xD0 PSW      ;  /* PROGRAM STATUS WORD                                     */
-__sfr __at 0xD1 REF0CN   ;  /* VOLTAGE REFERENCE 0 CONTROL                             */
-__sfr __at 0xD8 PCA0CN   ;  /* PCA 0 COUNTER CONTROL                                   */
-__sfr __at 0xD9 PCA0MD   ;  /* PCA 0 COUNTER MODE                                      */
-__sfr __at 0xDA PCA0CPM0 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 0                     */
-__sfr __at 0xDB PCA0CPM1 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 1                     */
-__sfr __at 0xDC PCA0CPM2 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 2                     */
-__sfr __at 0xDD PCA0CPM3 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 3                     */
-__sfr __at 0xDE PCA0CPM4 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 4                     */
-__sfr __at 0xE0 ACC      ;  /* ACCUMULATOR                                             */
-__sfr __at 0xE1 XBR0     ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 0               */
-__sfr __at 0xE2 XBR1     ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 1               */
-__sfr __at 0xE3 XBR2     ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 2               */
-__sfr __at 0xE6 EIE1     ;  /* EXTERNAL INTERRUPT ENABLE 1                             */
-__sfr __at 0xE7 EIE2     ;  /* EXTERNAL INTERRUPT ENABLE 2                             */
-__sfr __at 0xE8 ADC0CN   ;  /* ADC 0 CONTROL                                           */
-__sfr __at 0xE9 PCA0L    ;  /* PCA 0 TIMER - LOW BYTE                                  */
-__sfr __at 0xEA PCA0CPL0 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - LOW BYTE  */
-__sfr __at 0xEB PCA0CPL1 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - LOW BYTE  */
-__sfr __at 0xEC PCA0CPL2 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - LOW BYTE  */
-__sfr __at 0xED PCA0CPL3 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - LOW BYTE  */
-__sfr __at 0xEE PCA0CPL4 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - LOW BYTE  */
-__sfr __at 0xEF RSTSRC   ;  /* RESET SOURCE                                            */
-__sfr __at 0xF0 B        ;  /* B REGISTER                                              */
-__sfr __at 0xF6 EIP1     ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 1                  */
-__sfr __at 0xF7 EIP2     ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 2                  */
-__sfr __at 0xF8 SPI0CN   ;  /* SERIAL PERIPHERAL INTERFACE 0 CONTROL                   */
-__sfr __at 0xF9 PCA0H    ;  /* PCA 0 TIMER - HIGH BYTE                                 */
-__sfr __at 0xFA PCA0CPH0 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - HIGH BYTE */
-__sfr __at 0xFB PCA0CPH1 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - HIGH BYTE */
-__sfr __at 0xFC PCA0CPH2 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - HIGH BYTE */
-__sfr __at 0xFD PCA0CPH3 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - HIGH BYTE */
-__sfr __at 0xFE PCA0CPH4 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - HIGH BYTE */
-__sfr __at 0xFF WDTCN    ;  /* WATCHDOG TIMER CONTROL                                  */
+__sfr __at (0x80) P0           ;  /* PORT 0                                                  */
+__sfr __at (0x81) SP           ;  /* STACK POINTER                                           */
+__sfr __at (0x82) DPL          ;  /* DATA POINTER - LOW BYTE                                 */
+__sfr __at (0x83) DPH          ;  /* DATA POINTER - HIGH BYTE                                */
+__sfr __at (0x87) PCON         ;  /* POWER CONTROL                                           */
+__sfr __at (0x88) TCON         ;  /* TIMER CONTROL                                           */
+__sfr __at (0x89) TMOD         ;  /* TIMER MODE                                              */
+__sfr __at (0x8A) TL0          ;  /* TIMER 0 - LOW BYTE                                      */
+__sfr __at (0x8B) TL1          ;  /* TIMER 1 - LOW BYTE                                      */
+__sfr __at (0x8C) TH0          ;  /* TIMER 0 - HIGH BYTE                                     */
+__sfr __at (0x8D) TH1          ;  /* TIMER 1 - HIGH BYTE                                     */
+__sfr __at (0x8E) CKCON        ;  /* CLOCK CONTROL                                           */
+__sfr __at (0x8F) PSCTL        ;  /* PROGRAM STORE R/W CONTROL                               */
+__sfr __at (0x90) P1           ;  /* PORT 1                                                  */
+__sfr __at (0x91) TMR3CN       ;  /* TIMER 3 CONTROL                                         */
+__sfr __at (0x92) TMR3RLL      ;  /* TIMER 3 RELOAD REGISTER - LOW BYTE                      */
+__sfr __at (0x93) TMR3RLH      ;  /* TIMER 3 RELOAD REGISTER - HIGH BYTE                     */
+__sfr __at (0x94) TMR3L        ;  /* TIMER 3 - LOW BYTE                                      */
+__sfr __at (0x95) TMR3H        ;  /* TIMER 3 - HIGH BYTE                                     */
+__sfr __at (0x98) SCON         ;  /* SERIAL PORT CONTROL                                     */
+__sfr __at (0x99) SBUF         ;  /* SERIAL PORT BUFFER                                      */
+__sfr __at (0x9A) SPI0CFG      ;  /* SERIAL PERIPHERAL INTERFACE 0 CONFIGURATION             */
+__sfr __at (0x9B) SPI0DAT      ;  /* SERIAL PERIPHERAL INTERFACE 0 DATA                      */
+__sfr __at (0x9D) SPI0CKR      ;  /* SERIAL PERIPHERAL INTERFACE 0 CLOCK RATE CONTROL        */
+__sfr __at (0x9E) CPT0CN       ;  /* COMPARATOR 0 CONTROL                                    */
+__sfr __at (0x9F) CPT1CN       ;  /* COMPARATOR 1 CONTROL                                    */
+__sfr __at (0xA0) P2           ;  /* PORT 2                                                  */
+__sfr __at (0xA4) PRT0CF       ;  /* PORT 0 CONFIGURATION                                    */
+__sfr __at (0xA5) PRT1CF       ;  /* PORT 1 CONFIGURATION                                    */
+__sfr __at (0xA6) PRT2CF       ;  /* PORT 2 CONFIGURATION                                    */
+__sfr __at (0xA7) PRT3CF       ;  /* PORT 3 CONFIGURATION                                    */
+__sfr __at (0xA8) IE           ;  /* INTERRUPT ENABLE                                        */
+__sfr __at (0xAD) PRT1IF       ;  /* PORT 1 EXTERNAL INTERRUPT FLAGS                         */
+__sfr __at (0xAF) EMI0CN       ;  /* EXTERNAL MEMORY INTERFACE CONTROL                       */
+__sfr __at (0xAF) _XPAGE       ;  /* XDATA/PDATA PAGE                                        */
+__sfr __at (0xB0) P3           ;  /* PORT 3                                                  */
+__sfr __at (0xB1) OSCXCN       ;  /* EXTERNAL OSCILLATOR CONTROL                             */
+__sfr __at (0xB2) OSCICN       ;  /* INTERNAL OSCILLATOR CONTROL                             */
+__sfr __at (0xB6) FLSCL        ;  /* FLASH MEMORY TIMING PRESCALER                           */
+__sfr __at (0xB7) FLACL        ;  /* FLASH ACESS LIMIT                                       */
+__sfr __at (0xB8) IP           ;  /* INTERRUPT PRIORITY                                      */
+__sfr __at (0xBA) AMX0CF       ;  /* ADC 0 MUX CONFIGURATION                                 */
+__sfr __at (0xBB) AMX0SL       ;  /* ADC 0 MUX CHANNEL SELECTION                             */
+__sfr __at (0xBC) ADC0CF       ;  /* ADC 0 CONFIGURATION                                     */
+__sfr __at (0xBE) ADC0L        ;  /* ADC 0 DATA - LOW BYTE                                   */
+__sfr __at (0xBF) ADC0H        ;  /* ADC 0 DATA - HIGH BYTE                                  */
+__sfr __at (0xC0) SMB0CN       ;  /* SMBUS 0 CONTROL                                         */
+__sfr __at (0xC1) SMB0STA      ;  /* SMBUS 0 STATUS                                          */
+__sfr __at (0xC2) SMB0DAT      ;  /* SMBUS 0 DATA                                            */
+__sfr __at (0xC3) SMB0ADR      ;  /* SMBUS 0 SLAVE ADDRESS                                   */
+__sfr __at (0xC4) ADC0GTL      ;  /* ADC 0 GREATER-THAN REGISTER - LOW BYTE                  */
+__sfr __at (0xC5) ADC0GTH      ;  /* ADC 0 GREATER-THAN REGISTER - HIGH BYTE                 */
+__sfr __at (0xC6) ADC0LTL      ;  /* ADC 0 LESS-THAN REGISTER - LOW BYTE                     */
+__sfr __at (0xC7) ADC0LTH      ;  /* ADC 0 LESS-THAN REGISTER - HIGH BYTE                    */
+__sfr __at (0xC8) T2CON        ;  /* TIMER 2 CONTROL                                         */
+__sfr __at (0xCA) RCAP2L       ;  /* TIMER 2 CAPTURE REGISTER - LOW BYTE                     */
+__sfr __at (0xCB) RCAP2H       ;  /* TIMER 2 CAPTURE REGISTER - HIGH BYTE                    */
+__sfr __at (0xCC) TL2          ;  /* TIMER 2 - LOW BYTE                                      */
+__sfr __at (0xCD) TH2          ;  /* TIMER 2 - HIGH BYTE                                     */
+__sfr __at (0xCF) SMB0CR       ;  /* SMBUS 0 CLOCK RATE                                      */
+__sfr __at (0xD0) PSW          ;  /* PROGRAM STATUS WORD                                     */
+__sfr __at (0xD1) REF0CN       ;  /* VOLTAGE REFERENCE 0 CONTROL                             */
+__sfr __at (0xD8) PCA0CN       ;  /* PCA 0 COUNTER CONTROL                                   */
+__sfr __at (0xD9) PCA0MD       ;  /* PCA 0 COUNTER MODE                                      */
+__sfr __at (0xDA) PCA0CPM0     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 0                     */
+__sfr __at (0xDB) PCA0CPM1     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 1                     */
+__sfr __at (0xDC) PCA0CPM2     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 2                     */
+__sfr __at (0xDD) PCA0CPM3     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 3                     */
+__sfr __at (0xDE) PCA0CPM4     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 4                     */
+__sfr __at (0xE0) ACC          ;  /* ACCUMULATOR                                             */
+__sfr __at (0xE1) XBR0         ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 0               */
+__sfr __at (0xE2) XBR1         ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 1               */
+__sfr __at (0xE3) XBR2         ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 2               */
+__sfr __at (0xE6) EIE1         ;  /* EXTERNAL INTERRUPT ENABLE 1                             */
+__sfr __at (0xE7) EIE2         ;  /* EXTERNAL INTERRUPT ENABLE 2                             */
+__sfr __at (0xE8) ADC0CN       ;  /* ADC 0 CONTROL                                           */
+__sfr __at (0xE9) PCA0L        ;  /* PCA 0 TIMER - LOW BYTE                                  */
+__sfr __at (0xEA) PCA0CPL0     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - LOW BYTE  */
+__sfr __at (0xEB) PCA0CPL1     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - LOW BYTE  */
+__sfr __at (0xEC) PCA0CPL2     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - LOW BYTE  */
+__sfr __at (0xED) PCA0CPL3     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - LOW BYTE  */
+__sfr __at (0xEE) PCA0CPL4     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - LOW BYTE  */
+__sfr __at (0xEF) RSTSRC       ;  /* RESET SOURCE                                            */
+__sfr __at (0xF0) B            ;  /* B REGISTER                                              */
+__sfr __at (0xF6) EIP1         ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 1                  */
+__sfr __at (0xF7) EIP2         ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 2                  */
+__sfr __at (0xF8) SPI0CN       ;  /* SERIAL PERIPHERAL INTERFACE 0 CONTROL                   */
+__sfr __at (0xF9) PCA0H        ;  /* PCA 0 TIMER - HIGH BYTE                                 */
+__sfr __at (0xFA) PCA0CPH0     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - HIGH BYTE */
+__sfr __at (0xFB) PCA0CPH1     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - HIGH BYTE */
+__sfr __at (0xFC) PCA0CPH2     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - HIGH BYTE */
+__sfr __at (0xFD) PCA0CPH3     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - HIGH BYTE */
+__sfr __at (0xFE) PCA0CPH4     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - HIGH BYTE */
+__sfr __at (0xFF) WDTCN        ;  /* WATCHDOG TIMER CONTROL                                  */
+
+
+/*  WORD/DWORD Registers  */
+
+__sfr16 __at (0x8C8A) TMR0     ;  /* TIMER 0 COUNTER                                         */
+__sfr16 __at (0x8D8B) TMR1     ;  /* TIMER 1 COUNTER                                         */
+__sfr16 __at (0xCDCC) TMR2     ;  /* TIMER 2 COUNTER                                         */
+__sfr16 __at (0xCBCA) RCAP2    ;  /* TIMER 2 CAPTURE REGISTER WORD                           */
+__sfr16 __at (0x9594) TMR3     ;  /* TIMER 3 COUNTER                                         */
+__sfr16 __at (0x9392) TMR3RL   ;  /* TIMER 3 CAPTURE REGISTER WORD                           */
+__sfr16 __at (0xBFBE) ADC0     ;  /* ADC 0 DATA WORD                                         */
+__sfr16 __at (0xC5C4) ADC0GT   ;  /* ADC 0 GREATER-THAN REGISTER WORD                        */
+__sfr16 __at (0xC7C6) ADC0LT   ;  /* ADC 0 LESS-THAN REGISTER WORD                           */
+__sfr16 __at (0xF9E9) PCA0     ;  /* PCA COUNTER                                             */
+__sfr16 __at (0xFAEA) PCA0CP0  ;  /* PCA CAPTURE 0 WORD                                      */
+__sfr16 __at (0xFBEB) PCA0CP1  ;  /* PCA CAPTURE 1 WORD                                      */
+__sfr16 __at (0xFCEC) PCA0CP2  ;  /* PCA CAPTURE 2 WORD                                      */
+__sfr16 __at (0xFDED) PCA0CP3  ;  /* PCA CAPTURE 3 WORD                                      */
+__sfr16 __at (0xFEEE) PCA0CP4  ;  /* PCA CAPTURE 4 WORD                                      */
 
 
 /*  BIT Registers  */
 
 /*  P0  0x80 */
-__sbit __at 0x87 P0_7    ;
-__sbit __at 0x86 P0_6    ;
-__sbit __at 0x85 P0_5    ;
-__sbit __at 0x84 P0_4    ;
-__sbit __at 0x83 P0_3    ;
-__sbit __at 0x82 P0_2    ;
-__sbit __at 0x81 P0_1    ;
-__sbit __at 0x80 P0_0    ;
+__sbit __at (0x87) P0_7        ;
+__sbit __at (0x86) P0_6        ;
+__sbit __at (0x85) P0_5        ;
+__sbit __at (0x84) P0_4        ;
+__sbit __at (0x83) P0_3        ;
+__sbit __at (0x82) P0_2        ;
+__sbit __at (0x81) P0_1        ;
+__sbit __at (0x80) P0_0        ;
 
 /*  TCON  0x88 */
-__sbit __at 0x8F TF1     ;  /* TIMER 1 OVERFLOW FLAG                     */
-__sbit __at 0x8E TR1     ;  /* TIMER 1 ON/OFF CONTROL                    */
-__sbit __at 0x8D TF0     ;  /* TIMER 0 OVERFLOW FLAG                     */
-__sbit __at 0x8C TR0     ;  /* TIMER 0 ON/OFF CONTROL                    */
-__sbit __at 0x8B IE1     ;  /* EXT. INTERRUPT 1 EDGE FLAG                */
-__sbit __at 0x8A IT1     ;  /* EXT. INTERRUPT 1 TYPE                     */
-__sbit __at 0x89 IE0     ;  /* EXT. INTERRUPT 0 EDGE FLAG                */
-__sbit __at 0x88 IT0     ;  /* EXT. INTERRUPT 0 TYPE                     */
+__sbit __at (0x8F) TF1         ;  /* TIMER 1 OVERFLOW FLAG                                   */
+__sbit __at (0x8E) TR1         ;  /* TIMER 1 ON/OFF CONTROL                                  */
+__sbit __at (0x8D) TF0         ;  /* TIMER 0 OVERFLOW FLAG                                   */
+__sbit __at (0x8C) TR0         ;  /* TIMER 0 ON/OFF CONTROL                                  */
+__sbit __at (0x8B) IE1         ;  /* EXT. INTERRUPT 1 EDGE FLAG                              */
+__sbit __at (0x8A) IT1         ;  /* EXT. INTERRUPT 1 TYPE                                   */
+__sbit __at (0x89) IE0         ;  /* EXT. INTERRUPT 0 EDGE FLAG                              */
+__sbit __at (0x88) IT0         ;  /* EXT. INTERRUPT 0 TYPE                                   */
 
 /*  P1  0x90 */
-__sbit __at 0x97 P1_7    ;
-__sbit __at 0x96 P1_6    ;
-__sbit __at 0x95 P1_5    ;
-__sbit __at 0x94 P1_4    ;
-__sbit __at 0x93 P1_3    ;
-__sbit __at 0x92 P1_2    ;
-__sbit __at 0x91 P1_1    ;
-__sbit __at 0x90 P1_0    ;
+__sbit __at (0x97) P1_7        ;
+__sbit __at (0x96) P1_6        ;
+__sbit __at (0x95) P1_5        ;
+__sbit __at (0x94) P1_4        ;
+__sbit __at (0x93) P1_3        ;
+__sbit __at (0x92) P1_2        ;
+__sbit __at (0x91) P1_1        ;
+__sbit __at (0x90) P1_0        ;
 
 /*  SCON  0x98 */
-__sbit __at 0x9F SM0     ;  /* SERIAL MODE CONTROL BIT 0                 */
-__sbit __at 0x9E SM1     ;  /* SERIAL MODE CONTROL BIT 1                 */
-__sbit __at 0x9D SM2     ;  /* MULTIPROCESSOR COMMUNICATION ENABLE       */
-__sbit __at 0x9C REN     ;  /* RECEIVE ENABLE                            */
-__sbit __at 0x9B TB8     ;  /* TRANSMIT BIT 8                            */
-__sbit __at 0x9A RB8     ;  /* RECEIVE BIT 8                             */
-__sbit __at 0x99 TI      ;  /* TRANSMIT INTERRUPT FLAG                   */
-__sbit __at 0x98 RI      ;  /* RECEIVE INTERRUPT FLAG                    */
+__sbit __at (0x9F) SM0         ;  /* SERIAL MODE CONTROL BIT 0                               */
+__sbit __at (0x9E) SM1         ;  /* SERIAL MODE CONTROL BIT 1                               */
+__sbit __at (0x9D) SM2         ;  /* MULTIPROCESSOR COMMUNICATION ENABLE                     */
+__sbit __at (0x9C) REN         ;  /* RECEIVE ENABLE                                          */
+__sbit __at (0x9B) TB8         ;  /* TRANSMIT BIT 8                                          */
+__sbit __at (0x9A) RB8         ;  /* RECEIVE BIT 8                                           */
+__sbit __at (0x99) TI          ;  /* TRANSMIT INTERRUPT FLAG                                 */
+__sbit __at (0x98) RI          ;  /* RECEIVE INTERRUPT FLAG                                  */
 
 /*  P2  0xA0 */
-__sbit __at 0xA7 P2_7    ;
-__sbit __at 0xA6 P2_6    ;
-__sbit __at 0xA5 P2_5    ;
-__sbit __at 0xA4 P2_4    ;
-__sbit __at 0xA3 P2_3    ;
-__sbit __at 0xA2 P2_2    ;
-__sbit __at 0xA1 P2_1    ;
-__sbit __at 0xA0 P2_0    ;
+__sbit __at (0xA7) P2_7        ;
+__sbit __at (0xA6) P2_6        ;
+__sbit __at (0xA5) P2_5        ;
+__sbit __at (0xA4) P2_4        ;
+__sbit __at (0xA3) P2_3        ;
+__sbit __at (0xA2) P2_2        ;
+__sbit __at (0xA1) P2_1        ;
+__sbit __at (0xA0) P2_0        ;
 
 /*  IE  0xA8 */
-__sbit __at 0xAF EA      ;  /* GLOBAL INTERRUPT ENABLE                   */
-__sbit __at 0xAD ET2     ;  /* TIMER 2 INTERRUPT ENABLE                  */
-__sbit __at 0xAC ES      ;  /* SERIAL PORT INTERRUPT ENABLE              */
-__sbit __at 0xAB ET1     ;  /* TIMER 1 INTERRUPT ENABLE                  */
-__sbit __at 0xAA EX1     ;  /* EXTERNAL INTERRUPT 1 ENABLE               */
-__sbit __at 0xA9 ET0     ;  /* TIMER 0 INTERRUPT ENABLE                  */
-__sbit __at 0xA8 EX0     ;  /* EXTERNAL INTERRUPT 0 ENABLE               */
+__sbit __at (0xAF) EA          ;  /* GLOBAL INTERRUPT ENABLE                                 */
+__sbit __at (0xAD) ET2         ;  /* TIMER 2 INTERRUPT ENABLE                                */
+__sbit __at (0xAC) ES          ;  /* SERIAL PORT INTERRUPT ENABLE                            */
+__sbit __at (0xAB) ET1         ;  /* TIMER 1 INTERRUPT ENABLE                                */
+__sbit __at (0xAA) EX1         ;  /* EXTERNAL INTERRUPT 1 ENABLE                             */
+__sbit __at (0xA9) ET0         ;  /* TIMER 0 INTERRUPT ENABLE                                */
+__sbit __at (0xA8) EX0         ;  /* EXTERNAL INTERRUPT 0 ENABLE                             */
 
 /*  P3  0xB0 */
-__sbit __at 0xB7 P3_7    ;
-__sbit __at 0xB6 P3_6    ;
-__sbit __at 0xB5 P3_5    ;
-__sbit __at 0xB4 P3_4    ;
-__sbit __at 0xB3 P3_3    ;
-__sbit __at 0xB2 P3_2    ;
-__sbit __at 0xB1 P3_1    ;
-__sbit __at 0xB0 P3_0    ;
+__sbit __at (0xB7) P3_7        ;
+__sbit __at (0xB6) P3_6        ;
+__sbit __at (0xB5) P3_5        ;
+__sbit __at (0xB4) P3_4        ;
+__sbit __at (0xB3) P3_3        ;
+__sbit __at (0xB2) P3_2        ;
+__sbit __at (0xB1) P3_1        ;
+__sbit __at (0xB0) P3_0        ;
 
 /*  IP  0xB8 */
-__sbit __at 0xBD PT2     ;  /* TIMER 2 PRIORITY                          */
-__sbit __at 0xBC PS      ;  /* SERIAL PORT PRIORITY                      */
-__sbit __at 0xBB PT1     ;  /* TIMER 1 PRIORITY                          */
-__sbit __at 0xBA PX1     ;  /* EXTERNAL INTERRUPT 1 PRIORITY             */
-__sbit __at 0xB9 PT0     ;  /* TIMER 0 PRIORITY                          */
-__sbit __at 0xB8 PX0     ;  /* EXTERNAL INTERRUPT 0 PRIORITY             */
+__sbit __at (0xBD) PT2         ;  /* TIMER 2 PRIORITY                                        */
+__sbit __at (0xBC) PS          ;  /* SERIAL PORT PRIORITY                                    */
+__sbit __at (0xBB) PT1         ;  /* TIMER 1 PRIORITY                                        */
+__sbit __at (0xBA) PX1         ;  /* EXTERNAL INTERRUPT 1 PRIORITY                           */
+__sbit __at (0xB9) PT0         ;  /* TIMER 0 PRIORITY                                        */
+__sbit __at (0xB8) PX0         ;  /* EXTERNAL INTERRUPT 0 PRIORITY                           */
 
 /*  SMB0CN  0xC0 */
-__sbit __at 0xC7 BUSY    ;  /* SMBUS 0 BUSY                              */
-__sbit __at 0xC6 ENSMB   ;  /* SMBUS 0 ENABLE                            */
-__sbit __at 0xC5 STA     ;  /* SMBUS 0 START FLAG                        */
-__sbit __at 0xC4 STO     ;  /* SMBUS 0 STOP FLAG                         */
-__sbit __at 0xC3 SI      ;  /* SMBUS 0 INTERRUPT PENDING FLAG            */
-__sbit __at 0xC2 AA      ;  /* SMBUS 0 ASSERT/ACKNOWLEDGE FLAG           */
-__sbit __at 0xC1 SMBFTE  ;  /* SMBUS 0 FREE TIMER ENABLE                 */
-__sbit __at 0xC0 SMBTOE  ;  /* SMBUS 0 TIMEOUT ENABLE                    */
+__sbit __at (0xC7) BUSY        ;  /* SMBUS 0 BUSY                                            */
+__sbit __at (0xC6) ENSMB       ;  /* SMBUS 0 ENABLE                                          */
+__sbit __at (0xC5) STA         ;  /* SMBUS 0 START FLAG                                      */
+__sbit __at (0xC4) STO         ;  /* SMBUS 0 STOP FLAG                                       */
+__sbit __at (0xC3) SI          ;  /* SMBUS 0 INTERRUPT PENDING FLAG                          */
+__sbit __at (0xC2) AA          ;  /* SMBUS 0 ASSERT/ACKNOWLEDGE FLAG                         */
+__sbit __at (0xC1) SMBFTE      ;  /* SMBUS 0 FREE TIMER ENABLE                               */
+__sbit __at (0xC0) SMBTOE      ;  /* SMBUS 0 TIMEOUT ENABLE                                  */
 
 /*  T2CON  0xC8 */
-__sbit __at 0xCF TF2     ;  /* TIMER 2 OVERFLOW FLAG                     */
-__sbit __at 0xCE EXF2    ;  /* EXTERNAL FLAG                             */
-__sbit __at 0xCD RCLK    ;  /* RECEIVE CLOCK FLAG                        */
-__sbit __at 0xCC TCLK    ;  /* TRANSMIT CLOCK FLAG                       */
-__sbit __at 0xCB EXEN2   ;  /* TIMER 2 EXTERNAL ENABLE FLAG              */
-__sbit __at 0xCA TR2     ;  /* TIMER 2 ON/OFF CONTROL                    */
-__sbit __at 0xC9 CT2     ;  /* TIMER OR COUNTER SELECT                   */
-__sbit __at 0xC8 CPRL2   ;  /* CAPTURE OR RELOAD SELECT                  */
+__sbit __at (0xCF) TF2         ;  /* TIMER 2 OVERFLOW FLAG                                   */
+__sbit __at (0xCE) EXF2        ;  /* EXTERNAL FLAG                                           */
+__sbit __at (0xCD) RCLK        ;  /* RECEIVE CLOCK FLAG                                      */
+__sbit __at (0xCC) TCLK        ;  /* TRANSMIT CLOCK FLAG                                     */
+__sbit __at (0xCB) EXEN2       ;  /* TIMER 2 EXTERNAL ENABLE FLAG                            */
+__sbit __at (0xCA) TR2         ;  /* TIMER 2 ON/OFF CONTROL                                  */
+__sbit __at (0xC9) CT2         ;  /* TIMER OR COUNTER SELECT                                 */
+__sbit __at (0xC8) CPRL2       ;  /* CAPTURE OR RELOAD SELECT                                */
 
 /*  PSW  0xD0 */
-__sbit __at 0xD7 CY      ;  /* CARRY FLAG                                */
-__sbit __at 0xD6 AC      ;  /* AUXILIARY CARRY FLAG                      */
-__sbit __at 0xD5 F0      ;  /* USER FLAG 0                               */
-__sbit __at 0xD4 RS1     ;  /* REGISTER BANK SELECT 1                    */
-__sbit __at 0xD3 RS0     ;  /* REGISTER BANK SELECT 0                    */
-__sbit __at 0xD2 OV      ;  /* OVERFLOW FLAG                             */
-__sbit __at 0xD1 F1      ;  /* USER FLAG 1                               */
-__sbit __at 0xD0 P       ;  /* ACCUMULATOR PARITY FLAG                   */
+__sbit __at (0xD7) CY          ;  /* CARRY FLAG                                              */
+__sbit __at (0xD6) AC          ;  /* AUXILIARY CARRY FLAG                                    */
+__sbit __at (0xD5) F0          ;  /* USER FLAG 0                                             */
+__sbit __at (0xD4) RS1         ;  /* REGISTER BANK SELECT 1                                  */
+__sbit __at (0xD3) RS0         ;  /* REGISTER BANK SELECT 0                                  */
+__sbit __at (0xD2) OV          ;  /* OVERFLOW FLAG                                           */
+__sbit __at (0xD1) F1          ;  /* USER FLAG 1                                             */
+__sbit __at (0xD0) P           ;  /* ACCUMULATOR PARITY FLAG                                 */
 
 /*  PCA0CN  0xD8H */
-__sbit __at 0xDF CF      ;  /* PCA 0 COUNTER OVERFLOW FLAG               */
-__sbit __at 0xDE CR      ;  /* PCA 0 COUNTER RUN CONTROL BIT             */
-__sbit __at 0xDC CCF4    ;  /* PCA 0 MODULE 4 INTERRUPT FLAG             */
-__sbit __at 0xDB CCF3    ;  /* PCA 0 MODULE 3 INTERRUPT FLAG             */
-__sbit __at 0xDA CCF2    ;  /* PCA 0 MODULE 2 INTERRUPT FLAG             */
-__sbit __at 0xD9 CCF1    ;  /* PCA 0 MODULE 1 INTERRUPT FLAG             */
-__sbit __at 0xD8 CCF0    ;  /* PCA 0 MODULE 0 INTERRUPT FLAG             */
+__sbit __at (0xDF) CF          ;  /* PCA 0 COUNTER OVERFLOW FLAG                             */
+__sbit __at (0xDE) CR          ;  /* PCA 0 COUNTER RUN CONTROL BIT                           */
+__sbit __at (0xDC) CCF4        ;  /* PCA 0 MODULE 4 INTERRUPT FLAG                           */
+__sbit __at (0xDB) CCF3        ;  /* PCA 0 MODULE 3 INTERRUPT FLAG                           */
+__sbit __at (0xDA) CCF2        ;  /* PCA 0 MODULE 2 INTERRUPT FLAG                           */
+__sbit __at (0xD9) CCF1        ;  /* PCA 0 MODULE 1 INTERRUPT FLAG                           */
+__sbit __at (0xD8) CCF0        ;  /* PCA 0 MODULE 0 INTERRUPT FLAG                           */
 
 /*  ADC0CN  0xE8H */
-__sbit __at 0xEF AD0EN   ;  /* ADC 0 ENABLE                              */
-__sbit __at 0xEE AD0TM   ;  /* ADC 0 TRACK MODE                          */
-__sbit __at 0xED AD0INT  ;  /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG */
-__sbit __at 0xEC AD0BUSY ;  /* ADC 0 BUSY FLAG                           */
-__sbit __at 0xEB ADSTM1  ;  /* ADC 0 START OF CONVERSION MODE BIT 1      */
-__sbit __at 0xEA ADSTM0  ;  /* ADC 0 START OF CONVERSION MODE BIT 0      */
-__sbit __at 0xE9 AD0WINT ;  /* ADC 0 WINDOW COMPARE INTERRUPT FLAG       */
-__sbit __at 0xE8 ADLJST  ;  /* ADC 0 RIGHT JUSTIFY DATA BIT              */
+__sbit __at (0xEF) AD0EN       ;  /* ADC 0 ENABLE                                            */
+__sbit __at (0xEE) AD0TM       ;  /* ADC 0 TRACK MODE                                        */
+__sbit __at (0xED) AD0INT      ;  /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG               */
+__sbit __at (0xEC) AD0BUSY     ;  /* ADC 0 BUSY FLAG                                         */
+__sbit __at (0xEB) ADSTM1      ;  /* ADC 0 START OF CONVERSION MODE BIT 1                    */
+__sbit __at (0xEA) ADSTM0      ;  /* ADC 0 START OF CONVERSION MODE BIT 0                    */
+__sbit __at (0xE9) AD0WINT     ;  /* ADC 0 WINDOW COMPARE INTERRUPT FLAG                     */
+__sbit __at (0xE8) ADLJST      ;  /* ADC 0 RIGHT JUSTIFY DATA BIT                            */
 
 /*  SPI0CN  0xF8H */
-__sbit __at 0xFF SPIF    ;  /* SPI 0 INTERRUPT FLAG                      */
-__sbit __at 0xFE WCOL    ;  /* SPI 0 WRITE COLLISION FLAG                */
-__sbit __at 0xFD MODF    ;  /* SPI 0 MODE FAULT FLAG                     */
-__sbit __at 0xFC RXOVRN  ;  /* SPI 0 RX OVERRUN FLAG                     */
-__sbit __at 0xFB TXBSY   ;  /* SPI 0 TX BUSY FLAG                        */
-__sbit __at 0xFA SLVSEL  ;  /* SPI 0 SLAVE SELECT                        */
-__sbit __at 0xF9 MSTEN   ;  /* SPI 0 MASTER ENABLE                       */
-__sbit __at 0xF8 SPIEN   ;  /* SPI 0 SPI ENABLE                          */
+__sbit __at (0xFF) SPIF        ;  /* SPI 0 INTERRUPT FLAG                                    */
+__sbit __at (0xFE) WCOL        ;  /* SPI 0 WRITE COLLISION FLAG                              */
+__sbit __at (0xFD) MODF        ;  /* SPI 0 MODE FAULT FLAG                                   */
+__sbit __at (0xFC) RXOVRN      ;  /* SPI 0 RX OVERRUN FLAG                                   */
+__sbit __at (0xFB) TXBSY       ;  /* SPI 0 TX BUSY FLAG                                      */
+__sbit __at (0xFA) SLVSEL      ;  /* SPI 0 SLAVE SELECT                                      */
+__sbit __at (0xF9) MSTEN       ;  /* SPI 0 MASTER ENABLE                                     */
+__sbit __at (0xF8) SPIEN       ;  /* SPI 0 SPI ENABLE                                        */
 
 
 /* Predefined SFR Bit Masks */
 
-#define IDLE    0x01    /* PCON */
-#define STOP    0x02    /* PCON */
-#define TF3     0x80    /* TMR3CN */
-#define CPFIF   0x10    /* CPTnCN */
-#define CPRIF   0x20    /* CPTnCN */
-#define CPOUT   0x40    /* CPTnCN */
-#define ECCF    0x01    /* PCA0CPMn */
-#define PWM     0x02    /* PCA0CPMn */
-#define TOG     0x04    /* PCA0CPMn */
-#define MAT     0x08    /* PCA0CPMn */
-#define CAPN    0x10    /* PCA0CPMn */
-#define CAPP    0x20    /* PCA0CPMn */
-#define ECOM    0x40    /* PCA0CPMn */
+#define PCON_IDLE         0x01    /* PCON                                */
+#define PCON_STOP         0x02    /* PCON                                */
+#define TF3               0x80    /* TMR3CN                              */
+#define CPFIF             0x10    /* CPTnCN                              */
+#define CPRIF             0x20    /* CPTnCN                              */
+#define CPOUT             0x40    /* CPTnCN                              */
+#define ECCF              0x01    /* PCA0CPMn                            */
+#define PWM               0x02    /* PCA0CPMn                            */
+#define TOG               0x04    /* PCA0CPMn                            */
+#define MAT               0x08    /* PCA0CPMn                            */
+#define CAPN              0x10    /* PCA0CPMn                            */
+#define CAPP              0x20    /* PCA0CPMn                            */
+#define ECOM              0x40    /* PCA0CPMn                            */
 
 #endif
index 8cd1aef097da08f198d8a1860044cc337612bbd9..cec6e9b391dc257d94cd6942ffdc5cedbd722487 100644 (file)
 
 
 /*  BYTE Registers  */
-__sfr __at 0x80 P0       ;  /* PORT 0                                                  */
-__sfr __at 0x81 SP       ;  /* STACK POINTER                                           */
-__sfr __at 0x82 DPL      ;  /* DATA POINTER - LOW BYTE                                 */
-__sfr __at 0x83 DPH      ;  /* DATA POINTER - HIGH BYTE                                */
-__sfr __at 0x84 P4       ;  /* PORT 4                                                  */
-__sfr __at 0x85 P5       ;  /* PORT 5                                                  */
-__sfr __at 0x86 P6       ;  /* PORT 6                                                  */
-__sfr __at 0x87 PCON     ;  /* POWER CONTROL                                           */
-__sfr __at 0x88 TCON     ;  /* TIMER CONTROL                                           */
-__sfr __at 0x89 TMOD     ;  /* TIMER MODE                                              */
-__sfr __at 0x8A TL0      ;  /* TIMER 0 - LOW BYTE                                      */
-__sfr __at 0x8B TL1      ;  /* TIMER 1 - LOW BYTE                                      */
-__sfr __at 0x8C TH0      ;  /* TIMER 0 - HIGH BYTE                                     */
-__sfr __at 0x8D TH1      ;  /* TIMER 1 - HIGH BYTE                                     */
-__sfr __at 0x8E CKCON    ;  /* CLOCK CONTROL                                           */
-__sfr __at 0x8F PSCTL    ;  /* PROGRAM STORE R/W CONTROL                               */
-__sfr __at 0x90 P1       ;  /* PORT 1                                                  */
-__sfr __at 0x91 TMR3CN   ;  /* TIMER 3 CONTROL                                         */
-__sfr __at 0x92 TMR3RLL  ;  /* TIMER 3 RELOAD REGISTER - LOW BYTE                      */
-__sfr __at 0x93 TMR3RLH  ;  /* TIMER 3 RELOAD REGISTER - HIGH BYTE                     */
-__sfr __at 0x94 TMR3L    ;  /* TIMER 3 - LOW BYTE                                      */
-__sfr __at 0x95 TMR3H    ;  /* TIMER 3 - HIGH BYTE                                     */
-__sfr __at 0x96 P7       ;  /* PORT 7                                                  */
-__sfr __at 0x98 SCON     ;  /* UART0 CONTROL                                           */
-__sfr __at 0x98 SCON0    ;  /* UART0 CONTROL                                           */
-__sfr __at 0x99 SBUF     ;  /* UART0 BUFFER                                            */
-__sfr __at 0x99 SBUF0    ;  /* UART0 BUFFER                                            */
-__sfr __at 0x9A SPI0CFG  ;  /* SERIAL PERIPHERAL INTERFACE 0 CONFIGURATION             */
-__sfr __at 0x9B SPI0DAT  ;  /* SERIAL PERIPHERAL INTERFACE 0 DATA                      */
-__sfr __at 0x9C ADC1     ;  /* ADC 1 DATA                                              */
-__sfr __at 0x9D SPI0CKR  ;  /* SERIAL PERIPHERAL INTERFACE 0 CLOCK RATE CONTROL        */
-__sfr __at 0x9E CPT0CN   ;  /* COMPARATOR 0 CONTROL                                    */
-__sfr __at 0x9F CPT1CN   ;  /* COMPARATOR 1 CONTROL                                    */
-__sfr __at 0xA0 P2       ;  /* PORT 2                                                  */
-__sfr __at 0xA1 EMI0TC   ;  /* External Memory Timing Control                          */
-__sfr __at 0xA3 EMI0CF   ;  /* EMIF CONFIGURATION                                      */
-__sfr __at 0xA4 PRT0CF   ;  /* PORT 0 CONFIGURATION                                    */
-__sfr __at 0xA4 P0MDOUT  ;  /* PORT 0 OUTPUT MODE CONFIGURATION                        */
-__sfr __at 0xA5 PRT1CF   ;  /* PORT 1 CONFIGURATION                                    */
-__sfr __at 0xA5 P1MDOUT  ;  /* PORT 1 OUTPUT MODE CONFIGURATION                        */
-__sfr __at 0xA6 PRT2CF   ;  /* PORT 2 CONFIGURATION                                    */
-__sfr __at 0xA6 P2MDOUT  ;  /* PORT 2 OUTPUT MODE CONFIGURATION                        */
-__sfr __at 0xA7 PRT3CF   ;  /* PORT 3 CONFIGURATION                                    */
-__sfr __at 0xA7 P3MDOUT  ;  /* PORT 3 OUTPUT MODE CONFIGURATION                        */
-__sfr __at 0xA8 IE       ;  /* INTERRUPT ENABLE                                        */
-__sfr __at 0xA9 SADDR0   ;  /* UART0 Slave Address                                     */
-__sfr __at 0xAA ADC1CN   ;  /* ADC 1 CONTROL                                           */
-__sfr __at 0xAB ADC1CF   ;  /* ADC 1 CONFIGURATION                                     */
-__sfr __at 0xAC AMX1SL   ;  /* ADC 1 MUX CHANNEL SELECTION                             */
-__sfr __at 0xAD P3IF     ;  /* PORT 3 EXTERNAL INTERRUPT FLAGS                         */
-__sfr __at 0xAE SADEN1   ;  /* UART1 Slave Address Enable                              */
-__sfr __at 0xAF EMI0CN   ;  /* EXTERNAL MEMORY INTERFACE CONTROL                       */
-__sfr __at 0xAF _XPAGE ;    /* XDATA/PDATA PAGE                                        */
-__sfr __at 0xB0 P3       ;  /* PORT 3                                                  */
-__sfr __at 0xB1 OSCXCN   ;  /* EXTERNAL OSCILLATOR CONTROL                             */
-__sfr __at 0xB2 OSCICN   ;  /* INTERNAL OSCILLATOR CONTROL                             */
-__sfr __at 0xB5 P74OUT   ;  /* PORT 4 THROUGH 7 OUTPUT MODE CONFIGURATION              */
-__sfr __at 0xB6 FLSCL    ;  /* FLASH MEMORY TIMING PRESCALER                           */
-__sfr __at 0xB7 FLACL    ;  /* FLASH ACESS LIMIT                                       */
-__sfr __at 0xB8 IP       ;  /* INTERRUPT PRIORITY                                      */
-__sfr __at 0xB9 SADEN0   ;  /* UART0 Slave Address Enable                              */
-__sfr __at 0xBA AMX0CF   ;  /* ADC 0 MUX CONFIGURATION                                 */
-__sfr __at 0xBB AMX0SL   ;  /* ADC 0 MUX CHANNEL SELECTION                             */
-__sfr __at 0xBC ADC0CF   ;  /* ADC 0 CONFIGURATION                                     */
-__sfr __at 0xBD P1MDIN   ;  /* PORT 1 Input Mode                                       */
-__sfr __at 0xBE ADC0L    ;  /* ADC 0 DATA - LOW BYTE                                   */
-__sfr __at 0xBF ADC0H    ;  /* ADC 0 DATA - HIGH BYTE                                  */
-__sfr __at 0xC0 SMB0CN   ;  /* SMBUS 0 CONTROL                                         */
-__sfr __at 0xC1 SMB0STA  ;  /* SMBUS 0 STATUS                                          */
-__sfr __at 0xC2 SMB0DAT  ;  /* SMBUS 0 DATA                                            */
-__sfr __at 0xC3 SMB0ADR  ;  /* SMBUS 0 SLAVE ADDRESS                                   */
-__sfr __at 0xC4 ADC0GTL  ;  /* ADC 0 GREATER-THAN REGISTER - LOW BYTE                  */
-__sfr __at 0xC5 ADC0GTH  ;  /* ADC 0 GREATER-THAN REGISTER - HIGH BYTE                 */
-__sfr __at 0xC6 ADC0LTL  ;  /* ADC 0 LESS-THAN REGISTER - LOW BYTE                     */
-__sfr __at 0xC7 ADC0LTH  ;  /* ADC 0 LESS-THAN REGISTER - HIGH BYTE                    */
-__sfr __at 0xC8 T2CON    ;  /* TIMER 2 CONTROL                                         */
-__sfr __at 0xC9 T4CON    ;  /* TIMER 4 CONTROL                                         */
-__sfr __at 0xCA RCAP2L   ;  /* TIMER 2 CAPTURE REGISTER - LOW BYTE                     */
-__sfr __at 0xCB RCAP2H   ;  /* TIMER 2 CAPTURE REGISTER - HIGH BYTE                    */
-__sfr __at 0xCC TL2      ;  /* TIMER 2 - LOW BYTE                                      */
-__sfr __at 0xCD TH2      ;  /* TIMER 2 - HIGH BYTE                                     */
-__sfr __at 0xCF SMB0CR   ;  /* SMBUS 0 CLOCK RATE                                      */
-__sfr __at 0xD0 PSW      ;  /* PROGRAM STATUS WORD                                     */
-__sfr __at 0xD1 REF0CN   ;  /* VOLTAGE REFERENCE 0 CONTROL                             */
-__sfr __at 0xD2 DAC0L    ;  /* DAC 0 REGISTER - LOW BYTE                               */
-__sfr __at 0xD3 DAC0H    ;  /* DAC 0 REGISTER - HIGH BYTE                              */
-__sfr __at 0xD4 DAC0CN   ;  /* DAC 0 CONTROL                                           */
-__sfr __at 0xD5 DAC1L    ;  /* DAC 1 REGISTER - LOW BYTE                               */
-__sfr __at 0xD6 DAC1H    ;  /* DAC 1 REGISTER - HIGH BYTE                              */
-__sfr __at 0xD7 DAC1CN   ;  /* DAC 1 CONTROL                                           */
-__sfr __at 0xD8 PCA0CN   ;  /* PCA 0 COUNTER CONTROL                                   */
-__sfr __at 0xD9 PCA0MD   ;  /* PCA 0 COUNTER MODE                                      */
-__sfr __at 0xDA PCA0CPM0 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 0                     */
-__sfr __at 0xDB PCA0CPM1 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 1                     */
-__sfr __at 0xDC PCA0CPM2 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 2                     */
-__sfr __at 0xDD PCA0CPM3 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 3                     */
-__sfr __at 0xDE PCA0CPM4 ;  /* CONTROL REGISTER FOR PCA 0 MODULE 4                     */
-__sfr __at 0xE0 ACC      ;  /* ACCUMULATOR                                             */
-__sfr __at 0xE1 XBR0     ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 0               */
-__sfr __at 0xE2 XBR1     ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 1               */
-__sfr __at 0xE3 XBR2     ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 2               */
-__sfr __at 0xE4 RCAP4L   ;  /* TIMER 4 CAPTURE REGISTER - LOW BYTE                     */
-__sfr __at 0xE5 RCAP4H   ;  /* TIMER 4 CAPTURE REGISTER - HIGH BYTE                    */
-__sfr __at 0xE6 EIE1     ;  /* EXTERNAL INTERRUPT ENABLE 1                             */
-__sfr __at 0xE7 EIE2     ;  /* EXTERNAL INTERRUPT ENABLE 2                             */
-__sfr __at 0xE8 ADC0CN   ;  /* ADC 0 CONTROL                                           */
-__sfr __at 0xE9 PCA0L    ;  /* PCA 0 TIMER - LOW BYTE                                  */
-__sfr __at 0xEA PCA0CPL0 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - LOW BYTE  */
-__sfr __at 0xEB PCA0CPL1 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - LOW BYTE  */
-__sfr __at 0xEC PCA0CPL2 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - LOW BYTE  */
-__sfr __at 0xED PCA0CPL3 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - LOW BYTE  */
-__sfr __at 0xEE PCA0CPL4 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - LOW BYTE  */
-__sfr __at 0xEF RSTSRC   ;  /* RESET SOURCE                                            */
-__sfr __at 0xF0 B        ;  /* B REGISTER                                              */
-__sfr __at 0xF1 SCON1    ;  /* UART1 CONTROL                                           */
-__sfr __at 0xF2 SBUF1    ;  /* UART1 DATA                                              */
-__sfr __at 0xF3 SADDR1   ;  /* UART1 Slave Address                                     */
-__sfr __at 0xF4 TL4      ;  /* TIMER 4 DATA - LOW BYTE                                 */
-__sfr __at 0xF5 TH4      ;  /* TIMER 4 DATA - HIGH BYTE                                */
-__sfr __at 0xF6 EIP1     ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 1                  */
-__sfr __at 0xF7 EIP2     ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 2                  */
-__sfr __at 0xF8 SPI0CN   ;  /* SERIAL PERIPHERAL INTERFACE 0 CONTROL                   */
-__sfr __at 0xF9 PCA0H    ;  /* PCA 0 TIMER - HIGH BYTE                                 */
-__sfr __at 0xFA PCA0CPH0 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - HIGH BYTE */
-__sfr __at 0xFB PCA0CPH1 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - HIGH BYTE */
-__sfr __at 0xFC PCA0CPH2 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - HIGH BYTE */
-__sfr __at 0xFD PCA0CPH3 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - HIGH BYTE */
-__sfr __at 0xFE PCA0CPH4 ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - HIGH BYTE */
-__sfr __at 0xFF WDTCN    ;  /* WATCHDOG TIMER CONTROL                                  */
+__sfr __at (0x80) P0           ;  /* PORT 0                                                  */
+__sfr __at (0x81) SP           ;  /* STACK POINTER                                           */
+__sfr __at (0x82) DPL          ;  /* DATA POINTER - LOW BYTE                                 */
+__sfr __at (0x83) DPH          ;  /* DATA POINTER - HIGH BYTE                                */
+__sfr __at (0x84) P4           ;  /* PORT 4                                                  */
+__sfr __at (0x85) P5           ;  /* PORT 5                                                  */
+__sfr __at (0x86) P6           ;  /* PORT 6                                                  */
+__sfr __at (0x87) PCON         ;  /* POWER CONTROL                                           */
+__sfr __at (0x88) TCON         ;  /* TIMER CONTROL                                           */
+__sfr __at (0x89) TMOD         ;  /* TIMER MODE                                              */
+__sfr __at (0x8A) TL0          ;  /* TIMER 0 - LOW BYTE                                      */
+__sfr __at (0x8B) TL1          ;  /* TIMER 1 - LOW BYTE                                      */
+__sfr __at (0x8C) TH0          ;  /* TIMER 0 - HIGH BYTE                                     */
+__sfr __at (0x8D) TH1          ;  /* TIMER 1 - HIGH BYTE                                     */
+__sfr __at (0x8E) CKCON        ;  /* CLOCK CONTROL                                           */
+__sfr __at (0x8F) PSCTL        ;  /* PROGRAM STORE R/W CONTROL                               */
+__sfr __at (0x90) P1           ;  /* PORT 1                                                  */
+__sfr __at (0x91) TMR3CN       ;  /* TIMER 3 CONTROL                                         */
+__sfr __at (0x92) TMR3RLL      ;  /* TIMER 3 RELOAD REGISTER - LOW BYTE                      */
+__sfr __at (0x93) TMR3RLH      ;  /* TIMER 3 RELOAD REGISTER - HIGH BYTE                     */
+__sfr __at (0x94) TMR3L        ;  /* TIMER 3 - LOW BYTE                                      */
+__sfr __at (0x95) TMR3H        ;  /* TIMER 3 - HIGH BYTE                                     */
+__sfr __at (0x96) P7           ;  /* PORT 7                                                  */
+__sfr __at (0x98) SCON         ;  /* UART0 CONTROL                                           */
+__sfr __at (0x98) SCON0        ;  /* UART0 CONTROL                                           */
+__sfr __at (0x99) SBUF         ;  /* UART0 BUFFER                                            */
+__sfr __at (0x99) SBUF0        ;  /* UART0 BUFFER                                            */
+__sfr __at (0x9A) SPI0CFG      ;  /* SERIAL PERIPHERAL INTERFACE 0 CONFIGURATION             */
+__sfr __at (0x9B) SPI0DAT      ;  /* SERIAL PERIPHERAL INTERFACE 0 DATA                      */
+__sfr __at (0x9C) ADC1         ;  /* ADC 1 DATA                                              */
+__sfr __at (0x9D) SPI0CKR      ;  /* SERIAL PERIPHERAL INTERFACE 0 CLOCK RATE CONTROL        */
+__sfr __at (0x9E) CPT0CN       ;  /* COMPARATOR 0 CONTROL                                    */
+__sfr __at (0x9F) CPT1CN       ;  /* COMPARATOR 1 CONTROL                                    */
+__sfr __at (0xA0) P2           ;  /* PORT 2                                                  */
+__sfr __at (0xA1) EMI0TC       ;  /* External Memory Timing Control                          */
+__sfr __at (0xA3) EMI0CF       ;  /* EMIF CONFIGURATION                                      */
+__sfr __at (0xA4) PRT0CF       ;  /* PORT 0 CONFIGURATION                                    */
+__sfr __at (0xA4) P0MDOUT      ;  /* PORT 0 OUTPUT MODE CONFIGURATION                        */
+__sfr __at (0xA5) PRT1CF       ;  /* PORT 1 CONFIGURATION                                    */
+__sfr __at (0xA5) P1MDOUT      ;  /* PORT 1 OUTPUT MODE CONFIGURATION                        */
+__sfr __at (0xA6) PRT2CF       ;  /* PORT 2 CONFIGURATION                                    */
+__sfr __at (0xA6) P2MDOUT      ;  /* PORT 2 OUTPUT MODE CONFIGURATION                        */
+__sfr __at (0xA7) PRT3CF       ;  /* PORT 3 CONFIGURATION                                    */
+__sfr __at (0xA7) P3MDOUT      ;  /* PORT 3 OUTPUT MODE CONFIGURATION                        */
+__sfr __at (0xA8) IE           ;  /* INTERRUPT ENABLE                                        */
+__sfr __at (0xA9) SADDR0       ;  /* UART0 Slave Address                                     */
+__sfr __at (0xAA) ADC1CN       ;  /* ADC 1 CONTROL                                           */
+__sfr __at (0xAB) ADC1CF       ;  /* ADC 1 CONFIGURATION                                     */
+__sfr __at (0xAC) AMX1SL       ;  /* ADC 1 MUX CHANNEL SELECTION                             */
+__sfr __at (0xAD) P3IF         ;  /* PORT 3 EXTERNAL INTERRUPT FLAGS                         */
+__sfr __at (0xAE) SADEN1       ;  /* UART1 Slave Address Enable                              */
+__sfr __at (0xAF) EMI0CN       ;  /* EXTERNAL MEMORY INTERFACE CONTROL                       */
+__sfr __at (0xAF) _XPAGE       ;  /* XDATA/PDATA PAGE                                        */
+__sfr __at (0xB0) P3           ;  /* PORT 3                                                  */
+__sfr __at (0xB1) OSCXCN       ;  /* EXTERNAL OSCILLATOR CONTROL                             */
+__sfr __at (0xB2) OSCICN       ;  /* INTERNAL OSCILLATOR CONTROL                             */
+__sfr __at (0xB5) P74OUT       ;  /* PORT 4 THROUGH 7 OUTPUT MODE CONFIGURATION              */
+__sfr __at (0xB6) FLSCL        ;  /* FLASH MEMORY TIMING PRESCALER                           */
+__sfr __at (0xB7) FLACL        ;  /* FLASH ACESS LIMIT                                       */
+__sfr __at (0xB8) IP           ;  /* INTERRUPT PRIORITY                                      */
+__sfr __at (0xB9) SADEN0       ;  /* UART0 Slave Address Enable                              */
+__sfr __at (0xBA) AMX0CF       ;  /* ADC 0 MUX CONFIGURATION                                 */
+__sfr __at (0xBB) AMX0SL       ;  /* ADC 0 MUX CHANNEL SELECTION                             */
+__sfr __at (0xBC) ADC0CF       ;  /* ADC 0 CONFIGURATION                                     */
+__sfr __at (0xBD) P1MDIN       ;  /* PORT 1 Input Mode                                       */
+__sfr __at (0xBE) ADC0L        ;  /* ADC 0 DATA - LOW BYTE                                   */
+__sfr __at (0xBF) ADC0H        ;  /* ADC 0 DATA - HIGH BYTE                                  */
+__sfr __at (0xC0) SMB0CN       ;  /* SMBUS 0 CONTROL                                         */
+__sfr __at (0xC1) SMB0STA      ;  /* SMBUS 0 STATUS                                          */
+__sfr __at (0xC2) SMB0DAT      ;  /* SMBUS 0 DATA                                            */
+__sfr __at (0xC3) SMB0ADR      ;  /* SMBUS 0 SLAVE ADDRESS                                   */
+__sfr __at (0xC4) ADC0GTL      ;  /* ADC 0 GREATER-THAN REGISTER - LOW BYTE                  */
+__sfr __at (0xC5) ADC0GTH      ;  /* ADC 0 GREATER-THAN REGISTER - HIGH BYTE                 */
+__sfr __at (0xC6) ADC0LTL      ;  /* ADC 0 LESS-THAN REGISTER - LOW BYTE                     */
+__sfr __at (0xC7) ADC0LTH      ;  /* ADC 0 LESS-THAN REGISTER - HIGH BYTE                    */
+__sfr __at (0xC8) T2CON        ;  /* TIMER 2 CONTROL                                         */
+__sfr __at (0xC9) T4CON        ;  /* TIMER 4 CONTROL                                         */
+__sfr __at (0xCA) RCAP2L       ;  /* TIMER 2 CAPTURE REGISTER - LOW BYTE                     */
+__sfr __at (0xCB) RCAP2H       ;  /* TIMER 2 CAPTURE REGISTER - HIGH BYTE                    */
+__sfr __at (0xCC) TL2          ;  /* TIMER 2 - LOW BYTE                                      */
+__sfr __at (0xCD) TH2          ;  /* TIMER 2 - HIGH BYTE                                     */
+__sfr __at (0xCF) SMB0CR       ;  /* SMBUS 0 CLOCK RATE                                      */
+__sfr __at (0xD0) PSW          ;  /* PROGRAM STATUS WORD                                     */
+__sfr __at (0xD1) REF0CN       ;  /* VOLTAGE REFERENCE 0 CONTROL                             */
+__sfr __at (0xD2) DAC0L        ;  /* DAC 0 REGISTER - LOW BYTE                               */
+__sfr __at (0xD3) DAC0H        ;  /* DAC 0 REGISTER - HIGH BYTE                              */
+__sfr __at (0xD4) DAC0CN       ;  /* DAC 0 CONTROL                                           */
+__sfr __at (0xD5) DAC1L        ;  /* DAC 1 REGISTER - LOW BYTE                               */
+__sfr __at (0xD6) DAC1H        ;  /* DAC 1 REGISTER - HIGH BYTE                              */
+__sfr __at (0xD7) DAC1CN       ;  /* DAC 1 CONTROL                                           */
+__sfr __at (0xD8) PCA0CN       ;  /* PCA 0 COUNTER CONTROL                                   */
+__sfr __at (0xD9) PCA0MD       ;  /* PCA 0 COUNTER MODE                                      */
+__sfr __at (0xDA) PCA0CPM0     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 0                     */
+__sfr __at (0xDB) PCA0CPM1     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 1                     */
+__sfr __at (0xDC) PCA0CPM2     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 2                     */
+__sfr __at (0xDD) PCA0CPM3     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 3                     */
+__sfr __at (0xDE) PCA0CPM4     ;  /* CONTROL REGISTER FOR PCA 0 MODULE 4                     */
+__sfr __at (0xE0) ACC          ;  /* ACCUMULATOR                                             */
+__sfr __at (0xE1) XBR0         ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 0               */
+__sfr __at (0xE2) XBR1         ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 1               */
+__sfr __at (0xE3) XBR2         ;  /* DIGITAL CROSSBAR CONFIGURATION REGISTER 2               */
+__sfr __at (0xE4) RCAP4L       ;  /* TIMER 4 CAPTURE REGISTER - LOW BYTE                     */
+__sfr __at (0xE5) RCAP4H       ;  /* TIMER 4 CAPTURE REGISTER - HIGH BYTE                    */
+__sfr __at (0xE6) EIE1         ;  /* EXTERNAL INTERRUPT ENABLE 1                             */
+__sfr __at (0xE7) EIE2         ;  /* EXTERNAL INTERRUPT ENABLE 2                             */
+__sfr __at (0xE8) ADC0CN       ;  /* ADC 0 CONTROL                                           */
+__sfr __at (0xE9) PCA0L        ;  /* PCA 0 TIMER - LOW BYTE                                  */
+__sfr __at (0xEA) PCA0CPL0     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - LOW BYTE  */
+__sfr __at (0xEB) PCA0CPL1     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - LOW BYTE  */
+__sfr __at (0xEC) PCA0CPL2     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - LOW BYTE  */
+__sfr __at (0xED) PCA0CPL3     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - LOW BYTE  */
+__sfr __at (0xEE) PCA0CPL4     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - LOW BYTE  */
+__sfr __at (0xEF) RSTSRC       ;  /* RESET SOURCE                                            */
+__sfr __at (0xF0) B            ;  /* B REGISTER                                              */
+__sfr __at (0xF1) SCON1        ;  /* UART1 CONTROL                                           */
+__sfr __at (0xF2) SBUF1        ;  /* UART1 DATA                                              */
+__sfr __at (0xF3) SADDR1       ;  /* UART1 Slave Address                                     */
+__sfr __at (0xF4) TL4          ;  /* TIMER 4 DATA - LOW BYTE                                 */
+__sfr __at (0xF5) TH4          ;  /* TIMER 4 DATA - HIGH BYTE                                */
+__sfr __at (0xF6) EIP1         ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 1                  */
+__sfr __at (0xF7) EIP2         ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 2                  */
+__sfr __at (0xF8) SPI0CN       ;  /* SERIAL PERIPHERAL INTERFACE 0 CONTROL                   */
+__sfr __at (0xF9) PCA0H        ;  /* PCA 0 TIMER - HIGH BYTE                                 */
+__sfr __at (0xFA) PCA0CPH0     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - HIGH BYTE */
+__sfr __at (0xFB) PCA0CPH1     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - HIGH BYTE */
+__sfr __at (0xFC) PCA0CPH2     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - HIGH BYTE */
+__sfr __at (0xFD) PCA0CPH3     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - HIGH BYTE */
+__sfr __at (0xFE) PCA0CPH4     ;  /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - HIGH BYTE */
+__sfr __at (0xFF) WDTCN        ;  /* WATCHDOG TIMER CONTROL                                  */
+
+
+/*  WORD/DWORD Registers  */
+
+__sfr16 __at (0x8C8A) TMR0     ;  /* TIMER 0 COUNTER                                         */
+__sfr16 __at (0x8D8B) TMR1     ;  /* TIMER 1 COUNTER                                         */
+__sfr16 __at (0xCDCC) TMR2     ;  /* TIMER 2 COUNTER                                         */
+__sfr16 __at (0xCBCA) RCAP2    ;  /* TIMER 2 CAPTURE REGISTER WORD                           */
+__sfr16 __at (0x9594) TMR3     ;  /* TIMER 3 COUNTER                                         */
+__sfr16 __at (0x9392) TMR3RL   ;  /* TIMER 3 CAPTURE REGISTER WORD                           */
+__sfr16 __at (0xF5F4) TMR4     ;  /* TIMER 4 COUNTER                                         */
+__sfr16 __at (0xE5E4) RCAP4    ;  /* TIMER 4 CAPTURE REGISTER WORD                           */
+__sfr16 __at (0xBFBE) ADC0     ;  /* ADC 0 DATA WORD                                         */
+__sfr16 __at (0xC5C4) ADC0GT   ;  /* ADC 0 GREATER-THAN REGISTER WORD                        */
+__sfr16 __at (0xC7C6) ADC0LT   ;  /* ADC 0 LESS-THAN REGISTER WORD                           */
+__sfr16 __at (0xD3D2) DAC0     ;  /* DAC 0 REGISTER WORD                                     */
+__sfr16 __at (0xD6D5) DAC1     ;  /* DAC 1 REGISTER WORD                                     */
+__sfr16 __at (0xF9E9) PCA0     ;  /* PCA COUNTER                                             */
+__sfr16 __at (0xFAEA) PCA0CP0  ;  /* PCA CAPTURE 0 WORD                                      */
+__sfr16 __at (0xFBEB) PCA0CP1  ;  /* PCA CAPTURE 1 WORD                                      */
+__sfr16 __at (0xFCEC) PCA0CP2  ;  /* PCA CAPTURE 2 WORD                                      */
+__sfr16 __at (0xFDED) PCA0CP3  ;  /* PCA CAPTURE 3 WORD                                      */
+__sfr16 __at (0xFEEE) PCA0CP4  ;  /* PCA CAPTURE 4 WORD                                      */
 
 
 /*  BIT Registers  */
 
 /*  P0  0x80 */
-__sbit __at 0x80 P0_0    ;
-__sbit __at 0x81 P0_1    ;
-__sbit __at 0x82 P0_2    ;
-__sbit __at 0x83 P0_3    ;
-__sbit __at 0x84 P0_4    ;
-__sbit __at 0x85 P0_5    ;
-__sbit __at 0x86 P0_6    ;
-__sbit __at 0x87 P0_7    ;
+__sbit __at (0x80) P0_0        ;
+__sbit __at (0x81) P0_1        ;
+__sbit __at (0x82) P0_2        ;
+__sbit __at (0x83) P0_3        ;
+__sbit __at (0x84) P0_4        ;
+__sbit __at (0x85) P0_5        ;
+__sbit __at (0x86) P0_6        ;
+__sbit __at (0x87) P0_7        ;
 
 /*  TCON  0x88 */
-__sbit __at 0x88 IT0     ;  /* EXT. INTERRUPT 0 TYPE                        */
-__sbit __at 0x89 IE0     ;  /* EXT. INTERRUPT 0 EDGE FLAG                   */
-__sbit __at 0x8A IT1     ;  /* EXT. INTERRUPT 1 TYPE                        */
-__sbit __at 0x8B IE1     ;  /* EXT. INTERRUPT 1 EDGE FLAG                   */
-__sbit __at 0x8C TR0     ;  /* TIMER 0 ON/OFF CONTROL                       */
-__sbit __at 0x8D TF0     ;  /* TIMER 0 OVERFLOW FLAG                        */
-__sbit __at 0x8E TR1     ;  /* TIMER 1 ON/OFF CONTROL                       */
-__sbit __at 0x8F TF1     ;  /* TIMER 1 OVERFLOW FLAG                        */
+__sbit __at (0x88) IT0         ;  /* EXT. INTERRUPT 0 TYPE                                   */
+__sbit __at (0x89) IE0         ;  /* EXT. INTERRUPT 0 EDGE FLAG                              */
+__sbit __at (0x8A) IT1         ;  /* EXT. INTERRUPT 1 TYPE                                   */
+__sbit __at (0x8B) IE1         ;  /* EXT. INTERRUPT 1 EDGE FLAG                              */
+__sbit __at (0x8C) TR0         ;  /* TIMER 0 ON/OFF CONTROL                                  */
+__sbit __at (0x8D) TF0         ;  /* TIMER 0 OVERFLOW FLAG                                   */
+__sbit __at (0x8E) TR1         ;  /* TIMER 1 ON/OFF CONTROL                                  */
+__sbit __at (0x8F) TF1         ;  /* TIMER 1 OVERFLOW FLAG                                   */
 
 /*  P1  0x90 */
-__sbit __at 0x90 P1_0    ;
-__sbit __at 0x91 P1_1    ;
-__sbit __at 0x92 P1_2    ;
-__sbit __at 0x93 P1_3    ;
-__sbit __at 0x94 P1_4    ;
-__sbit __at 0x95 P1_5    ;
-__sbit __at 0x96 P1_6    ;
-__sbit __at 0x97 P1_7    ;
+__sbit __at (0x90) P1_0        ;
+__sbit __at (0x91) P1_1        ;
+__sbit __at (0x92) P1_2        ;
+__sbit __at (0x93) P1_3        ;
+__sbit __at (0x94) P1_4        ;
+__sbit __at (0x95) P1_5        ;
+__sbit __at (0x96) P1_6        ;
+__sbit __at (0x97) P1_7        ;
 
 /*  SCON  0x98 */
-__sbit __at 0x98 RI      ;  /* SCON.0 - RECEIVE INTERRUPT FLAG              */
-__sbit __at 0x98 RI0     ;  /* SCON.0 - RECEIVE INTERRUPT FLAG              */
-__sbit __at 0x99 TI      ;  /* SCON.1 - TRANSMIT INTERRUPT FLAG             */
-__sbit __at 0x99 TI0     ;  /* SCON.1 - TRANSMIT INTERRUPT FLAG             */
-__sbit __at 0x9A RB8     ;  /* SCON.2 - RECEIVE BIT 8                       */
-__sbit __at 0x9A RB80    ;  /* SCON.2 - RECEIVE BIT 8                       */
-__sbit __at 0x9B TB8     ;  /* SCON.3 - TRANSMIT BIT 8                      */
-__sbit __at 0x9B TB80    ;  /* SCON.3 - TRANSMIT BIT 8                      */
-__sbit __at 0x9C REN     ;  /* SCON.4 - RECEIVE ENABLE                      */
-__sbit __at 0x9C REN0    ;  /* SCON.4 - RECEIVE ENABLE                      */
-__sbit __at 0x9D SM2     ;  /* SCON.5 - MULTIPROCESSOR COMMUNICATION ENABLE */
-__sbit __at 0x9D SM20    ;  /* SCON.5 - MULTIPROCESSOR COMMUNICATION ENABLE */
-__sbit __at 0x9D MCE0    ;  /* SCON.5 - MULTIPROCESSOR COMMUNICATION ENABLE */
-__sbit __at 0x9E SM1     ;  /* SCON.6 - SERIAL MODE CONTROL BIT 1           */
-__sbit __at 0x9E SM10    ;  /* SCON.6 - SERIAL MODE CONTROL BIT 1           */
-__sbit __at 0x9F SM0     ;  /* SCON.7 - SERIAL MODE CONTROL BIT 0           */
-__sbit __at 0x9F SM00    ;  /* SCON.7 - SERIAL MODE CONTROL BIT 0           */
-__sbit __at 0x9F S0MODE  ;  /* SCON.7 - SERIAL MODE CONTROL BIT 0           */
+__sbit __at (0x98) RI          ;  /* SCON.0 - RECEIVE INTERRUPT FLAG                         */
+__sbit __at (0x98) RI0         ;  /* SCON.0 - RECEIVE INTERRUPT FLAG                         */
+__sbit __at (0x99) TI          ;  /* SCON.1 - TRANSMIT INTERRUPT FLAG                        */
+__sbit __at (0x99) TI0         ;  /* SCON.1 - TRANSMIT INTERRUPT FLAG                        */
+__sbit __at (0x9A) RB8         ;  /* SCON.2 - RECEIVE BIT 8                                  */
+__sbit __at (0x9A) RB80        ;  /* SCON.2 - RECEIVE BIT 8                                  */
+__sbit __at (0x9B) TB8         ;  /* SCON.3 - TRANSMIT BIT 8                                 */
+__sbit __at (0x9B) TB80        ;  /* SCON.3 - TRANSMIT BIT 8                                 */
+__sbit __at (0x9C) REN         ;  /* SCON.4 - RECEIVE ENABLE                                 */
+__sbit __at (0x9C) REN0        ;  /* SCON.4 - RECEIVE ENABLE                                 */
+__sbit __at (0x9D) SM2         ;  /* SCON.5 - MULTIPROCESSOR COMMUNICATION ENABLE            */
+__sbit __at (0x9D) SM20        ;  /* SCON.5 - MULTIPROCESSOR COMMUNICATION ENABLE            */
+__sbit __at (0x9D) MCE0        ;  /* SCON.5 - MULTIPROCESSOR COMMUNICATION ENABLE            */
+__sbit __at (0x9E) SM1         ;  /* SCON.6 - SERIAL MODE CONTROL BIT 1                      */
+__sbit __at (0x9E) SM10        ;  /* SCON.6 - SERIAL MODE CONTROL BIT 1                      */
+__sbit __at (0x9F) SM0         ;  /* SCON.7 - SERIAL MODE CONTROL BIT 0                      */
+__sbit __at (0x9F) SM00        ;  /* SCON.7 - SERIAL MODE CONTROL BIT 0                      */
+__sbit __at (0x9F) S0MODE      ;  /* SCON.7 - SERIAL MODE CONTROL BIT 0                      */
 
 /*  P2  0xA0 */
-__sbit __at 0xA0 P2_0    ;
-__sbit __at 0xA1 P2_1    ;
-__sbit __at 0xA2 P2_2    ;
-__sbit __at 0xA3 P2_3    ;
-__sbit __at 0xA4 P2_4    ;
-__sbit __at 0xA5 P2_5    ;
-__sbit __at 0xA6 P2_6    ;
-__sbit __at 0xA7 P2_7    ;
+__sbit __at (0xA0) P2_0        ;
+__sbit __at (0xA1) P2_1        ;
+__sbit __at (0xA2) P2_2        ;
+__sbit __at (0xA3) P2_3        ;
+__sbit __at (0xA4) P2_4        ;
+__sbit __at (0xA5) P2_5        ;
+__sbit __at (0xA6) P2_6        ;
+__sbit __at (0xA7) P2_7        ;
 
 /*  IE  0xA8 */
-__sbit __at 0xA8 EX0     ;  /* EXTERNAL INTERRUPT 0 ENABLE               */
-__sbit __at 0xA9 ET0     ;  /* TIMER 0 INTERRUPT ENABLE                  */
-__sbit __at 0xAA EX1     ;  /* EXTERNAL INTERRUPT 1 ENABLE               */
-__sbit __at 0xAB ET1     ;  /* TIMER 1 INTERRUPT ENABLE                  */
-__sbit __at 0xAC ES      ;  /* SERIAL PORT 0 INTERRUPT ENABLE            */
-__sbit __at 0xAC ES0     ;  /* SERIAL PORT 0 INTERRUPT ENABLE            */
-__sbit __at 0xAD ET2     ;  /* TIMER 2 INTERRUPT ENABLE                  */
-__sbit __at 0xAF EA      ;  /* GLOBAL INTERRUPT ENABLE                   */
+__sbit __at (0xA8) EX0         ;  /* EXTERNAL INTERRUPT 0 ENABLE                             */
+__sbit __at (0xA9) ET0         ;  /* TIMER 0 INTERRUPT ENABLE                                */
+__sbit __at (0xAA) EX1         ;  /* EXTERNAL INTERRUPT 1 ENABLE                             */
+__sbit __at (0xAB) ET1         ;  /* TIMER 1 INTERRUPT ENABLE                                */
+__sbit __at (0xAC) ES          ;  /* SERIAL PORT 0 INTERRUPT ENABLE                          */
+__sbit __at (0xAC) ES0         ;  /* SERIAL PORT 0 INTERRUPT ENABLE                          */
+__sbit __at (0xAD) ET2         ;  /* TIMER 2 INTERRUPT ENABLE                                */
+__sbit __at (0xAF) EA          ;  /* GLOBAL INTERRUPT ENABLE                                 */
 
 /*  P3  0xB0 */
-__sbit __at 0xB0 P3_0    ;
-__sbit __at 0xB1 P3_1    ;
-__sbit __at 0xB2 P3_2    ;
-__sbit __at 0xB3 P3_3    ;
-__sbit __at 0xB4 P3_4    ;
-__sbit __at 0xB5 P3_5    ;
-__sbit __at 0xB6 P3_6    ;
-__sbit __at 0xB7 P3_7    ;
+__sbit __at (0xB0) P3_0        ;
+__sbit __at (0xB1) P3_1        ;
+__sbit __at (0xB2) P3_2        ;
+__sbit __at (0xB3) P3_3        ;
+__sbit __at (0xB4) P3_4        ;
+__sbit __at (0xB5) P3_5        ;
+__sbit __at (0xB6) P3_6        ;
+__sbit __at (0xB7) P3_7        ;
 
 /*  IP  0xB8 */
-__sbit __at 0xB8 PX0     ;  /* EXTERNAL INTERRUPT 0 PRIORITY             */
-__sbit __at 0xB9 PT0     ;  /* TIMER 0 PRIORITY                          */
-__sbit __at 0xBA PX1     ;  /* EXTERNAL INTERRUPT 1 PRIORITY             */
-__sbit __at 0xBB PT1     ;  /* TIMER 1 PRIORITY                          */
-__sbit __at 0xBC PS      ;  /* SERIAL PORT PRIORITY                      */
-__sbit __at 0xBD PT2     ;  /* TIMER 2 PRIORITY                          */
+__sbit __at (0xB8) PX0         ;  /* EXTERNAL INTERRUPT 0 PRIORITY                           */
+__sbit __at (0xB9) PT0         ;  /* TIMER 0 PRIORITY                                        */
+__sbit __at (0xBA) PX1         ;  /* EXTERNAL INTERRUPT 1 PRIORITY                           */
+__sbit __at (0xBB) PT1         ;  /* TIMER 1 PRIORITY                                        */
+__sbit __at (0xBC) PS          ;  /* SERIAL PORT PRIORITY                                    */
+__sbit __at (0xBD) PT2         ;  /* TIMER 2 PRIORITY                                        */
 
 /*  SMB0CN  0xC0 */
-__sbit __at 0xC0 SMBTOE  ;  /* SMBUS 0 TIMEOUT ENABLE                    */
-__sbit __at 0xC1 SMBFTE  ;  /* SMBUS 0 FREE TIMER ENABLE                 */
-__sbit __at 0xC2 AA      ;  /* SMBUS 0 ASSERT/ACKNOWLEDGE FLAG           */
-__sbit __at 0xC3 SI      ;  /* SMBUS 0 INTERRUPT PENDING FLAG            */
-__sbit __at 0xC4 STO     ;  /* SMBUS 0 STOP FLAG                         */
-__sbit __at 0xC5 STA     ;  /* SMBUS 0 START FLAG                        */
-__sbit __at 0xC6 ENSMB   ;  /* SMBUS 0 ENABLE                            */
-__sbit __at 0xC7 BUSY    ;  /* SMBUS 0 BUSY                              */
+__sbit __at (0xC0) SMBTOE      ;  /* SMBUS 0 TIMEOUT ENABLE                                  */
+__sbit __at (0xC1) SMBFTE      ;  /* SMBUS 0 FREE TIMER ENABLE                               */
+__sbit __at (0xC2) AA          ;  /* SMBUS 0 ASSERT/ACKNOWLEDGE FLAG                         */
+__sbit __at (0xC3) SI          ;  /* SMBUS 0 INTERRUPT PENDING FLAG                          */
+__sbit __at (0xC4) STO         ;  /* SMBUS 0 STOP FLAG                                       */
+__sbit __at (0xC5) STA         ;  /* SMBUS 0 START FLAG                                      */
+__sbit __at (0xC6) ENSMB       ;  /* SMBUS 0 ENABLE                                          */
+__sbit __at (0xC7) BUSY        ;  /* SMBUS 0 BUSY                                            */
 
 /*  T2CON  0xC8 */
-__sbit __at 0xC8 CPRL2   ;  /* CAPTURE OR RELOAD SELECT                  */
-__sbit __at 0xC9 CT2     ;  /* TIMER OR COUNTER SELECT                   */
-__sbit __at 0xCA TR2     ;  /* TIMER 2 ON/OFF CONTROL                    */
-__sbit __at 0xCB EXEN2   ;  /* TIMER 2 EXTERNAL ENABLE FLAG              */
-__sbit __at 0xCC TCLK    ;  /* TRANSMIT CLOCK FLAG                       */
-__sbit __at 0xCD RCLK    ;  /* RECEIVE CLOCK FLAG                        */
-__sbit __at 0xCE EXF2    ;  /* EXTERNAL FLAG                             */
-__sbit __at 0xCF TF2     ;  /* TIMER 2 OVERFLOW FLAG                     */
+__sbit __at (0xC8) CPRL2       ;  /* CAPTURE OR RELOAD SELECT                                */
+__sbit __at (0xC9) CT2         ;  /* TIMER OR COUNTER SELECT                                 */
+__sbit __at (0xCA) TR2         ;  /* TIMER 2 ON/OFF CONTROL                                  */
+__sbit __at (0xCB) EXEN2       ;  /* TIMER 2 EXTERNAL ENABLE FLAG                            */
+__sbit __at (0xCC) TCLK        ;  /* TRANSMIT CLOCK FLAG                                     */
+__sbit __at (0xCD) RCLK        ;  /* RECEIVE CLOCK FLAG                                      */
+__sbit __at (0xCE) EXF2        ;  /* EXTERNAL FLAG                                           */
+__sbit __at (0xCF) TF2         ;  /* TIMER 2 OVERFLOW FLAG                                   */
 
 /*  PSW  0xD0 */
-__sbit __at 0xD0 P       ;  /* ACCUMULATOR PARITY FLAG                   */
-__sbit __at 0xD1 F1      ;  /* USER FLAG 1                               */
-__sbit __at 0xD2 OV      ;  /* OVERFLOW FLAG                             */
-__sbit __at 0xD3 RS0     ;  /* REGISTER BANK SELECT 0                    */
-__sbit __at 0xD4 RS1     ;  /* REGISTER BANK SELECT 1                    */
-__sbit __at 0xD5 F0      ;  /* USER FLAG 0                               */
-__sbit __at 0xD6 AC      ;  /* AUXILIARY CARRY FLAG                      */
-__sbit __at 0xD7 CY      ;  /* CARRY FLAG                                */
+__sbit __at (0xD0) P           ;  /* ACCUMULATOR PARITY FLAG                                 */
+__sbit __at (0xD1) F1          ;  /* USER FLAG 1                                             */
+__sbit __at (0xD2) OV          ;  /* OVERFLOW FLAG                                           */
+__sbit __at (0xD3) RS0         ;  /* REGISTER BANK SELECT 0                                  */
+__sbit __at (0xD4) RS1         ;  /* REGISTER BANK SELECT 1                                  */
+__sbit __at (0xD5) F0          ;  /* USER FLAG 0                                             */
+__sbit __at (0xD6) AC          ;  /* AUXILIARY CARRY FLAG                                    */
+__sbit __at (0xD7) CY          ;  /* CARRY FLAG                                              */
 
 /*  PCA0CN  0xD8H */
-__sbit __at 0xD8 CCF0    ;  /* PCA 0 MODULE 0 INTERRUPT FLAG             */
-__sbit __at 0xD9 CCF1    ;  /* PCA 0 MODULE 1 INTERRUPT FLAG             */
-__sbit __at 0xDA CCF2    ;  /* PCA 0 MODULE 2 INTERRUPT FLAG             */
-__sbit __at 0xDB CCF3    ;  /* PCA 0 MODULE 3 INTERRUPT FLAG             */
-__sbit __at 0xDC CCF4    ;  /* PCA 0 MODULE 4 INTERRUPT FLAG             */
-__sbit __at 0xDE CR      ;  /* PCA 0 COUNTER RUN CONTROL BIT             */
-__sbit __at 0xDF CF      ;  /* PCA 0 COUNTER OVERFLOW FLAG               */
+__sbit __at (0xD8) CCF0        ;  /* PCA 0 MODULE 0 INTERRUPT FLAG                           */
+__sbit __at (0xD9) CCF1        ;  /* PCA 0 MODULE 1 INTERRUPT FLAG                           */
+__sbit __at (0xDA) CCF2        ;  /* PCA 0 MODULE 2 INTERRUPT FLAG                           */
+__sbit __at (0xDB) CCF3        ;  /* PCA 0 MODULE 3 INTERRUPT FLAG                           */
+__sbit __at (0xDC) CCF4        ;  /* PCA 0 MODULE 4 INTERRUPT FLAG                           */
+__sbit __at (0xDE) CR          ;  /* PCA 0 COUNTER RUN CONTROL BIT                           */
+__sbit __at (0xDF) CF          ;  /* PCA 0 COUNTER OVERFLOW FLAG                             */
 
 /*  ADC0CN  0xE8H */
-__sbit __at 0xE8 ADLJST  ;  /* ADC 0 RIGHT JUSTIFY DATA BIT              */
-__sbit __at 0xE8 AD0LJST ;  /* ADC 0 RIGHT JUSTIFY DATA BIT              */
-__sbit __at 0xE9 ADWINT  ;  /* ADC 0 WINDOW COMPARE INTERRUPT FLAG       */
-__sbit __at 0xE9 AD0WINT ;  /* ADC 0 WINDOW COMPARE INTERRUPT FLAG       */
-__sbit __at 0xEA ADSTM0  ;  /* ADC 0 START OF CONVERSION MODE BIT 0      */
-__sbit __at 0xEA AD0CM0  ;  /* ADC 0 START OF CONVERSION MODE BIT 0      */
-__sbit __at 0xEB ADSTM1  ;  /* ADC 0 START OF CONVERSION MODE BIT 1      */
-__sbit __at 0xEB AD0CM1  ;  /* ADC 0 START OF CONVERSION MODE BIT 1      */
-__sbit __at 0xEC ADBUSY  ;  /* ADC 0 BUSY FLAG                           */
-__sbit __at 0xEC AD0BUSY ;  /* ADC 0 BUSY FLAG                           */
-__sbit __at 0xED ADCINT  ;  /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG */
-__sbit __at 0xED AD0INT  ;  /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG */
-__sbit __at 0xEE ADCTM   ;  /* ADC 0 TRACK MODE                          */
-__sbit __at 0xEE AD0TM   ;  /* ADC 0 TRACK MODE                          */
-__sbit __at 0xEF ADCEN   ;  /* ADC 0 ENABLE                              */
-__sbit __at 0xEF AD0EN   ;  /* ADC 0 ENABLE                              */
+__sbit __at (0xE8) ADLJST      ;  /* ADC 0 RIGHT JUSTIFY DATA BIT                            */
+__sbit __at (0xE8) AD0LJST     ;  /* ADC 0 RIGHT JUSTIFY DATA BIT                            */
+__sbit __at (0xE9) ADWINT      ;  /* ADC 0 WINDOW COMPARE INTERRUPT FLAG                     */
+__sbit __at (0xE9) AD0WINT     ;  /* ADC 0 WINDOW COMPARE INTERRUPT FLAG                     */
+__sbit __at (0xEA) ADSTM0      ;  /* ADC 0 START OF CONVERSION MODE BIT 0                    */
+__sbit __at (0xEA) AD0CM0      ;  /* ADC 0 START OF CONVERSION MODE BIT 0                    */
+__sbit __at (0xEB) ADSTM1      ;  /* ADC 0 START OF CONVERSION MODE BIT 1                    */
+__sbit __at (0xEB) AD0CM1      ;  /* ADC 0 START OF CONVERSION MODE BIT 1                    */
+__sbit __at (0xEC) ADBUSY      ;  /* ADC 0 BUSY FLAG                                         */
+__sbit __at (0xEC) AD0BUSY     ;  /* ADC 0 BUSY FLAG                                         */
+__sbit __at (0xED) ADCINT      ;  /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG               */
+__sbit __at (0xED) AD0INT      ;  /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG               */
+__sbit __at (0xEE) ADCTM       ;  /* ADC 0 TRACK MODE                                        */
+__sbit __at (0xEE) AD0TM       ;  /* ADC 0 TRACK MODE                                        */
+__sbit __at (0xEF) ADCEN       ;  /* ADC 0 ENABLE                                            */
+__sbit __at (0xEF) AD0EN       ;  /* ADC 0 ENABLE                                            */
 
 /*  SPI0CN  0xF8H */
-__sbit __at 0xF8 SPIEN   ;  /* SPI 0 SPI ENABLE                          */
-__sbit __at 0xF9 MSTEN   ;  /* SPI 0 MASTER ENABLE                       */
-__sbit __at 0xFA SLVSEL  ;  /* SPI 0 SLAVE SELECT                        */
-__sbit __at 0xFB TXBSY   ;  /* SPI 0 TX BUSY FLAG                        */
-__sbit __at 0xFC RXOVRN  ;  /* SPI 0 RX OVERRUN FLAG                     */
-__sbit __at 0xFD MODF    ;  /* SPI 0 MODE FAULT FLAG                     */
-__sbit __at 0xFE WCOL    ;  /* SPI 0 WRITE COLLISION FLAG                */
-__sbit __at 0xFF SPIF    ;  /* SPI 0 INTERRUPT FLAG                      */
+__sbit __at (0xF8) SPIEN       ;  /* SPI 0 SPI ENABLE                                        */
+__sbit __at (0xF9) MSTEN       ;  /* SPI 0 MASTER ENABLE                                     */
+__sbit __at (0xFA) SLVSEL      ;  /* SPI 0 SLAVE SELECT                                      */
+__sbit __at (0xFB) TXBSY       ;  /* SPI 0 TX BUSY FLAG                                      */
+__sbit __at (0xFC) RXOVRN      ;  /* SPI 0 RX OVERRUN FLAG                                   */
+__sbit __at (0xFD) MODF        ;  /* SPI 0 MODE FAULT FLAG                                   */
+__sbit __at (0xFE) WCOL        ;  /* SPI 0 WRITE COLLISION FLAG                              */
+__sbit __at (0xFF) SPIF        ;  /* SPI 0 INTERRUPT FLAG                                    */
 
 
 /* Predefined SFR Bit Masks */
 
-#define IDLE    0x01    /* PCON */
-#define STOP    0x02    /* PCON */
-#define SMOD0   0x80    /* PCON */
-#define TF3     0x80    /* TMR3CN */
-#define CPFIF   0x10    /* CPTnCN */
-#define CPRIF   0x20    /* CPTnCN */
-#define CPOUT   0x40    /* CPTnCN */
-#define TR4     0x04    /* T4CON */
-#define TF4     0x80    /* T4CON */
-#define ECCF    0x01    /* PCA0CPMn */
-#define PWM     0x02    /* PCA0CPMn */
-#define TOG     0x04    /* PCA0CPMn */
-#define MAT     0x08    /* PCA0CPMn */
-#define CAPN    0x10    /* PCA0CPMn */
-#define CAPP    0x20    /* PCA0CPMn */
-#define ECOM    0x40    /* PCA0CPMn */
-#define PWM16   0x80    /* PCA0CPMn */
-#define PORSF   0x02    /* RSTSRC */
-#define SWRSF   0x10    /* RSTSRC */
-#define RI1     0x01    /* SCON1 */
-#define TI1     0x02    /* SCON1 */
-#define RB81    0x04    /* SCON1 */
-#define TB81    0x08    /* SCON1 */
-#define REN1    0x10    /* SCON1 */
-#define SM21    0x20    /* SCON1 */
-#define SM11    0x40    /* SCON1 */
-#define SM01    0x80    /* SCON1 */
+#define PCON_IDLE         0x01    /* PCON                                */
+#define PCON_STOP         0x02    /* PCON                                */
+#define PCON_SMOD0        0x80    /* PCON                                */
+#define TF3               0x80    /* TMR3CN                              */
+#define CPFIF             0x10    /* CPTnCN                              */
+#define CPRIF             0x20    /* CPTnCN                              */
+#define CPOUT             0x40    /* CPTnCN                              */
+#define TR4               0x04    /* T4CON                               */
+#define TF4               0x80    /* T4CON                               */
+#define ECCF              0x01    /* PCA0CPMn                            */
+#define PWM               0x02    /* PCA0CPMn                            */
+#define TOG               0x04    /* PCA0CPMn                            */
+#define MAT               0x08    /* PCA0CPMn                            */
+#define CAPN              0x10    /* PCA0CPMn                            */
+#define CAPP              0x20    /* PCA0CPMn                            */
+#define ECOM              0x40    /* PCA0CPMn                            */
+#define PWM16             0x80    /* PCA0CPMn                            */
+#define PORSF             0x02    /* RSTSRC                              */
+#define SWRSF             0x10    /* RSTSRC                              */
+#define RI1               0x01    /* SCON1                               */
+#define TI1               0x02    /* SCON1                               */
+#define RB81              0x04    /* SCON1                               */
+#define TB81              0x08    /* SCON1                               */
+#define REN1              0x10    /* SCON1                               */
+#define SM21              0x20    /* SCON1                               */
+#define SM11              0x40    /* SCON1                               */
+#define SM01              0x80    /* SCON1                               */
 
 #endif
diff --git a/device/include/mcs51/c8051f326.h b/device/include/mcs51/c8051f326.h
new file mode 100644 (file)
index 0000000..fd475e5
--- /dev/null
@@ -0,0 +1,174 @@
+/*-------------------------------------------------------------------------
+   Register Declarations for the Cygnal/SiLabs C8051F326/7 Processor Range
+
+   Copyright (C) 2006 - Maarten Brock, sourceforge.brock@dse.nl
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+-------------------------------------------------------------------------*/
+
+#ifndef C8051F326_H
+#define C8051F326_H
+
+
+/*  BYTE Registers  */
+__sfr __at (0x80) P0           ;  /* PORT 0                                        */
+__sfr __at (0x81) SP           ;  /* STACK POINTER                                 */
+__sfr __at (0x82) DPL          ;  /* DATA POINTER - LOW BYTE                       */
+__sfr __at (0x83) DPH          ;  /* DATA POINTER - HIGH BYTE                      */
+__sfr __at (0x87) PCON         ;  /* POWER CONTROL                                 */
+__sfr __at (0x88) TCON         ;  /* TIMER CONTROL                                 */
+__sfr __at (0x89) TMOD         ;  /* TIMER MODE                                    */
+__sfr __at (0x8A) TL0          ;  /* TIMER 0 - LOW BYTE                            */
+__sfr __at (0x8B) TL1          ;  /* TIMER 1 - LOW BYTE                            */
+__sfr __at (0x8C) TH0          ;  /* TIMER 0 - HIGH BYTE                           */
+__sfr __at (0x8D) TH1          ;  /* TIMER 1 - HIGH BYTE                           */
+__sfr __at (0x8E) CKCON        ;  /* CLOCK CONTROL                                 */
+__sfr __at (0x8F) PSCTL        ;  /* PROGRAM STORE R/W CONTROL                     */
+__sfr __at (0x91) SBCON0       ;  /* BAUDRATE GENERATOR 0 CONTROL                  */
+__sfr __at (0x93) SBRLL0       ;  /* BAUDRATE GENERATOR 0 RELOAD VALUE - LOW BYTE  */
+__sfr __at (0x94) SBRLH0       ;  /* BAUDRATE GENERATOR 0 RELOAD VALUE - HIGH BYTE */
+__sfr __at (0x96) USB0ADR      ;  /* USB0 INDIRECT ADDRESS REGISTER                */
+__sfr __at (0x97) USB0DAT      ;  /* USB0 DATA REGISTER                            */
+__sfr __at (0x98) SCON         ;  /* UART0 CONTROL                                 */
+__sfr __at (0x98) SCON0        ;  /* UART0 CONTROL                                 */
+__sfr __at (0x99) SBUF         ;  /* UART0 BUFFER                                  */
+__sfr __at (0x99) SBUF0        ;  /* UART0 BUFFER                                  */
+__sfr __at (0x9A) SMOD0        ;  /* UART0 MODE                                    */
+__sfr __at (0xA0) P2           ;  /* PORT 2                                        */
+__sfr __at (0xA4) P0MDOUT      ;  /* PORT 0 OUTPUT MODE CONFIGURATION              */
+__sfr __at (0xA6) P2MDOUT      ;  /* PORT 2 OUTPUT MODE CONFIGURATION              */
+__sfr __at (0xA7) P3MDOUT      ;  /* PORT 3 OUTPUT MODE CONFIGURATION              */
+__sfr __at (0xA8) IE           ;  /* INTERRUPT ENABLE                              */
+__sfr __at (0xA9) CLKSEL       ;  /* SYSTEM CLOCK SELECT                           */
+__sfr __at (0xAA) EMI0CN       ;  /* EXTERNAL MEMORY INTERFACE CONTROL             */
+__sfr __at (0xAA) _XPAGE       ;  /* XDATA/PDATA PAGE                              */
+__sfr __at (0xB0) P3           ;  /* PORT 3                                        */
+__sfr __at (0xB2) OSCICN       ;  /* INTERNAL OSCILLATOR CONTROL                   */
+__sfr __at (0xB3) OSCICL       ;  /* INTERNAL OSCILLATOR CALIBRATION               */
+__sfr __at (0xB6) FLSCL        ;  /* FLASH MEMORY TIMING PRESCALER                 */
+__sfr __at (0xB7) FLKEY        ;  /* FLASH ACESS LIMIT                             */
+__sfr __at (0xB8) IP           ;  /* INTERRUPT PRIORITY                            */
+__sfr __at (0xB9) CLKMUL       ;  /* CLOCK MULTIPLIER CONTROL REGISTER             */
+__sfr __at (0xC9) REG0CN       ;  /* VOLTAGE REGULATOR CONTROL                     */
+__sfr __at (0xD0) PSW          ;  /* PROGRAM STATUS WORD                           */
+__sfr __at (0xD7) USB0XCN      ;  /* USB0 TRANSCEIVER CONTROL                      */
+__sfr __at (0xE0) ACC          ;  /* ACCUMULATOR                                   */
+__sfr __at (0xE2) GPIOCN       ;  /* GLOBAL PORT I/O CONTROL                       */
+__sfr __at (0xE3) OSCLCN       ;  /* LOW-FREQUENCY OSCILLATOR CONTROL              */
+__sfr __at (0xE6) EIE1         ;  /* EXTERNAL INTERRUPT ENABLE 1                   */
+__sfr __at (0xE7) EIE2         ;  /* EXTERNAL INTERRUPT ENABLE 2                   */
+__sfr __at (0xEF) RSTSRC       ;  /* RESET SOURCE                                  */
+__sfr __at (0xF0) B            ;  /* B REGISTER                                    */
+__sfr __at (0xF6) EIP1         ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 1        */
+__sfr __at (0xF7) EIP2         ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 2        */
+__sfr __at (0xFF) VDM0CN       ;  /* VDD MONITOR CONTROL                           */
+
+
+/*  WORD/DWORD Registers  */
+
+__sfr16 __at (0x8C8A) TMR0     ;  /* TIMER 0 COUNTER                               */
+__sfr16 __at (0x8D8B) TMR1     ;  /* TIMER 1 COUNTER                               */
+__sfr16 __at (0x9493) SBRL0    ;  /* BAUDRATE GENERATOR 0 RELOAD VALUE WORD        */
+
+
+/*  BIT Registers  */
+
+/*  P0  0x80 */
+__sbit __at (0x80) P0_0        ;
+__sbit __at (0x81) P0_1        ;
+__sbit __at (0x82) P0_2        ;
+__sbit __at (0x83) P0_3        ;
+__sbit __at (0x84) P0_4        ;
+__sbit __at (0x85) P0_5        ;
+__sbit __at (0x86) P0_6        ;
+__sbit __at (0x87) P0_7        ;
+
+/*  TCON  0x88 */
+__sbit __at (0x88) IT0         ;  /* TCON.0 - EXT. INTERRUPT 0 TYPE                */
+__sbit __at (0x89) IE0         ;  /* TCON.1 - EXT. INTERRUPT 0 EDGE FLAG           */
+__sbit __at (0x8A) IT1         ;  /* TCON.2 - EXT. INTERRUPT 1 TYPE                */
+__sbit __at (0x8B) IE1         ;  /* TCON.3 - EXT. INTERRUPT 1 EDGE FLAG           */
+__sbit __at (0x8C) TR0         ;  /* TCON.4 - TIMER 0 ON/OFF CONTROL               */
+__sbit __at (0x8D) TF0         ;  /* TCON.5 - TIMER 0 OVERFLOW FLAG                */
+__sbit __at (0x8E) TR1         ;  /* TCON.6 - TIMER 1 ON/OFF CONTROL               */
+__sbit __at (0x8F) TF1         ;  /* TCON.7 - TIMER 1 OVERFLOW FLAG                */
+
+/*  SCON  0x98 */
+__sbit __at (0x98) RI          ;  /* SCON.0 - RECEIVE INTERRUPT FLAG               */
+__sbit __at (0x98) RI0         ;  /* SCON.0 - RECEIVE INTERRUPT FLAG               */
+__sbit __at (0x99) TI          ;  /* SCON.1 - TRANSMIT INTERRUPT FLAG              */
+__sbit __at (0x99) TI0         ;  /* SCON.1 - TRANSMIT INTERRUPT FLAG              */
+__sbit __at (0x9A) RB8         ;  /* SCON.2 - RECEIVE BIT 8                        */
+__sbit __at (0x9A) RBX0        ;  /* SCON.2 - EXTRA RECEIVE BIT                    */
+__sbit __at (0x9B) TB8         ;  /* SCON.3 - TRANSMIT BIT 8                       */
+__sbit __at (0x9B) TBX0        ;  /* SCON.3 - EXTRA TRANSMIT BIT                   */
+__sbit __at (0x9C) REN         ;  /* SCON.4 - RECEIVE ENABLE                       */
+__sbit __at (0x9C) REN0        ;  /* SCON.4 - RECEIVE ENABLE                       */
+__sbit __at (0x9E) PERR0       ;  /* SCON.6 - PARITY ERROR FLAG                    */
+__sbit __at (0x9F) OVR0        ;  /* SCON.7 - RECEIVE FIFO OVERRUN FLAG            */
+
+/*  P2  0xA0 */
+__sbit __at (0xA0) P2_0        ;
+__sbit __at (0xA1) P2_1        ;
+__sbit __at (0xA2) P2_2        ;
+__sbit __at (0xA3) P2_3        ;
+__sbit __at (0xA4) P2_4        ;
+__sbit __at (0xA5) P2_5        ;
+
+/*  IE  0xA8 */
+__sbit __at (0xA8) EX0         ;  /* IE.0 - EXTERNAL INTERRUPT 0 ENABLE            */
+__sbit __at (0xA9) ET0         ;  /* IE.1 - TIMER 0 INTERRUPT ENABLE               */
+__sbit __at (0xAA) EX1         ;  /* IE.2 - EXTERNAL INTERRUPT 1 ENABLE            */
+__sbit __at (0xAB) ET1         ;  /* IE.3 - TIMER 1 INTERRUPT ENABLE               */
+__sbit __at (0xAC) ES          ;  /* IE.4 - SERIAL PORT INTERRUPT ENABLE           */
+__sbit __at (0xAC) ES0         ;  /* IE.4 - SERIAL PORT INTERRUPT ENABLE           */
+__sbit __at (0xAF) EA          ;  /* IE.7 - GLOBAL INTERRUPT ENABLE                */
+
+/*  P3  0xB0 */
+__sbit __at (0xB0) P3_0        ;
+
+/*  IP  0xB8 */
+__sbit __at (0xB8) PX0         ;  /* IP.0 - EXTERNAL INTERRUPT 0 PRIORITY          */
+__sbit __at (0xB9) PT0         ;  /* IP.1 - TIMER 0 PRIORITY                       */
+__sbit __at (0xBA) PX1         ;  /* IP.2 - EXTERNAL INTERRUPT 1 PRIORITY          */
+__sbit __at (0xBB) PT1         ;  /* IP.3 - TIMER 1 PRIORITY                       */
+__sbit __at (0xBC) PS          ;  /* IP.4 - SERIAL PORT PRIORITY                   */
+__sbit __at (0xBC) PS0         ;  /* IP.4 - SERIAL PORT PRIORITY                   */
+
+/*  PSW  0xD0 */
+__sbit __at (0xD0) PARITY      ;  /* PSW.0 - ACCUMULATOR PARITY FLAG               */
+__sbit __at (0xD1) F1          ;  /* PSW.1 - FLAG 1                                */
+__sbit __at (0xD2) OV          ;  /* PSW.2 - OVERFLOW FLAG                         */
+__sbit __at (0xD3) RS0         ;  /* PSW.3 - REGISTER BANK SELECT 0                */
+__sbit __at (0xD4) RS1         ;  /* PSW.4 - REGISTER BANK SELECT 1                */
+__sbit __at (0xD5) F0          ;  /* PSW.5 - FLAG 0                                */
+__sbit __at (0xD6) AC          ;  /* PSW.6 - AUXILIARY CARRY FLAG                  */
+__sbit __at (0xD7) CY          ;  /* PSW.7 - CARRY FLAG                            */
+
+
+/* Predefined SFR Bit Masks */
+
+#define PCON_IDLE         0x01    /* PCON                                */
+#define PCON_STOP         0x02    /* PCON                                */
+#define T0M               0x04    /* CKCON                               */
+#define T1M               0x08    /* CKCON                               */
+#define PSWE              0x01    /* PSCTL                               */
+#define PSEE              0x02    /* PSCTL                               */
+#define EUSB0             0x02    /* EIE1                                */
+#define EVBUS             0x01    /* EIE2                                */
+#define PORSF             0x02    /* RSTSRC                              */
+#define SWRSF             0x10    /* RSTSRC                              */
+
+#endif
diff --git a/device/include/mcs51/c8051f340.h b/device/include/mcs51/c8051f340.h
new file mode 100644 (file)
index 0000000..aa9496f
--- /dev/null
@@ -0,0 +1,359 @@
+/*-------------------------------------------------------------------------
+   Register Declarations for the Cygnal/SiLabs C8051F34x Processor Range
+
+   Copyright (C) 2006 - Maarten Brock, sourceforge.brock@dse.nl
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+-------------------------------------------------------------------------*/
+
+#ifndef C8051F340_H
+#define C8051F340_H
+
+
+/*  BYTE Registers  */
+__sfr __at (0x80) P0           ;  /* PORT 0                                        */
+__sfr __at (0x81) SP           ;  /* STACK POINTER                                 */
+__sfr __at (0x82) DPL          ;  /* DATA POINTER - LOW BYTE                       */
+__sfr __at (0x83) DPH          ;  /* DATA POINTER - HIGH BYTE                      */
+__sfr __at (0x84) EMI0TC       ;  /* EXTERNAL MEMORY INTERFACE TIMING              */
+__sfr __at (0x85) EMI0CF       ;  /* EXTERNAL MEMORY INTERFACE CONFIGURATION       */
+__sfr __at (0x86) OSCLCN       ;  /* LOW-FREQUENCY OSCILLATOR CONTROL              */
+__sfr __at (0x87) PCON         ;  /* POWER CONTROL                                 */
+__sfr __at (0x88) TCON         ;  /* TIMER CONTROL                                 */
+__sfr __at (0x89) TMOD         ;  /* TIMER MODE                                    */
+__sfr __at (0x8A) TL0          ;  /* TIMER 0 - LOW BYTE                            */
+__sfr __at (0x8B) TL1          ;  /* TIMER 1 - LOW BYTE                            */
+__sfr __at (0x8C) TH0          ;  /* TIMER 0 - HIGH BYTE                           */
+__sfr __at (0x8D) TH1          ;  /* TIMER 1 - HIGH BYTE                           */
+__sfr __at (0x8E) CKCON        ;  /* CLOCK CONTROL                                 */
+__sfr __at (0x8F) PSCTL        ;  /* PROGRAM STORE R/W CONTROL                     */
+__sfr __at (0x90) P1           ;  /* PORT 1                                        */
+__sfr __at (0x91) TMR3CN       ;  /* TIMER 3 CONTROL                               */
+__sfr __at (0x92) TMR3RLL      ;  /* TIMER 3 CAPTURE REGISTER - LOW BYTE           */
+__sfr __at (0x93) TMR3RLH      ;  /* TIMER 3 CAPTURE REGISTER - HIGH BYTE          */
+__sfr __at (0x94) TMR3L        ;  /* TIMER 3 - LOW BYTE                            */
+__sfr __at (0x95) TMR3H        ;  /* TIMER 3 - HIGH BYTE                           */
+__sfr __at (0x96) USB0ADR      ;  /* USB0 INDIRECT ADDRESS REGISTER                */
+__sfr __at (0x97) USB0DAT      ;  /* USB0 DATA REGISTER                            */
+__sfr __at (0x98) SCON         ;  /* SERIAL PORT CONTROL                           */
+__sfr __at (0x98) SCON0        ;  /* SERIAL PORT CONTROL                           */
+__sfr __at (0x99) SBUF         ;  /* SERIAL PORT BUFFER                            */
+__sfr __at (0x99) SBUF0        ;  /* SERIAL PORT BUFFER                            */
+__sfr __at (0x9A) CPT1CN       ;  /* COMPARATOR 1 CONTROL                          */
+__sfr __at (0x9B) CPT0CN       ;  /* COMPARATOR 0 CONTROL                          */
+__sfr __at (0x9C) CPT1MD       ;  /* COMPARATOR 1 MODE SELECTION                   */
+__sfr __at (0x9D) CPT0MD       ;  /* COMPARATOR 0 MODE SELECTION                   */
+__sfr __at (0x9E) CPT1MX       ;  /* COMPARATOR 1 MUX SELECTION                    */
+__sfr __at (0x9F) CPT0MX       ;  /* COMPARATOR 0 MUX SELECTION                    */
+__sfr __at (0xA0) P2           ;  /* PORT 2                                        */
+__sfr __at (0xA1) SPI0CFG      ;  /* SPI0 CONFIGURATION                            */
+__sfr __at (0xA2) SPI0CKR      ;  /* SPI0 CLOCK RATE CONTROL                       */
+__sfr __at (0xA3) SPI0DAT      ;  /* SPI0 DATA                                     */
+__sfr __at (0xA4) P0MDOUT      ;  /* PORT 0 OUTPUT MODE CONFIGURATION              */
+__sfr __at (0xA5) P1MDOUT      ;  /* PORT 1 OUTPUT MODE CONFIGURATION              */
+__sfr __at (0xA6) P2MDOUT      ;  /* PORT 2 OUTPUT MODE CONFIGURATION              */
+__sfr __at (0xA7) P3MDOUT      ;  /* PORT 3 OUTPUT MODE CONFIGURATION              */
+__sfr __at (0xA8) IE           ;  /* INTERRUPT ENABLE                              */
+__sfr __at (0xA9) CLKSEL       ;  /* SYSTEM CLOCK SELECT                           */
+__sfr __at (0xAA) EMI0CN       ;  /* EXTERNAL MEMORY INTERFACE CONTROL             */
+__sfr __at (0xAA) _XPAGE       ;  /* XDATA/PDATA PAGE                              */
+__sfr __at (0xAC) SBCON1       ;  /* UART 1 BAUDRATE GENERATOR CONTROL             */
+__sfr __at (0xAE) P4MDOUT      ;  /* PORT 4 OUTPUT MODE CONFIGURATION              */
+__sfr __at (0xAF) PFE0CN       ;  /* PREFETCH ENGINE CONTROL                       */
+__sfr __at (0xB0) P3           ;  /* PORT 3                                        */
+__sfr __at (0xB1) OSCXCN       ;  /* EXTERNAL OSCILLATOR CONTROL                   */
+__sfr __at (0xB2) OSCICN       ;  /* INTERNAL OSCILLATOR CONTROL                   */
+__sfr __at (0xB3) OSCICL       ;  /* INTERNAL OSCILLATOR CALIBRATION               */
+__sfr __at (0xB4) SBRLL1       ;  /* UART 1 BAUDRATE GENERATOR - LOW BYTE          */
+__sfr __at (0xB5) SBRLH1       ;  /* UART 1 BAUDRATE GENERATOR - HIGH BYTE         */
+__sfr __at (0xB6) FLSCL        ;  /* FLASH MEMORY TIMING PRESCALER                 */
+__sfr __at (0xB7) FLKEY        ;  /* FLASH ACESS LIMIT                             */
+__sfr __at (0xB8) IP           ;  /* INTERRUPT PRIORITY                            */
+__sfr __at (0xB9) CLKMUL       ;  /* CLOCK MULTIPLIER CONTROL REGISTER             */
+__sfr __at (0xBA) AMX0N        ;  /* ADC 0 MUX NEGATIVE CHANNEL SELECTION          */
+__sfr __at (0xBB) AMX0P        ;  /* ADC 0 MUX POSITIVE CHANNEL SELECTION          */
+__sfr __at (0xBC) ADC0CF       ;  /* ADC 0 CONFIGURATION                           */
+__sfr __at (0xBD) ADC0L        ;  /* ADC 0 DATA WORD LSB                           */
+__sfr __at (0xBE) ADC0H        ;  /* ADC 0 DATA WORD MSB                           */
+__sfr __at (0xC0) SMB0CN       ;  /* SMBUS CONTROL                                 */
+__sfr __at (0xC1) SMB0CF       ;  /* SMBUS CONFIGURATION                           */
+__sfr __at (0xC2) SMB0DAT      ;  /* SMBUS DATA                                    */
+__sfr __at (0xC3) ADC0GTL      ;  /* ADC 0 GREATER-THAN LOW BYTE                   */
+__sfr __at (0xC4) ADC0GTH      ;  /* ADC 0 GREATER-THAN HIGH BYTE                  */
+__sfr __at (0xC5) ADC0LTL      ;  /* ADC 0 LESS-THAN LOW BYTE                      */
+__sfr __at (0xC6) ADC0LTH      ;  /* ADC 0 LESS-THAN HIGH BYTE                     */
+__sfr __at (0xC7) P4           ;  /* PORT 4                                        */
+__sfr __at (0xC8) T2CON        ;  /* TIMER 2 CONTROL                               */
+__sfr __at (0xC8) TMR2CN       ;  /* TIMER 2 CONTROL                               */
+__sfr __at (0xC9) REG0CN       ;  /* VOLTAGE REGULATOR CONTROL                     */
+__sfr __at (0xCA) RCAP2L       ;  /* TIMER 2 CAPTURE REGISTER - LOW BYTE           */
+__sfr __at (0xCA) TMR2RLL      ;  /* TIMER 2 CAPTURE REGISTER - LOW BYTE           */
+__sfr __at (0xCB) RCAP2H       ;  /* TIMER 2 CAPTURE REGISTER - HIGH BYTE          */
+__sfr __at (0xCB) TMR2RLH      ;  /* TIMER 2 CAPTURE REGISTER - HIGH BYTE          */
+__sfr __at (0xCC) TL2          ;  /* TIMER 2 - LOW BYTE                            */
+__sfr __at (0xCC) TMR2L        ;  /* TIMER 2 - LOW BYTE                            */
+__sfr __at (0xCD) TH2          ;  /* TIMER 2 - HIGH BYTE                           */
+__sfr __at (0xCD) TMR2H        ;  /* TIMER 2 - HIGH BYTE                           */
+__sfr __at (0xD0) PSW          ;  /* PROGRAM STATUS WORD                           */
+__sfr __at (0xD1) REF0CN       ;  /* VOLTAGE REFERENCE 0 CONTROL                   */
+__sfr __at (0xD2) SCON1        ;  /* UART 1 CONTROL                                */
+__sfr __at (0xD3) SBUF1        ;  /* UART 1 DATA BUFFER                            */
+__sfr __at (0xD4) P0SKIP       ;  /* PORT 0 SKIP                                   */
+__sfr __at (0xD5) P1SKIP       ;  /* PORT 1 SKIP                                   */
+__sfr __at (0xD6) P2SKIP       ;  /* PORT 2 SKIP                                   */
+__sfr __at (0xD7) USB0XCN      ;  /* USB0 TRANSCEIVER CONTROL                      */
+__sfr __at (0xD8) PCA0CN       ;  /* PCA CONTROL                                   */
+__sfr __at (0xD9) PCA0MD       ;  /* PCA MODE                                      */
+__sfr __at (0xDA) PCA0CPM0     ;  /* PCA MODULE 0 MODE REGISTER                    */
+__sfr __at (0xDB) PCA0CPM1     ;  /* PCA MODULE 1 MODE REGISTER                    */
+__sfr __at (0xDC) PCA0CPM2     ;  /* PCA MODULE 2 MODE REGISTER                    */
+__sfr __at (0xDD) PCA0CPM3     ;  /* PCA MODULE 3 MODE REGISTER                    */
+__sfr __at (0xDE) PCA0CPM4     ;  /* PCA MODULE 4 MODE REGISTER                    */
+__sfr __at (0xDF) P3SKIP       ;  /* PORT 3 SKIP                                   */
+__sfr __at (0xE0) ACC          ;  /* ACCUMULATOR                                   */
+__sfr __at (0xE1) XBR0         ;  /* PORT MUX CONFIGURATION REGISTER 0             */
+__sfr __at (0xE2) XBR1         ;  /* PORT MUX CONFIGURATION REGISTER 1             */
+__sfr __at (0xE3) XBR2         ;  /* PORT MUX CONFIGURATION REGISTER 2             */
+__sfr __at (0xE4) IT01CF       ;  /* INT0/INT1 CONFIGURATION REGISTER              */
+__sfr __at (0xE4) INT01CF      ;  /* INT0/INT1 CONFIGURATION REGISTER              */
+__sfr __at (0xE5) SMOD1        ;  /* UART 1 MODE                                   */
+__sfr __at (0xE6) EIE1         ;  /* EXTERNAL INTERRUPT ENABLE 1                   */
+__sfr __at (0xE7) EIE2         ;  /* EXTERNAL INTERRUPT ENABLE 2                   */
+__sfr __at (0xE8) ADC0CN       ;  /* ADC 0 CONTROL                                 */
+__sfr __at (0xE9) PCA0CPL1     ;  /* PCA CAPTURE 1 LOW                             */
+__sfr __at (0xEA) PCA0CPH1     ;  /* PCA CAPTURE 1 HIGH                            */
+__sfr __at (0xEB) PCA0CPL2     ;  /* PCA CAPTURE 2 LOW                             */
+__sfr __at (0xEC) PCA0CPH2     ;  /* PCA CAPTURE 2 HIGH                            */
+__sfr __at (0xED) PCA0CPL3     ;  /* PCA CAPTURE 3 LOW                             */
+__sfr __at (0xEE) PCA0CPH3     ;  /* PCA CAPTURE 3 HIGH                            */
+__sfr __at (0xEF) RSTSRC       ;  /* RESET SOURCE                                  */
+__sfr __at (0xF0) B            ;  /* B REGISTER                                    */
+__sfr __at (0xF1) P0MODE       ;  /* PORT 0 INPUT MODE CONFIGURATION               */
+__sfr __at (0xF1) P0MDIN       ;  /* PORT 0 INPUT MODE CONFIGURATION               */
+__sfr __at (0xF2) P1MODE       ;  /* PORT 1 INPUT MODE CONFIGURATION               */
+__sfr __at (0xF2) P1MDIN       ;  /* PORT 1 INPUT MODE CONFIGURATION               */
+__sfr __at (0xF3) P2MODE       ;  /* PORT 2 INPUT MODE CONFIGURATION               */
+__sfr __at (0xF3) P2MDIN       ;  /* PORT 2 INPUT MODE CONFIGURATION               */
+__sfr __at (0xF4) P3MODE       ;  /* PORT 3 INPUT MODE CONFIGURATION               */
+__sfr __at (0xF4) P3MDIN       ;  /* PORT 3 INPUT MODE CONFIGURATION               */
+__sfr __at (0xF5) P4MDIN       ;  /* PORT 4 INPUT MODE CONFIGURATION               */
+__sfr __at (0xF6) EIP1         ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 1        */
+__sfr __at (0xF7) EIP2         ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 2        */
+__sfr __at (0xF8) SPI0CN       ;  /* SPI0 CONTROL                                  */
+__sfr __at (0xF9) PCA0L        ;  /* PCA COUNTER LOW                               */
+__sfr __at (0xFA) PCA0H        ;  /* PCA COUNTER HIGH                              */
+__sfr __at (0xFB) PCA0CPL0     ;  /* PCA CAPTURE 0 LOW                             */
+__sfr __at (0xFC) PCA0CPH0     ;  /* PCA CAPTURE 0 HIGH                            */
+__sfr __at (0xFD) PCA0CPL4     ;  /* PCA CAPTURE 4 LOW                             */
+__sfr __at (0xFE) PCA0CPH4     ;  /* PCA CAPTURE 4 HIGH                            */
+__sfr __at (0xFF) VDM0CN       ;  /* VDD MONITOR CONTROL                           */
+
+
+/*  WORD/DWORD Registers  */
+
+__sfr16 __at (0x8C8A) TMR0     ;  /* TIMER 0 COUNTER                               */
+__sfr16 __at (0x8D8B) TMR1     ;  /* TIMER 1 COUNTER                               */
+__sfr16 __at (0xCDCC) TMR2     ;  /* TIMER 2 COUNTER                               */
+__sfr16 __at (0xCBCA) RCAP2    ;  /* TIMER 2 CAPTURE REGISTER WORD                 */
+__sfr16 __at (0xCBCA) TMR2RL   ;  /* TIMER 2 CAPTURE REGISTER WORD                 */
+__sfr16 __at (0x9594) TMR3     ;  /* TIMER 3 COUNTER                               */
+__sfr16 __at (0x9392) TMR3RL   ;  /* TIMER 3 CAPTURE REGISTER WORD                 */
+__sfr16 __at (0xB5B4) SBRL1    ;  /* UART 1 BAUDRATE GENERATOR WORD                */
+__sfr16 __at (0xBEBD) ADC0     ;  /* ADC 0 DATA WORD                               */
+__sfr16 __at (0xC4C3) ADC0GT   ;  /* ADC 0 GREATER-THAN REGISTER WORD              */
+__sfr16 __at (0xC6C5) ADC0LT   ;  /* ADC 0 LESS-THAN REGISTER WORD                 */
+__sfr16 __at (0xFAF9) PCA0     ;  /* PCA COUNTER                                   */
+__sfr16 __at (0xFCFB) PCA0CP0  ;  /* PCA CAPTURE 0 WORD                            */
+__sfr16 __at (0xEAE9) PCA0CP1  ;  /* PCA CAPTURE 1 WORD                            */
+__sfr16 __at (0xECEB) PCA0CP2  ;  /* PCA CAPTURE 2 WORD                            */
+__sfr16 __at (0xEEED) PCA0CP3  ;  /* PCA CAPTURE 3 WORD                            */
+__sfr16 __at (0xFEFD) PCA0CP4  ;  /* PCA CAPTURE 4 WORD                            */
+
+
+/*  BIT Registers  */
+
+/*  P0  0x80 */
+__sbit __at (0x80) P0_0        ;
+__sbit __at (0x81) P0_1        ;
+__sbit __at (0x82) P0_2        ;
+__sbit __at (0x83) P0_3        ;
+__sbit __at (0x84) P0_4        ;
+__sbit __at (0x85) P0_5        ;
+__sbit __at (0x86) P0_6        ;
+__sbit __at (0x87) P0_7        ;
+
+/*  TCON  0x88 */
+__sbit __at (0x88) IT0         ;  /* TCON.0 - EXT. INTERRUPT 0 TYPE                */
+__sbit __at (0x89) IE0         ;  /* TCON.1 - EXT. INTERRUPT 0 EDGE FLAG           */
+__sbit __at (0x8A) IT1         ;  /* TCON.2 - EXT. INTERRUPT 1 TYPE                */
+__sbit __at (0x8B) IE1         ;  /* TCON.3 - EXT. INTERRUPT 1 EDGE FLAG           */
+__sbit __at (0x8C) TR0         ;  /* TCON.4 - TIMER 0 ON/OFF CONTROL               */
+__sbit __at (0x8D) TF0         ;  /* TCON.5 - TIMER 0 OVERFLOW FLAG                */
+__sbit __at (0x8E) TR1         ;  /* TCON.6 - TIMER 1 ON/OFF CONTROL               */
+__sbit __at (0x8F) TF1         ;  /* TCON.7 - TIMER 1 OVERFLOW FLAG                */
+
+/*  P1  0x90 */
+__sbit __at (0x90) P1_0        ;
+__sbit __at (0x91) P1_1        ;
+__sbit __at (0x92) P1_2        ;
+__sbit __at (0x93) P1_3        ;
+__sbit __at (0x94) P1_4        ;
+__sbit __at (0x95) P1_5        ;
+__sbit __at (0x96) P1_6        ;
+__sbit __at (0x97) P1_7        ;
+
+/*  SCON  0x98 */
+__sbit __at (0x98) RI          ;  /* SCON.0 - RECEIVE INTERRUPT FLAG               */
+__sbit __at (0x98) RI0         ;  /* SCON.0 - RECEIVE INTERRUPT FLAG               */
+__sbit __at (0x99) TI          ;  /* SCON.1 - TRANSMIT INTERRUPT FLAG              */
+__sbit __at (0x99) TI0         ;  /* SCON.1 - TRANSMIT INTERRUPT FLAG              */
+__sbit __at (0x9A) RB8         ;  /* SCON.2 - RECEIVE BIT 8                        */
+__sbit __at (0x9A) RB80        ;  /* SCON.2 - RECEIVE BIT 8                        */
+__sbit __at (0x9B) TB8         ;  /* SCON.3 - TRANSMIT BIT 8                       */
+__sbit __at (0x9B) TB80        ;  /* SCON.3 - TRANSMIT BIT 8                       */
+__sbit __at (0x9C) REN         ;  /* SCON.4 - RECEIVE ENABLE                       */
+__sbit __at (0x9C) REN0        ;  /* SCON.4 - RECEIVE ENABLE                       */
+__sbit __at (0x9D) SM2         ;  /* SCON.5 - MULTIPROCESSOR COMMUNICATION ENABLE  */
+__sbit __at (0x9D) MCE0        ;  /* SCON.5 - MULTIPROCESSOR COMMUNICATION ENABLE  */
+__sbit __at (0x9F) SM0         ;  /* SCON.7 - SERIAL MODE CONTROL BIT 0            */
+__sbit __at (0x9F) S0MODE      ;  /* SCON.7 - SERIAL MODE CONTROL BIT 0            */
+
+/*  P2  0xA0 */
+__sbit __at (0xA0) P2_0        ;
+__sbit __at (0xA1) P2_1        ;
+__sbit __at (0xA2) P2_2        ;
+__sbit __at (0xA3) P2_3        ;
+__sbit __at (0xA4) P2_4        ;
+__sbit __at (0xA5) P2_5        ;
+__sbit __at (0xA6) P2_6        ;
+__sbit __at (0xA7) P2_7        ;
+
+/*  IE  0xA8 */
+__sbit __at (0xA8) EX0         ;  /* IE.0 - EXTERNAL INTERRUPT 0 ENABLE            */
+__sbit __at (0xA9) ET0         ;  /* IE.1 - TIMER 0 INTERRUPT ENABLE               */
+__sbit __at (0xAA) EX1         ;  /* IE.2 - EXTERNAL INTERRUPT 1 ENABLE            */
+__sbit __at (0xAB) ET1         ;  /* IE.3 - TIMER 1 INTERRUPT ENABLE               */
+__sbit __at (0xAC) ES          ;  /* IE.4 - SERIAL PORT INTERRUPT ENABLE           */
+__sbit __at (0xAC) ES0         ;  /* IE.4 - SERIAL PORT INTERRUPT ENABLE           */
+__sbit __at (0xAD) ET2         ;  /* IE.5 - TIMER 2 INTERRUPT ENABLE               */
+__sbit __at (0xAE) ESPI0       ;  /* IE.6 - SPI0 INTERRUPT ENABLE                  */
+__sbit __at (0xAF) EA          ;  /* IE.7 - GLOBAL INTERRUPT ENABLE                */
+
+/*  P3  0xB0 */
+__sbit __at (0xB0) P3_0        ;
+__sbit __at (0xB1) P3_1        ;
+__sbit __at (0xB2) P3_2        ;
+__sbit __at (0xB3) P3_3        ;
+__sbit __at (0xB4) P3_4        ;
+__sbit __at (0xB5) P3_5        ;
+__sbit __at (0xB6) P3_6        ;
+__sbit __at (0xB7) P3_7        ;
+
+/*  IP  0xB8 */
+__sbit __at (0xB8) PX0         ;  /* IP.0 - EXTERNAL INTERRUPT 0 PRIORITY          */
+__sbit __at (0xB9) PT0         ;  /* IP.1 - TIMER 0 PRIORITY                       */
+__sbit __at (0xBA) PX1         ;  /* IP.2 - EXTERNAL INTERRUPT 1 PRIORITY          */
+__sbit __at (0xBB) PT1         ;  /* IP.3 - TIMER 1 PRIORITY                       */
+__sbit __at (0xBC) PS          ;  /* IP.4 - SERIAL PORT PRIORITY                   */
+__sbit __at (0xBC) PS0         ;  /* IP.4 - SERIAL PORT PRIORITY                   */
+__sbit __at (0xBD) PT2         ;  /* IP.5 - TIMER 2 PRIORITY                       */
+__sbit __at (0xBE) PSPI0       ;  /* IP.6 - SPI0 PRIORITY                          */
+
+/*  SMB0CN  0xC0 */
+__sbit __at (0xC0) SI          ;  /* SMB0CN.0 - SMBUS 0 INTERRUPT PENDING FLAG     */
+__sbit __at (0xC1) ACK         ;  /* SMB0CN.1 - SMBUS 0 ACKNOWLEDGE FLAG           */
+__sbit __at (0xC2) ARBLOST     ;  /* SMB0CN.2 - SMBUS 0 ARBITRATION LOST INDICATOR */
+__sbit __at (0xC3) ACKRQ       ;  /* SMB0CN.3 - SMBUS 0 ACKNOWLEDGE REQUEST        */
+__sbit __at (0xC4) STO         ;  /* SMB0CN.4 - SMBUS 0 STOP FLAG                  */
+__sbit __at (0xC5) STA         ;  /* SMB0CN.5 - SMBUS 0 START FLAG                 */
+__sbit __at (0xC6) TXMODE      ;  /* SMB0CN.6 - SMBUS 0 TRANSMIT MODE INDICATOR    */
+__sbit __at (0xC7) MASTER      ;  /* SMB0CN.7 - SMBUS 0 MASTER/SLAVE INDICATOR     */
+
+/*  TMR2CN  0xC8 */
+__sbit __at (0xC8) T2XCLK      ;  /* TMR2CN.0 - TIMER 2 EXTERNAL CLOCK SELECT      */
+__sbit __at (0xC9) T2CSS       ;  /* TMR2CN.1 - TIMER 2 CAPTURE SOURCE SELECT      */
+__sbit __at (0xCA) TR2         ;  /* TMR2CN.2 - TIMER 2 ON/OFF CONTROL             */
+__sbit __at (0xCB) T2SPLIT     ;  /* TMR2CN.3 - TIMER 2 SPLIT MODE ENABLE          */
+__sbit __at (0xCC) T2CE        ;  /* TMR2CN.4 - TIMER 2 CAPTURE ENABLE             */
+__sbit __at (0xCD) TF2LEN      ;  /* TMR2CN.5 - TIMER 2 LOW BYTE INTERRUPT ENABLE  */
+__sbit __at (0xCE) TF2L        ;  /* TMR2CN.6 - TIMER 2 LOW BYTE OVERFLOW FLAG     */
+__sbit __at (0xCF) TF2         ;  /* TMR2CN.7 - TIMER 2 OVERFLOW FLAG              */
+__sbit __at (0xCF) TF2H        ;  /* TMR2CN.7 - TIMER 2 HIGH BYTE OVERFLOW FLAG    */
+
+/*  PSW  0xD0 */
+__sbit __at (0xD0) PARITY      ;  /* PSW.0 - ACCUMULATOR PARITY FLAG               */
+__sbit __at (0xD1) F1          ;  /* PSW.1 - FLAG 1                                */
+__sbit __at (0xD2) OV          ;  /* PSW.2 - OVERFLOW FLAG                         */
+__sbit __at (0xD3) RS0         ;  /* PSW.3 - REGISTER BANK SELECT 0                */
+__sbit __at (0xD4) RS1         ;  /* PSW.4 - REGISTER BANK SELECT 1                */
+__sbit __at (0xD5) F0          ;  /* PSW.5 - FLAG 0                                */
+__sbit __at (0xD6) AC          ;  /* PSW.6 - AUXILIARY CARRY FLAG                  */
+__sbit __at (0xD7) CY          ;  /* PSW.7 - CARRY FLAG                            */
+
+/*  PCA0CN  0xD8 */
+__sbit __at (0xD8) CCF0        ;  /* PCA0CN.0 - PCA MODULE 0 CAPTURE/COMPARE FLAG  */
+__sbit __at (0xD9) CCF1        ;  /* PCA0CN.1 - PCA MODULE 1 CAPTURE/COMPARE FLAG  */
+__sbit __at (0xDA) CCF2        ;  /* PCA0CN.2 - PCA MODULE 2 CAPTURE/COMPARE FLAG  */
+__sbit __at (0xDB) CCF3        ;  /* PCA0CN.3 - PCA MODULE 3 CAPTURE/COMPARE FLAG  */
+__sbit __at (0xDC) CCF4        ;  /* PCA0CN.4 - PCA MODULE 4 CAPTURE/COMPARE FLAG  */
+__sbit __at (0xDE) CR          ;  /* PCA0CN.6 - PCA COUNTER/TIMER RUN CONTROL      */
+__sbit __at (0xDF) CF          ;  /* PCA0CN.7 - PCA COUNTER/TIMER OVERFLOW FLAG    */
+
+/*  ADC0CN  0xE8 */
+__sbit __at (0xE8) AD0CM0      ;  /* ADC0CN.0 - ADC 0 START OF CONV. MODE BIT 0    */
+__sbit __at (0xE9) AD0CM1      ;  /* ADC0CN.1 - ADC 0 START OF CONV. MODE BIT 1    */
+__sbit __at (0xEA) AD0CM2      ;  /* ADC0CN.2 - ADC 0 START OF CONV. MODE BIT 2    */
+__sbit __at (0xEB) AD0WINT     ;  /* ADC0CN.3 - ADC 0 WINDOW COMPARE INT. FLAG     */
+__sbit __at (0xEC) AD0BUSY     ;  /* ADC0CN.4 - ADC 0 BUSY FLAG                    */
+__sbit __at (0xED) AD0INT      ;  /* ADC0CN.5 - ADC 0 CONV. COMPLETE INT. FLAG     */
+__sbit __at (0xEE) AD0TM       ;  /* ADC0CN.6 - ADC 0 TRACK MODE                   */
+__sbit __at (0xEF) AD0EN       ;  /* ADC0CN.7 - ADC 0 ENABLE                       */
+
+/*  SPI0CN  0xF8 */
+__sbit __at (0xF8) SPIEN       ;  /* SPI0CN.0 - SPI0 ENABLE                        */
+__sbit __at (0xF9) TXBMT       ;  /* SPI0CN.1 - TRANSMIT BUFFER EMPTY              */
+__sbit __at (0xFA) NSSMD0      ;  /* SPI0CN.2 - SLAVE SELECT MODE BIT 0            */
+__sbit __at (0xFB) NSSMD1      ;  /* SPI0CN.3 - SLAVE SELECT MODE BIT 1            */
+__sbit __at (0xFC) RXOVRN      ;  /* SPI0CN.4 - RECEIVE OVERRUN FLAG               */
+__sbit __at (0xFD) MODF        ;  /* SPI0CN.5 - MODE FAULT FLAG                    */
+__sbit __at (0xFE) WCOL        ;  /* SPI0CN.6 - WRITE COLLISION FLAG               */
+__sbit __at (0xFF) SPIF        ;  /* SPI0CN.7 - SPI0 INTERRUPT FLAG                */
+
+
+/* Predefined SFR Bit Masks */
+
+#define PCON_IDLE         0x01    /* PCON                                */
+#define PCON_STOP         0x02    /* PCON                                */
+#define T1M               0x08    /* CKCON                               */
+#define PSWE              0x01    /* PSCTL                               */
+#define PSEE              0x02    /* PSCTL                               */
+#define ECP0              0x20    /* EIE1                                */
+#define ECP1              0x40    /* EIE1                                */
+#define PORSF             0x02    /* RSTSRC                              */
+#define SWRSF             0x10    /* RSTSRC                              */
+#define ECCF              0x01    /* PCA0CPMn                            */
+#define PWM               0x02    /* PCA0CPMn                            */
+#define TOG               0x04    /* PCA0CPMn                            */
+#define MAT               0x08    /* PCA0CPMn                            */
+#define CAPN              0x10    /* PCA0CPMn                            */
+#define CAPP              0x20    /* PCA0CPMn                            */
+#define ECOM              0x40    /* PCA0CPMn                            */
+#define PWM16             0x80    /* PCA0CPMn                            */
+#define CP0E              0x10    /* XBR0                                */
+#define CP0AE             0x20    /* XBR0                                */
+#define CP1E              0x40    /* XBR0                                */
+#define CP1AE             0x80    /* XBR0                                */
+
+#endif