Imported Upstream version 2.9.0
[debian/cc1111] / device / include / mcs51 / C8051F120.h
1 /*---------------------------------------------------------------------------
2    Register Declarations for the Cygnal/SiLabs C8051F12x-F13x Processor Range
3
4    Copyright (C) 2003 - Maarten Brock, sourceforge.brock@dse.nl
5
6    This library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public
8    License as published by the Free Software Foundation; either
9    version 2.1 of the License, or (at your option) any later version.
10
11    This library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Lesser General Public License for more details.
15
16    You should have received a copy of the GNU Lesser General Public
17    License along with this library; if not, write to the Free Software
18    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 ---------------------------------------------------------------------------*/
20
21 #ifndef C8051F120_H
22 #define C8051F120_H
23
24
25 /*  BYTE Registers  */
26
27 /*  All Pages */
28 __sfr __at (0x80) P0               ;  /* PORT 0                                        */
29 __sfr __at (0x81) SP               ;  /* STACK POINTER                                 */
30 __sfr __at (0x82) DPL              ;  /* DATA POINTER - LOW BYTE                       */
31 __sfr __at (0x83) DPH              ;  /* DATA POINTER - HIGH BYTE                      */
32 __sfr __at (0x84) SFRPAGE          ;  /* SFR PAGE SELECT                               */
33 __sfr __at (0x85) SFRNEXT          ;  /* SFR STACK NEXT PAGE                           */
34 __sfr __at (0x86) SFRLAST          ;  /* SFR STACK LAST PAGE                           */
35 __sfr __at (0x87) PCON             ;  /* POWER CONTROL                                 */
36 __sfr __at (0x90) P1               ;  /* PORT 1                                        */
37 __sfr __at (0xA0) P2               ;  /* PORT 2                                        */
38 __sfr __at (0xA8) IE               ;  /* INTERRUPT ENABLE                              */
39 __sfr __at (0xB0) P3               ;  /* PORT 3                                        */
40 __sfr __at (0xB1) PSBANK           ;  /* FLASH BANK SELECT                             */
41 __sfr __at (0xB8) IP               ;  /* INTERRUPT PRIORITY                            */
42 __sfr __at (0xD0) PSW              ;  /* PROGRAM STATUS WORD                           */
43 __sfr __at (0xE0) ACC              ;  /* ACCUMULATOR                                   */
44 __sfr __at (0xE6) EIE1             ;  /* EXTERNAL INTERRUPT ENABLE 1                   */
45 __sfr __at (0xE7) EIE2             ;  /* EXTERNAL INTERRUPT ENABLE 2                   */
46 __sfr __at (0xF0) B                ;  /* B REGISTER                                    */
47 __sfr __at (0xF6) EIP1             ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 1        */
48 __sfr __at (0xF7) EIP2             ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 2        */
49 __sfr __at (0xFF) WDTCN            ;  /* WATCHDOG TIMER CONTROL                        */
50
51 /*  Page 0x00 */
52 __sfr __at (0x88) TCON             ;  /* TIMER CONTROL                                 */
53 __sfr __at (0x89) TMOD             ;  /* TIMER MODE                                    */
54 __sfr __at (0x8A) TL0              ;  /* TIMER 0 - LOW BYTE                            */
55 __sfr __at (0x8B) TL1              ;  /* TIMER 1 - LOW BYTE                            */
56 __sfr __at (0x8C) TH0              ;  /* TIMER 0 - HIGH BYTE                           */
57 __sfr __at (0x8D) TH1              ;  /* TIMER 1 - HIGH BYTE                           */
58 __sfr __at (0x8E) CKCON            ;  /* TIMER 0/1 CLOCK CONTROL                       */
59 __sfr __at (0x8F) PSCTL            ;  /* FLASH WRITE/ERASE CONTROL                     */
60 __sfr __at (0x91) SSTA0            ;  /* UART 0 STATUS                                 */
61 __sfr __at (0x98) SCON0            ;  /* UART 0 CONTROL                                */
62 __sfr __at (0x98) SCON             ;  /* UART 0 CONTROL                                */
63 __sfr __at (0x99) SBUF0            ;  /* UART 0 BUFFER                                 */
64 __sfr __at (0x99) SBUF             ;  /* UART 0 BUFFER                                 */
65 __sfr __at (0x9A) SPI0CFG          ;  /* SPI 0 CONFIGURATION                           */
66 __sfr __at (0x9B) SPI0DAT          ;  /* SPI 0 DATA                                    */
67 __sfr __at (0x9D) SPI0CKR          ;  /* SPI 0 CLOCK RATE CONTROL                      */
68 __sfr __at (0xA1) EMI0TC           ;  /* EMIF TIMING CONTROL                           */
69 __sfr __at (0xA2) EMI0CN           ;  /* EMIF CONTROL                                  */
70 __sfr __at (0xA2) _XPAGE           ;  /* XDATA/PDATA PAGE                              */
71 __sfr __at (0xA3) EMI0CF           ;  /* EMIF CONFIGURATION                            */
72 __sfr __at (0xA9) SADDR0           ;  /* UART 0 SLAVE ADDRESS                          */
73 __sfr __at (0xB7) FLSCL            ;  /* FLASH SCALE                                   */
74 __sfr __at (0xB9) SADEN0           ;  /* UART 0 SLAVE ADDRESS MASK                     */
75 __sfr __at (0xBA) AMX0CF           ;  /* ADC 0 MUX CONFIGURATION                       */
76 __sfr __at (0xBB) AMX0SL           ;  /* ADC 0 MUX CHANNEL SELECTION                   */
77 __sfr __at (0xBC) ADC0CF           ;  /* ADC 0 CONFIGURATION                           */
78 __sfr __at (0xBE) ADC0L            ;  /* ADC 0 DATA - LOW BYTE                         */
79 __sfr __at (0xBF) ADC0H            ;  /* ADC 0 DATA - HIGH BYTE                        */
80 __sfr __at (0xC0) SMB0CN           ;  /* SMBUS 0 CONTROL                               */
81 __sfr __at (0xC1) SMB0STA          ;  /* SMBUS 0 STATUS                                */
82 __sfr __at (0xC2) SMB0DAT          ;  /* SMBUS 0 DATA                                  */
83 __sfr __at (0xC3) SMB0ADR          ;  /* SMBUS 0 SLAVE ADDRESS                         */
84 __sfr __at (0xC4) ADC0GTL          ;  /* ADC 0 GREATER-THAN REGISTER - LOW BYTE        */
85 __sfr __at (0xC5) ADC0GTH          ;  /* ADC 0 GREATER-THAN REGISTER - HIGH BYTE       */
86 __sfr __at (0xC6) ADC0LTL          ;  /* ADC 0 LESS-THAN REGISTER - LOW BYTE           */
87 __sfr __at (0xC7) ADC0LTH          ;  /* ADC 0 LESS-THAN REGISTER - HIGH BYTE          */
88 __sfr __at (0xC8) TMR2CN           ;  /* TIMER 2 CONTROL                               */
89 __sfr __at (0xC9) TMR2CF           ;  /* TIMER 2 CONFIGURATION                         */
90 __sfr __at (0xCA) RCAP2L           ;  /* TIMER 2 CAPTURE REGISTER - LOW BYTE           */
91 __sfr __at (0xCB) RCAP2H           ;  /* TIMER 2 CAPTURE REGISTER - HIGH BYTE          */
92 __sfr __at (0xCC) TMR2L            ;  /* TIMER 2 - LOW BYTE                            */
93 __sfr __at (0xCC) TL2              ;  /* TIMER 2 - LOW BYTE                            */
94 __sfr __at (0xCD) TMR2H            ;  /* TIMER 2 - HIGH BYTE                           */
95 __sfr __at (0xCD) TH2              ;  /* TIMER 2 - HIGH BYTE                           */
96 __sfr __at (0xCF) SMB0CR           ;  /* SMBUS 0 CLOCK RATE                            */
97 __sfr __at (0xD1) REF0CN           ;  /* VOLTAGE REFERENCE 0 CONTROL                   */
98 __sfr __at (0xD2) DAC0L            ;  /* DAC 0 REGISTER - LOW BYTE                     */
99 __sfr __at (0xD3) DAC0H            ;  /* DAC 0 REGISTER - HIGH BYTE                    */
100 __sfr __at (0xD4) DAC0CN           ;  /* DAC 0 CONTROL                                 */
101 __sfr __at (0xD8) PCA0CN           ;  /* PCA 0 COUNTER CONTROL                         */
102 __sfr __at (0xD9) PCA0MD           ;  /* PCA 0 COUNTER MODE                            */
103 __sfr __at (0xDA) PCA0CPM0         ;  /* PCA 0 MODULE 0 CONTROL                        */
104 __sfr __at (0xDB) PCA0CPM1         ;  /* PCA 0 MODULE 1 CONTROL                        */
105 __sfr __at (0xDC) PCA0CPM2         ;  /* PCA 0 MODULE 2 CONTROL                        */
106 __sfr __at (0xDD) PCA0CPM3         ;  /* PCA 0 MODULE 3 CONTROL                        */
107 __sfr __at (0xDE) PCA0CPM4         ;  /* PCA 0 MODULE 4 CONTROL                        */
108 __sfr __at (0xDF) PCA0CPM5         ;  /* PCA 0 MODULE 5 CONTROL                        */
109 __sfr __at (0xE1) PCA0CPL5         ;  /* PCA 0 MODULE 5 CAPTURE/COMPARE - LOW BYTE     */
110 __sfr __at (0xE2) PCA0CPH5         ;  /* PCA 0 MODULE 5 CAPTURE/COMPARE - HIGH BYTE    */
111 __sfr __at (0xE8) ADC0CN           ;  /* ADC 0 CONTROL                                 */
112 __sfr __at (0xE9) PCA0CPL2         ;  /* PCA 0 MODULE 2 CAPTURE/COMPARE - LOW BYTE     */
113 __sfr __at (0xEA) PCA0CPH2         ;  /* PCA 0 MODULE 2 CAPTURE/COMPARE - HIGH BYTE    */
114 __sfr __at (0xEB) PCA0CPL3         ;  /* PCA 0 MODULE 3 CAPTURE/COMPARE - LOW BYTE     */
115 __sfr __at (0xEC) PCA0CPH3         ;  /* PCA 0 MODULE 3 CAPTURE/COMPARE - HIGH BYTE    */
116 __sfr __at (0xED) PCA0CPL4         ;  /* PCA 0 MODULE 4 CAPTURE/COMPARE - LOW BYTE     */
117 __sfr __at (0xEE) PCA0CPH4         ;  /* PCA 0 MODULE 4 CAPTURE/COMPARE - HIGH BYTE    */
118 __sfr __at (0xEF) RSTSRC           ;  /* RESET SOURCE                                  */
119 __sfr __at (0xF8) SPI0CN           ;  /* SPI 0 CONTROL                                 */
120 __sfr __at (0xF9) PCA0L            ;  /* PCA 0 TIMER - LOW BYTE                        */
121 __sfr __at (0xFA) PCA0H            ;  /* PCA 0 TIMER - HIGH BYTE                       */
122 __sfr __at (0xFB) PCA0CPL0         ;  /* PCA 0 MODULE 0 CAPTURE/COMPARE - LOW BYTE     */
123 __sfr __at (0xFC) PCA0CPH0         ;  /* PCA 0 MODULE 0 CAPTURE/COMPARE - HIGH BYTE    */
124 __sfr __at (0xFD) PCA0CPL1         ;  /* PCA 0 MODULE 1 CAPTURE/COMPARE - LOW BYTE     */
125 __sfr __at (0xFE) PCA0CPH1         ;  /* PCA 0 MODULE 1 CAPTURE/COMPARE - HIGH BYTE    */
126
127 /*  Page 0x01 */
128 __sfr __at (0x88) CPT0CN           ;  /* COMPARATOR 0 CONTROL                          */
129 __sfr __at (0x89) CPT0MD           ;  /* COMPARATOR 0 CONFIGURATION                    */
130 __sfr __at (0x98) SCON1            ;  /* UART 1 CONTROL                                */
131 __sfr __at (0x99) SBUF1            ;  /* UART 1 BUFFER                                 */
132 __sfr __at (0xC8) TMR3CN           ;  /* TIMER 3 CONTROL                               */
133 __sfr __at (0xC9) TMR3CF           ;  /* TIMER 3 CONFIGURATION                         */
134 __sfr __at (0xCA) RCAP3L           ;  /* TIMER 3 CAPTURE REGISTER - LOW BYTE           */
135 __sfr __at (0xCB) RCAP3H           ;  /* TIMER 3 CAPTURE REGISTER - HIGH BYTE          */
136 __sfr __at (0xCC) TMR3L            ;  /* TIMER 3 - LOW BYTE                            */
137 __sfr __at (0xCD) TMR3H            ;  /* TIMER 3 - HIGH BYTE                           */
138 __sfr __at (0xD2) DAC1L            ;  /* DAC 1 REGISTER - LOW BYTE                     */
139 __sfr __at (0xD3) DAC1H            ;  /* DAC 1 REGISTER - HIGH BYTE                    */
140 __sfr __at (0xD4) DAC1CN           ;  /* DAC 1 CONTROL                                 */
141
142 /*  Page 0x02 */
143 __sfr __at (0x88) CPT1CN           ;  /* COMPARATOR 1 CONTROL                          */
144 __sfr __at (0x89) CPT1MD           ;  /* COMPARATOR 1 CONFIGURATION                    */
145 __sfr __at (0xBA) AMX2CF           ;  /* ADC 2 MUX CONFIGURATION                       */
146 __sfr __at (0xBB) AMX2SL           ;  /* ADC 2 MUX CHANNEL SELECTION                   */
147 __sfr __at (0xBC) ADC2CF           ;  /* ADC 2 CONFIGURATION                           */
148 __sfr __at (0xBE) ADC2             ;  /* ADC 2 DATA                                    */
149 __sfr __at (0xC4) ADC2GT           ;  /* ADC 2 GREATER-THAN REGISTER                   */
150 __sfr __at (0xC6) ADC2LT           ;  /* ADC 2 LESS-THAN REGISTER                      */
151 __sfr __at (0xC8) TMR4CN           ;  /* TIMER 4 CONTROL                               */
152 __sfr __at (0xC9) TMR4CF           ;  /* TIMER 4 CONFIGURATION                         */
153 __sfr __at (0xCA) RCAP4L           ;  /* TIMER 4 CAPTURE REGISTER - LOW BYTE           */
154 __sfr __at (0xCB) RCAP4H           ;  /* TIMER 4 CAPTURE REGISTER - HIGH BYTE          */
155 __sfr __at (0xCC) TMR4L            ;  /* TIMER 4 - LOW BYTE                            */
156 __sfr __at (0xCD) TMR4H            ;  /* TIMER 4 - HIGH BYTE                           */
157 __sfr __at (0xE8) ADC2CN           ;  /* ADC 2 CONTROL                                 */
158
159 /*  Page 0x03 */
160 __sfr __at (0x91) MAC0BL           ;  /* MAC0 B Register Low Byte                      */
161 __sfr __at (0x92) MAC0BH           ;  /* MAC0 B Register High Byte                     */
162 __sfr __at (0x93) MAC0ACC0         ;  /* MAC0 Accumulator Byte 0 (LSB)                 */
163 __sfr __at (0x94) MAC0ACC1         ;  /* MAC0 Accumulator Byte 1                       */
164 __sfr __at (0x95) MAC0ACC2         ;  /* MAC0 Accumulator Byte 2                       */
165 __sfr __at (0x96) MAC0ACC3         ;  /* MAC0 Accumulator Byte 3 (MSB)                 */
166 __sfr __at (0x97) MAC0OVR          ;  /* MAC0 Accumulator Overflow                     */
167 __sfr __at (0xC0) MAC0STA          ;  /* MAC0 Status Register                          */
168 __sfr __at (0xC1) MAC0AL           ;  /* MAC0 A Register Low Byte                      */
169 __sfr __at (0xC2) MAC0AH           ;  /* MAC0 A Register High Byte                     */
170 __sfr __at (0xC3) MAC0CF           ;  /* MAC0 Configuration                            */
171 __sfr __at (0xCE) MAC0RNDL         ;  /* MAC0 Rounding Register Low Byte               */
172 __sfr __at (0xCF) MAC0RNDH         ;  /* MAC0 Rounding Register High Byte              */
173
174 /*  Page 0x0F */
175 __sfr __at (0x88) FLSTAT           ;  /* FLASH STATUS                                  */
176 __sfr __at (0x89) PLL0CN           ;  /* PLL 0 CONTROL                                 */
177 __sfr __at (0x8A) OSCICN           ;  /* INTERNAL OSCILLATOR CONTROL                   */
178 __sfr __at (0x8B) OSCICL           ;  /* INTERNAL OSCILLATOR CALIBRATION               */
179 __sfr __at (0x8C) OSCXCN           ;  /* EXTERNAL OSCILLATOR CONTROL                   */
180 __sfr __at (0x8D) PLL0DIV          ;  /* PLL 0 DIVIDER                                 */
181 __sfr __at (0x8E) PLL0MUL          ;  /* PLL 0 MULTIPLIER                              */
182 __sfr __at (0x8F) PLL0FLT          ;  /* PLL 0 FILTER                                  */
183 __sfr __at (0x96) SFRPGCN          ;  /* SFR PAGE CONTROL                              */
184 __sfr __at (0x97) CLKSEL           ;  /* SYSTEM CLOCK SELECT                           */
185 __sfr __at (0x9A) CCH0MA           ;  /* CACHE MISS ACCUMULATOR                        */
186 __sfr __at (0x9C) P4MDOUT          ;  /* PORT 4 OUTPUT MODE                            */
187 __sfr __at (0x9D) P5MDOUT          ;  /* PORT 5 OUTPUT MODE                            */
188 __sfr __at (0x9E) P6MDOUT          ;  /* PORT 6 OUTPUT MODE                            */
189 __sfr __at (0x9F) P7MDOUT          ;  /* PORT 7 OUTPUT MODE                            */
190 __sfr __at (0xA1) CCH0CN           ;  /* CACHE CONTROL                                 */
191 __sfr __at (0xA2) CCH0TN           ;  /* CACHE TUNING REGISTER                         */
192 __sfr __at (0xA3) CCH0LC           ;  /* CACHE LOCK                                    */
193 __sfr __at (0xA4) P0MDOUT          ;  /* PORT 0 OUTPUT MODE                            */
194 __sfr __at (0xA5) P1MDOUT          ;  /* PORT 1 OUTPUT MODE                            */
195 __sfr __at (0xA6) P2MDOUT          ;  /* PORT 2 OUTPUT MODE CONFIGURATION              */
196 __sfr __at (0xA7) P3MDOUT          ;  /* PORT 3 OUTPUT MODE CONFIGURATION              */
197 __sfr __at (0xAD) P1MDIN           ;  /* PORT 1 INPUT MODE                             */
198 __sfr __at (0xB7) FLACL            ;  /* FLASH ACCESS LIMIT                            */
199 __sfr __at (0xC8) P4               ;  /* PORT 4                                        */
200 __sfr __at (0xD8) P5               ;  /* PORT 5                                        */
201 __sfr __at (0xE1) XBR0             ;  /* CROSSBAR CONFIGURATION REGISTER 0             */
202 __sfr __at (0xE2) XBR1             ;  /* CROSSBAR CONFIGURATION REGISTER 1             */
203 __sfr __at (0xE3) XBR2             ;  /* CROSSBAR CONFIGURATION REGISTER 2             */
204 __sfr __at (0xE8) P6               ;  /* PORT 6                                        */
205 __sfr __at (0xF8) P7               ;  /* PORT 7                                        */
206
207
208 /*  WORD/DWORD Registers  */
209
210 /*  Page 0x00 */
211 __sfr16 __at (0x8C8A) TMR0         ;  /* TIMER 0 COUNTER                               */
212 __sfr16 __at (0x8D8B) TMR1         ;  /* TIMER 1 COUNTER                               */
213 __sfr16 __at (0xCDCC) TMR2         ;  /* TIMER 2 COUNTER                               */
214 __sfr16 __at (0xCBCA) RCAP2        ;  /* TIMER 2 CAPTURE REGISTER WORD                 */
215 __sfr16 __at (0xBFBE) ADC0         ;  /* ADC 0 DATA WORD                               */
216 __sfr16 __at (0xC5C4) ADC0GT       ;  /* ADC 0 GREATER-THAN REGISTER WORD              */
217 __sfr16 __at (0xC7C6) ADC0LT       ;  /* ADC 0 LESS-THAN REGISTER WORD                 */
218 __sfr16 __at (0xD3D2) DAC0         ;  /* DAC 0 REGISTER WORD                           */
219 __sfr16 __at (0xFAF9) PCA0         ;  /* PCA 0 TIMER COUNTER                           */
220 __sfr16 __at (0xFCFB) PCA0CP0      ;  /* PCA 0 MODULE 0 CAPTURE/COMPARE WORD           */
221 __sfr16 __at (0xFEFD) PCA0CP1      ;  /* PCA 0 MODULE 1 CAPTURE/COMPARE WORD           */
222 __sfr16 __at (0xEAE9) PCA0CP2      ;  /* PCA 0 MODULE 2 CAPTURE/COMPARE WORD           */
223 __sfr16 __at (0xECEB) PCA0CP3      ;  /* PCA 0 MODULE 3 CAPTURE/COMPARE WORD           */
224 __sfr16 __at (0xEEED) PCA0CP4      ;  /* PCA 0 MODULE 4 CAPTURE/COMPARE WORD           */
225 __sfr16 __at (0xE2E1) PCA0CP5      ;  /* PCA 0 MODULE 5 CAPTURE/COMPARE WORD           */
226
227 /*  Page 0x01 */
228 __sfr16 __at (0xCDCC) TMR3         ;  /* TIMER 3 COUNTER                               */
229 __sfr16 __at (0xCBCA) RCAP3        ;  /* TIMER 3 CAPTURE REGISTER WORD                 */
230 __sfr16 __at (0xD3D2) DAC1         ;  /* DAC 1 REGISTER WORD                           */
231
232 /*  Page 0x02 */
233 __sfr16 __at (0xCDCC) TMR4         ;  /* TIMER 4 COUNTER                               */
234 __sfr16 __at (0xCBCA) RCAP4        ;  /* TIMER 4 CAPTURE REGISTER WORD                 */
235
236 /*  Page 0x03 */
237 __sfr16 __at (0xC2C1) MAC0A        ;  /* MAC0 A Register                               */
238                 /* No sfr16 definition for MAC0B because MAC0BL must be written last */
239 __sfr32 __at (0x96959493) MAC0ACC  ;  /* MAC0 Accumulator                              */
240 __sfr16 __at (0xCFCE) MAC0RND      ;  /* MAC0 Rounding Register                        */
241
242
243 /*  BIT Registers  */
244
245 /*  P0  0x80 */
246 __sbit __at (0x80) P0_0            ;
247 __sbit __at (0x81) P0_1            ;
248 __sbit __at (0x82) P0_2            ;
249 __sbit __at (0x83) P0_3            ;
250 __sbit __at (0x84) P0_4            ;
251 __sbit __at (0x85) P0_5            ;
252 __sbit __at (0x86) P0_6            ;
253 __sbit __at (0x87) P0_7            ;
254
255 /*  TCON  0x88 */
256 __sbit __at (0x88) IT0             ;  /* EXT. INTERRUPT 0 TYPE                         */
257 __sbit __at (0x89) IE0             ;  /* EXT. INTERRUPT 0 EDGE FLAG                    */
258 __sbit __at (0x8A) IT1             ;  /* EXT. INTERRUPT 1 TYPE                         */
259 __sbit __at (0x8B) IE1             ;  /* EXT. INTERRUPT 1 EDGE FLAG                    */
260 __sbit __at (0x8C) TR0             ;  /* TIMER 0 ON/OFF CONTROL                        */
261 __sbit __at (0x8D) TF0             ;  /* TIMER 0 OVERFLOW FLAG                         */
262 __sbit __at (0x8E) TR1             ;  /* TIMER 1 ON/OFF CONTROL                        */
263 __sbit __at (0x8F) TF1             ;  /* TIMER 1 OVERFLOW FLAG                         */
264
265 /*  CPT0CN  0x88 */
266 __sbit __at (0x88) CP0HYN0         ;  /* COMPARATOR 0 NEGATIVE HYSTERESIS 0            */
267 __sbit __at (0x89) CP0HYN1         ;  /* COMPARATOR 0 NEGATIVE HYSTERESIS 1            */
268 __sbit __at (0x8A) CP0HYP0         ;  /* COMPARATOR 0 POSITIVE HYSTERESIS 0            */
269 __sbit __at (0x8B) CP0HYP1         ;  /* COMPARATOR 0 POSITIVE HYSTERESIS 1            */
270 __sbit __at (0x8C) CP0FIF          ;  /* COMPARATOR 0 FALLING EDGE INTERRUPT           */
271 __sbit __at (0x8D) CP0RIF          ;  /* COMPARATOR 0 RISING EDGE INTERRUPT            */
272 __sbit __at (0x8E) CP0OUT          ;  /* COMPARATOR 0 OUTPUT                           */
273 __sbit __at (0x8F) CP0EN           ;  /* COMPARATOR 0 ENABLE                           */
274
275 /*  CPT1CN  0x88 */
276 __sbit __at (0x88) CP1HYN0         ;  /* COMPARATOR 1 NEGATIVE HYSTERESIS 0            */
277 __sbit __at (0x89) CP1HYN1         ;  /* COMPARATOR 1 NEGATIVE HYSTERESIS 1            */
278 __sbit __at (0x8A) CP1HYP0         ;  /* COMPARATOR 1 POSITIVE HYSTERESIS 0            */
279 __sbit __at (0x8B) CP1HYP1         ;  /* COMPARATOR 1 POSITIVE HYSTERESIS 1            */
280 __sbit __at (0x8C) CP1FIF          ;  /* COMPARATOR 1 FALLING EDGE INTERRUPT           */
281 __sbit __at (0x8D) CP1RIF          ;  /* COMPARATOR 1 RISING EDGE INTERRUPT            */
282 __sbit __at (0x8E) CP1OUT          ;  /* COMPARATOR 1 OUTPUT                           */
283 __sbit __at (0x8F) CP1EN           ;  /* COMPARATOR 1 ENABLE                           */
284
285 /*  FLSTAT  0x88 */
286 __sbit __at (0x88) FLHBUSY         ;  /* FLASH BUSY                                    */
287
288 /*  P1  0x90 */
289 __sbit __at (0x90) P1_0            ;
290 __sbit __at (0x91) P1_1            ;
291 __sbit __at (0x92) P1_2            ;
292 __sbit __at (0x93) P1_3            ;
293 __sbit __at (0x94) P1_4            ;
294 __sbit __at (0x95) P1_5            ;
295 __sbit __at (0x96) P1_6            ;
296 __sbit __at (0x97) P1_7            ;
297
298 /*  SCON0  0x98 */
299 __sbit __at (0x98) RI0             ;  /* UART 0 RX INTERRUPT FLAG                      */
300 __sbit __at (0x98) RI              ;  /* UART 0 RX INTERRUPT FLAG                      */
301 __sbit __at (0x99) TI0             ;  /* UART 0 TX INTERRUPT FLAG                      */
302 __sbit __at (0x99) TI              ;  /* UART 0 TX INTERRUPT FLAG                      */
303 __sbit __at (0x9A) RB80            ;  /* UART 0 RX BIT 8                               */
304 __sbit __at (0x9B) TB80            ;  /* UART 0 TX BIT 8                               */
305 __sbit __at (0x9C) REN0            ;  /* UART 0 RX ENABLE                              */
306 __sbit __at (0x9C) REN             ;  /* UART 0 RX ENABLE                              */
307 __sbit __at (0x9D) SM20            ;  /* UART 0 MULTIPROCESSOR EN                      */
308 __sbit __at (0x9E) SM10            ;  /* UART 0 MODE 1                                 */
309 __sbit __at (0x9F) SM00            ;  /* UART 0 MODE 0                                 */
310
311 /*  SCON1  0x98 */
312 __sbit __at (0x98) RI1             ;  /* UART 1 RX INTERRUPT FLAG                      */
313 __sbit __at (0x99) TI1             ;  /* UART 1 TX INTERRUPT FLAG                      */
314 __sbit __at (0x9A) RB81            ;  /* UART 1 RX BIT 8                               */
315 __sbit __at (0x9B) TB81            ;  /* UART 1 TX BIT 8                               */
316 __sbit __at (0x9C) REN1            ;  /* UART 1 RX ENABLE                              */
317 __sbit __at (0x9D) MCE1            ;  /* UART 1 MCE                                    */
318 __sbit __at (0x9F) S1MODE          ;  /* UART 1 MODE                                   */
319
320 /*  P2  0xA0 */
321 __sbit __at (0xA0) P2_0            ;
322 __sbit __at (0xA1) P2_1            ;
323 __sbit __at (0xA2) P2_2            ;
324 __sbit __at (0xA3) P2_3            ;
325 __sbit __at (0xA4) P2_4            ;
326 __sbit __at (0xA5) P2_5            ;
327 __sbit __at (0xA6) P2_6            ;
328 __sbit __at (0xA7) P2_7            ;
329
330 /*  IE  0xA8 */
331 __sbit __at (0xA8) EX0             ;  /* EXTERNAL INTERRUPT 0 ENABLE                   */
332 __sbit __at (0xA9) ET0             ;  /* TIMER 0 INTERRUPT ENABLE                      */
333 __sbit __at (0xAA) EX1             ;  /* EXTERNAL INTERRUPT 1 ENABLE                   */
334 __sbit __at (0xAB) ET1             ;  /* TIMER 1 INTERRUPT ENABLE                      */
335 __sbit __at (0xAC) ES0             ;  /* UART0 INTERRUPT ENABLE                        */
336 __sbit __at (0xAC) ES              ;  /* UART0 INTERRUPT ENABLE                        */
337 __sbit __at (0xAD) ET2             ;  /* TIMER 2 INTERRUPT ENABLE                      */
338 __sbit __at (0xAF) EA              ;  /* GLOBAL INTERRUPT ENABLE                       */
339
340 /*  P3  0xB0 */
341 __sbit __at (0xB0) P3_0            ;
342 __sbit __at (0xB1) P3_1            ;
343 __sbit __at (0xB2) P3_2            ;
344 __sbit __at (0xB3) P3_3            ;
345 __sbit __at (0xB4) P3_4            ;
346 __sbit __at (0xB5) P3_5            ;
347 __sbit __at (0xB6) P3_6            ;
348 __sbit __at (0xB7) P3_7            ;
349
350 /*  IP  0xB8 */
351 __sbit __at (0xB8) PX0             ;  /* EXTERNAL INTERRUPT 0 PRIORITY                 */
352 __sbit __at (0xB9) PT0             ;  /* TIMER 0 PRIORITY                              */
353 __sbit __at (0xBA) PX1             ;  /* EXTERNAL INTERRUPT 1 PRIORITY                 */
354 __sbit __at (0xBB) PT1             ;  /* TIMER 1 PRIORITY                              */
355 __sbit __at (0xBC) PS0             ;  /* SERIAL PORT PRIORITY                          */
356 __sbit __at (0xBC) PS              ;  /* SERIAL PORT PRIORITY                          */
357 __sbit __at (0xBD) PT2             ;  /* TIMER 2 PRIORITY                              */
358
359 /* SMB0CN 0xC0 */
360 __sbit __at (0xC0) SMBTOE          ;  /* SMBUS 0 TIMEOUT ENABLE                        */
361 __sbit __at (0xC1) SMBFTE          ;  /* SMBUS 0 FREE TIMER ENABLE                     */
362 __sbit __at (0xC2) AA              ;  /* SMBUS 0 ASSERT/ACKNOWLEDGE FLAG               */
363 __sbit __at (0xC3) SI              ;  /* SMBUS 0 INTERRUPT PENDING FLAG                */
364 __sbit __at (0xC4) STO             ;  /* SMBUS 0 STOP FLAG                             */
365 __sbit __at (0xC5) STA             ;  /* SMBUS 0 START FLAG                            */
366 __sbit __at (0xC6) ENSMB           ;  /* SMBUS 0 ENABLE                                */
367 __sbit __at (0xC7) BUSY            ;  /* SMBUS 0 BUSY                                  */
368
369 /* MAC0STA 0xC0 */
370 __sbit __at (0xC0) MAC0N           ;  /* MAC 0 NEGATIVE FLAG                           */
371 __sbit __at (0xC1) MAC0SO          ;  /* MAC 0 SOFT OVERFLOW FLAG                      */
372 __sbit __at (0xC2) MAC0Z           ;  /* MAC 0 ZERO FLAG                               */
373 __sbit __at (0xC3) MAC0HO          ;  /* MAC 0 HARD OVERFLOW FLAG                      */
374
375 /*  TMR2CN  0xC8 */
376 __sbit __at (0xC8) CPRL2           ;  /* TIMER 2 CAPTURE SELECT                        */
377 __sbit __at (0xC9) CT2             ;  /* TIMER 2 COUNTER SELECT                        */
378 __sbit __at (0xCA) TR2             ;  /* TIMER 2 ON/OFF CONTROL                        */
379 __sbit __at (0xCB) EXEN2           ;  /* TIMER 2 EXTERNAL ENABLE FLAG                  */
380 __sbit __at (0xCE) EXF2            ;  /* TIMER 2 EXTERNAL FLAG                         */
381 __sbit __at (0xCF) TF2             ;  /* TIMER 2 OVERFLOW FLAG                         */
382
383 /*  TMR3CN  0xC8 */
384 __sbit __at (0xC8) CPRL3           ;  /* TIMER 3 CAPTURE SELECT                        */
385 __sbit __at (0xC9) CT3             ;  /* TIMER 3 COUNTER SELECT                        */
386 __sbit __at (0xCA) TR3             ;  /* TIMER 3 ON/OFF CONTROL                        */
387 __sbit __at (0xCB) EXEN3           ;  /* TIMER 3 EXTERNAL ENABLE FLAG                  */
388 __sbit __at (0xCE) EXF3            ;  /* TIMER 3 EXTERNAL FLAG                         */
389 __sbit __at (0xCF) TF3             ;  /* TIMER 3 OVERFLOW FLAG                         */
390
391 /*  TMR4CN  0xC8 */
392 __sbit __at (0xC8) CPRL4           ;  /* TIMER 4 CAPTURE SELECT                        */
393 __sbit __at (0xC9) CT4             ;  /* TIMER 4 COUNTER SELECT                        */
394 __sbit __at (0xCA) TR4             ;  /* TIMER 4 ON/OFF CONTROL                        */
395 __sbit __at (0xCB) EXEN4           ;  /* TIMER 4 EXTERNAL ENABLE FLAG                  */
396 __sbit __at (0xCE) EXF4            ;  /* TIMER 4 EXTERNAL FLAG                         */
397 __sbit __at (0xCF) TF4             ;  /* TIMER 4 OVERFLOW FLAG                         */
398
399 /*  P4  0xC8 */
400 __sbit __at (0xC8) P4_0            ;
401 __sbit __at (0xC9) P4_1            ;
402 __sbit __at (0xCA) P4_2            ;
403 __sbit __at (0xCB) P4_3            ;
404 __sbit __at (0xCC) P4_4            ;
405 __sbit __at (0xCD) P4_5            ;
406 __sbit __at (0xCE) P4_6            ;
407 __sbit __at (0xCF) P4_7            ;
408
409 /*  PSW  0xD0 */
410 __sbit __at (0xD0) P               ;  /* ACCUMULATOR PARITY FLAG                       */
411 __sbit __at (0xD1) F1              ;  /* USER FLAG 1                                   */
412 __sbit __at (0xD2) OV              ;  /* OVERFLOW FLAG                                 */
413 __sbit __at (0xD3) RS0             ;  /* REGISTER BANK SELECT 0                        */
414 __sbit __at (0xD4) RS1             ;  /* REGISTER BANK SELECT 1                        */
415 __sbit __at (0xD5) F0              ;  /* USER FLAG 0                                   */
416 __sbit __at (0xD6) AC              ;  /* AUXILIARY CARRY FLAG                          */
417 __sbit __at (0xD7) CY              ;  /* CARRY FLAG                                    */
418
419 /* PCA0CN D8H */
420 __sbit __at (0xD8) CCF0            ;  /* PCA 0 MODULE 0 INTERRUPT FLAG                 */
421 __sbit __at (0xD9) CCF1            ;  /* PCA 0 MODULE 1 INTERRUPT FLAG                 */
422 __sbit __at (0xDA) CCF2            ;  /* PCA 0 MODULE 2 INTERRUPT FLAG                 */
423 __sbit __at (0xDB) CCF3            ;  /* PCA 0 MODULE 3 INTERRUPT FLAG                 */
424 __sbit __at (0xDC) CCF4            ;  /* PCA 0 MODULE 4 INTERRUPT FLAG                 */
425 __sbit __at (0xDD) CCF5            ;  /* PCA 0 MODULE 5 INTERRUPT FLAG                 */
426 __sbit __at (0xDE) CR              ;  /* PCA 0 COUNTER RUN CONTROL BIT                 */
427 __sbit __at (0xDF) CF              ;  /* PCA 0 COUNTER OVERFLOW FLAG                   */
428
429 /*  P5  0xD8 */
430 __sbit __at (0xD8) P5_0            ;
431 __sbit __at (0xD9) P5_1            ;
432 __sbit __at (0xDA) P5_2            ;
433 __sbit __at (0xDB) P5_3            ;
434 __sbit __at (0xDC) P5_4            ;
435 __sbit __at (0xDD) P5_5            ;
436 __sbit __at (0xDE) P5_6            ;
437 __sbit __at (0xDF) P5_7            ;
438
439 /* ADC0CN E8H */
440 __sbit __at (0xE8) AD0LJST         ;  /* ADC 0 RIGHT JUSTIFY DATA BIT                  */
441 __sbit __at (0xE9) AD0WINT         ;  /* ADC 0 WINDOW INTERRUPT FLAG                   */
442 __sbit __at (0xEA) AD0CM0          ;  /* ADC 0 CONVERT START MODE BIT 0                */
443 __sbit __at (0xEB) AD0CM1          ;  /* ADC 0 CONVERT START MODE BIT 1                */
444 __sbit __at (0xEC) AD0BUSY         ;  /* ADC 0 BUSY FLAG                               */
445 __sbit __at (0xED) AD0INT          ;  /* ADC 0 EOC INTERRUPT FLAG                      */
446 __sbit __at (0xEE) AD0TM           ;  /* ADC 0 TRACK MODE                              */
447 __sbit __at (0xEF) AD0EN           ;  /* ADC 0 ENABLE                                  */
448
449 /* ADC2CN E8H */
450 __sbit __at (0xE8) AD2WINT         ;  /* ADC 2 WINDOW INTERRUPT FLAG                   */
451 __sbit __at (0xE9) AD2CM0          ;  /* ADC 2 CONVERT START MODE BIT 0                */
452 __sbit __at (0xEA) AD2CM1          ;  /* ADC 2 CONVERT START MODE BIT 1                */
453 __sbit __at (0xEB) AD2CM2          ;  /* ADC 2 CONVERT START MODE BIT 2                */
454 __sbit __at (0xEC) AD2BUSY         ;  /* ADC 2 BUSY FLAG                               */
455 __sbit __at (0xED) AD2INT          ;  /* ADC 2 EOC INTERRUPT FLAG                      */
456 __sbit __at (0xEE) AD2TM           ;  /* ADC 2 TRACK MODE                              */
457 __sbit __at (0xEF) AD2EN           ;  /* ADC 2 ENABLE                                  */
458
459 /*  P6  0xE8 */
460 __sbit __at (0xE8) P6_0            ;
461 __sbit __at (0xE9) P6_1            ;
462 __sbit __at (0xEA) P6_2            ;
463 __sbit __at (0xEB) P6_3            ;
464 __sbit __at (0xEC) P6_4            ;
465 __sbit __at (0xED) P6_5            ;
466 __sbit __at (0xEE) P6_6            ;
467 __sbit __at (0xEF) P6_7            ;
468
469 /* SPI0CN F8H */
470 __sbit __at (0xF8) SPIEN           ;  /* SPI 0 SPI ENABLE                              */
471 __sbit __at (0xF9) TXBMT           ;  /* SPI 0 TX BUFFER EMPTY FLAG                    */
472 __sbit __at (0xFA) NSSMD0          ;  /* SPI 0 SLAVE SELECT MODE 0                     */
473 __sbit __at (0xFB) NSSMD1          ;  /* SPI 0 SLAVE SELECT MODE 1                     */
474 __sbit __at (0xFC) RXOVRN          ;  /* SPI 0 RX OVERRUN FLAG                         */
475 __sbit __at (0xFD) MODF            ;  /* SPI 0 MODE FAULT FLAG                         */
476 __sbit __at (0xFE) WCOL            ;  /* SPI 0 WRITE COLLISION FLAG                    */
477 __sbit __at (0xFF) SPIF            ;  /* SPI 0 INTERRUPT FLAG                          */
478
479 /*  P7  0xF8 */
480 __sbit __at (0xF8) P7_0            ;
481 __sbit __at (0xF9) P7_1            ;
482 __sbit __at (0xFA) P7_2            ;
483 __sbit __at (0xFB) P7_3            ;
484 __sbit __at (0xFC) P7_4            ;
485 __sbit __at (0xFD) P7_5            ;
486 __sbit __at (0xFE) P7_6            ;
487 __sbit __at (0xFF) P7_7            ;
488
489
490 /* Predefined SFR Bit Masks */
491
492 #define PCON_IDLE         0x01    /* PCON                                */
493 #define PCON_STOP         0x02    /* PCON                                */
494 #define ECCF              0x01    /* PCA0CPMn                            */
495 #define PWM               0x02    /* PCA0CPMn                            */
496 #define TOG               0x04    /* PCA0CPMn                            */
497 #define MAT               0x08    /* PCA0CPMn                            */
498 #define CAPN              0x10    /* PCA0CPMn                            */
499 #define CAPP              0x20    /* PCA0CPMn                            */
500 #define ECOM              0x40    /* PCA0CPMn                            */
501 #define PWM16             0x80    /* PCA0CPMn                            */
502 #define PINRSF            0x01    /* RSTSRC                              */
503 #define PORSF             0x02    /* RSTSRC                              */
504 #define MCDRSF            0x04    /* RSTSRC                              */
505 #define WDTRSF            0x08    /* RSTSRC                              */
506 #define SWRSF             0x10    /* RSTSRC                              */
507 #define C0RSEF            0x20    /* RSTSRC                              */
508 #define CNVRSEF           0x40    /* RSTSRC                              */
509
510
511 /* SFR PAGE DEFINITIONS */
512
513 #define CONFIG_PAGE       0x0F     /* SYSTEM AND PORT CONFIGURATION PAGE */
514 #define LEGACY_PAGE       0x00     /* LEGACY SFR PAGE                    */
515 #define TIMER01_PAGE      0x00     /* TIMER 0 AND TIMER 1                */
516 #define CPT0_PAGE         0x01     /* COMPARATOR 0                       */
517 #define CPT1_PAGE         0x02     /* COMPARATOR 1                       */
518 #define UART0_PAGE        0x00     /* UART 0                             */
519 #define UART1_PAGE        0x01     /* UART 1                             */
520 #define SPI0_PAGE         0x00     /* SPI 0                              */
521 #define EMI0_PAGE         0x00     /* EXTERNAL MEMORY INTERFACE          */
522 #define ADC0_PAGE         0x00     /* ADC 0                              */
523 #define ADC2_PAGE         0x02     /* ADC 2                              */
524 #define SMB0_PAGE         0x00     /* SMBUS 0                            */
525 #define TMR2_PAGE         0x00     /* TIMER 2                            */
526 #define TMR3_PAGE         0x01     /* TIMER 3                            */
527 #define TMR4_PAGE         0x02     /* TIMER 4                            */
528 #define DAC0_PAGE         0x00     /* DAC 0                              */
529 #define DAC1_PAGE         0x01     /* DAC 1                              */
530 #define PCA0_PAGE         0x00     /* PCA 0                              */
531 #define PLL0_PAGE         0x0F     /* PLL 0                              */
532 #define MAC0_PAGE         0x03     /* MULTIPLY / ACCUMULATE 0            */
533
534 #endif