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