]> git.gag.com Git - fw/sdcc/blob - device/include/mcs51/c8051f120.h
* device/lib/medium/Makefile: added for new memory model medium
[fw/sdcc] / 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 PS              ;  /* SERIAL PORT PRIORITY                          */
356 __sbit __at 0xBD PT2             ;  /* TIMER 2 PRIORITY                              */
357
358 /* SMB0CN 0xC0 */
359 __sbit __at 0xC0 SMBTOE          ;  /* SMBUS 0 TIMEOUT ENABLE                        */
360 __sbit __at 0xC1 SMBFTE          ;  /* SMBUS 0 FREE TIMER ENABLE                     */
361 __sbit __at 0xC2 AA              ;  /* SMBUS 0 ASSERT/ACKNOWLEDGE FLAG               */
362 __sbit __at 0xC3 SI              ;  /* SMBUS 0 INTERRUPT PENDING FLAG                */
363 __sbit __at 0xC4 STO             ;  /* SMBUS 0 STOP FLAG                             */
364 __sbit __at 0xC5 STA             ;  /* SMBUS 0 START FLAG                            */
365 __sbit __at 0xC6 ENSMB           ;  /* SMBUS 0 ENABLE                                */
366 __sbit __at 0xC7 BUSY            ;  /* SMBUS 0 BUSY                                  */
367
368 /* MAC0STA 0xC0 */
369 __sbit __at 0xC0 MAC0N           ;  /* MAC 0 NEGATIVE FLAG                           */
370 __sbit __at 0xC1 MAC0SO          ;  /* MAC 0 SOFT OVERFLOW FLAG                      */
371 __sbit __at 0xC2 MAC0Z           ;  /* MAC 0 ZERO FLAG                               */
372 __sbit __at 0xC3 MAC0HO          ;  /* MAC 0 HARD OVERFLOW FLAG                      */
373
374 /*  TMR2CN  0xC8 */
375 __sbit __at 0xC8 CPRL2           ;  /* TIMER 2 CAPTURE SELECT                        */
376 __sbit __at 0xC9 CT2             ;  /* TIMER 2 COUNTER SELECT                        */
377 __sbit __at 0xCA TR2             ;  /* TIMER 2 ON/OFF CONTROL                        */
378 __sbit __at 0xCB EXEN2           ;  /* TIMER 2 EXTERNAL ENABLE FLAG                  */
379 __sbit __at 0xCE EXF2            ;  /* TIMER 2 EXTERNAL FLAG                         */
380 __sbit __at 0xCF TF2             ;  /* TIMER 2 OVERFLOW FLAG                         */
381
382 /*  TMR3CN  0xC8 */
383 __sbit __at 0xC8 CPRL3           ;  /* TIMER 3 CAPTURE SELECT                        */
384 __sbit __at 0xC9 CT3             ;  /* TIMER 3 COUNTER SELECT                        */
385 __sbit __at 0xCA TR3             ;  /* TIMER 3 ON/OFF CONTROL                        */
386 __sbit __at 0xCB EXEN3           ;  /* TIMER 3 EXTERNAL ENABLE FLAG                  */
387 __sbit __at 0xCE EXF3            ;  /* TIMER 3 EXTERNAL FLAG                         */
388 __sbit __at 0xCF TF3             ;  /* TIMER 3 OVERFLOW FLAG                         */
389
390 /*  TMR4CN  0xC8 */
391 __sbit __at 0xC8 CPRL4           ;  /* TIMER 4 CAPTURE SELECT                        */
392 __sbit __at 0xC9 CT4             ;  /* TIMER 4 COUNTER SELECT                        */
393 __sbit __at 0xCA TR4             ;  /* TIMER 4 ON/OFF CONTROL                        */
394 __sbit __at 0xCB EXEN4           ;  /* TIMER 4 EXTERNAL ENABLE FLAG                  */
395 __sbit __at 0xCE EXF4            ;  /* TIMER 4 EXTERNAL FLAG                         */
396 __sbit __at 0xCF TF4             ;  /* TIMER 4 OVERFLOW FLAG                         */
397
398 /*  P4  0xC8 */
399 __sbit __at 0xC8 P4_0            ;
400 __sbit __at 0xC9 P4_1            ;
401 __sbit __at 0xCA P4_2            ;
402 __sbit __at 0xCB P4_3            ;
403 __sbit __at 0xCC P4_4            ;
404 __sbit __at 0xCD P4_5            ;
405 __sbit __at 0xCE P4_6            ;
406 __sbit __at 0xCF P4_7            ;
407
408 /*  PSW  0xD0 */
409 __sbit __at 0xD0 P               ;  /* ACCUMULATOR PARITY FLAG                       */
410 __sbit __at 0xD1 F1              ;  /* USER FLAG 1                                   */
411 __sbit __at 0xD2 OV              ;  /* OVERFLOW FLAG                                 */
412 __sbit __at 0xD3 RS0             ;  /* REGISTER BANK SELECT 0                        */
413 __sbit __at 0xD4 RS1             ;  /* REGISTER BANK SELECT 1                        */
414 __sbit __at 0xD5 F0              ;  /* USER FLAG 0                                   */
415 __sbit __at 0xD6 AC              ;  /* AUXILIARY CARRY FLAG                          */
416 __sbit __at 0xD7 CY              ;  /* CARRY FLAG                                    */
417
418 /* PCA0CN D8H */
419 __sbit __at 0xD8 CCF0            ;  /* PCA 0 MODULE 0 INTERRUPT FLAG                 */
420 __sbit __at 0xD9 CCF1            ;  /* PCA 0 MODULE 1 INTERRUPT FLAG                 */
421 __sbit __at 0xDA CCF2            ;  /* PCA 0 MODULE 2 INTERRUPT FLAG                 */
422 __sbit __at 0xDB CCF3            ;  /* PCA 0 MODULE 3 INTERRUPT FLAG                 */
423 __sbit __at 0xDC CCF4            ;  /* PCA 0 MODULE 4 INTERRUPT FLAG                 */
424 __sbit __at 0xDD CCF5            ;  /* PCA 0 MODULE 5 INTERRUPT FLAG                 */
425 __sbit __at 0xDE CR              ;  /* PCA 0 COUNTER RUN CONTROL BIT                 */
426 __sbit __at 0xDF CF              ;  /* PCA 0 COUNTER OVERFLOW FLAG                   */
427
428 /*  P5  0xD8 */
429 __sbit __at 0xD8 P5_0            ;
430 __sbit __at 0xD9 P5_1            ;
431 __sbit __at 0xDA P5_2            ;
432 __sbit __at 0xDB P5_3            ;
433 __sbit __at 0xDC P5_4            ;
434 __sbit __at 0xDD P5_5            ;
435 __sbit __at 0xDE P5_6            ;
436 __sbit __at 0xDF P5_7            ;
437
438 /* ADC0CN E8H */
439 __sbit __at 0xE8 AD0LJST         ;  /* ADC 0 RIGHT JUSTIFY DATA BIT                  */
440 __sbit __at 0xE9 AD0WINT         ;  /* ADC 0 WINDOW INTERRUPT FLAG                   */
441 __sbit __at 0xEA AD0CM0          ;  /* ADC 0 CONVERT START MODE BIT 0                */
442 __sbit __at 0xEB AD0CM1          ;  /* ADC 0 CONVERT START MODE BIT 1                */
443 __sbit __at 0xEC AD0BUSY         ;  /* ADC 0 BUSY FLAG                               */
444 __sbit __at 0xED AD0INT          ;  /* ADC 0 EOC INTERRUPT FLAG                      */
445 __sbit __at 0xEE AD0TM           ;  /* ADC 0 TRACK MODE                              */
446 __sbit __at 0xEF AD0EN           ;  /* ADC 0 ENABLE                                  */
447
448 /* ADC2CN E8H */
449 __sbit __at 0xE8 AD2WINT         ;  /* ADC 2 WINDOW INTERRUPT FLAG                   */
450 __sbit __at 0xE9 AD2CM0          ;  /* ADC 2 CONVERT START MODE BIT 0                */
451 __sbit __at 0xEA AD2CM1          ;  /* ADC 2 CONVERT START MODE BIT 1                */
452 __sbit __at 0xEB AD2CM2          ;  /* ADC 2 CONVERT START MODE BIT 2                */
453 __sbit __at 0xEC AD2BUSY         ;  /* ADC 2 BUSY FLAG                               */
454 __sbit __at 0xED AD2INT          ;  /* ADC 2 EOC INTERRUPT FLAG                      */
455 __sbit __at 0xEE AD2TM           ;  /* ADC 2 TRACK MODE                              */
456 __sbit __at 0xEF AD2EN           ;  /* ADC 2 ENABLE                                  */
457
458 /*  P6  0xE8 */
459 __sbit __at 0xE8 P6_0            ;
460 __sbit __at 0xE9 P6_1            ;
461 __sbit __at 0xEA P6_2            ;
462 __sbit __at 0xEB P6_3            ;
463 __sbit __at 0xEC P6_4            ;
464 __sbit __at 0xED P6_5            ;
465 __sbit __at 0xEE P6_6            ;
466 __sbit __at 0xEF P6_7            ;
467
468 /* SPI0CN F8H */
469 __sbit __at 0xF8 SPIEN           ;  /* SPI 0 SPI ENABLE                              */
470 __sbit __at 0xF9 TXBMT           ;  /* SPI 0 TX BUFFER EMPTY FLAG                    */
471 __sbit __at 0xFA NSSMD0          ;  /* SPI 0 SLAVE SELECT MODE 0                     */
472 __sbit __at 0xFB NSSMD1          ;  /* SPI 0 SLAVE SELECT MODE 1                     */
473 __sbit __at 0xFC RXOVRN          ;  /* SPI 0 RX OVERRUN FLAG                         */
474 __sbit __at 0xFD MODF            ;  /* SPI 0 MODE FAULT FLAG                         */
475 __sbit __at 0xFE WCOL            ;  /* SPI 0 WRITE COLLISION FLAG                    */
476 __sbit __at 0xFF SPIF            ;  /* SPI 0 INTERRUPT FLAG                          */
477
478 /*  P7  0xF8 */
479 __sbit __at 0xF8 P7_0            ;
480 __sbit __at 0xF9 P7_1            ;
481 __sbit __at 0xFA P7_2            ;
482 __sbit __at 0xFB P7_3            ;
483 __sbit __at 0xFC P7_4            ;
484 __sbit __at 0xFD P7_5            ;
485 __sbit __at 0xFE P7_6            ;
486 __sbit __at 0xFF P7_7            ;
487
488
489 /* Predefined SFR Bit Masks */
490
491 #define IDLE              0x01    /* PCON                                */
492 #define STOP              0x02    /* PCON                                */
493 #define ECCF              0x01    /* PCA0CPMn                            */
494 #define PWM               0x02    /* PCA0CPMn                            */
495 #define TOG               0x04    /* PCA0CPMn                            */
496 #define MAT               0x08    /* PCA0CPMn                            */
497 #define CAPN              0x10    /* PCA0CPMn                            */
498 #define CAPP              0x20    /* PCA0CPMn                            */
499 #define ECOM              0x40    /* PCA0CPMn                            */
500 #define PWM16             0x80    /* PCA0CPMn                            */
501 #define PINRSF            0x01    /* RSTSRC                              */
502 #define PORSF             0x02    /* RSTSRC                              */
503 #define SWRSF             0x10    /* RSTSRC                              */
504
505
506 /* SFR PAGE DEFINITIONS */
507
508 #define CONFIG_PAGE       0x0F     /* SYSTEM AND PORT CONFIGURATION PAGE */
509 #define LEGACY_PAGE       0x00     /* LEGACY SFR PAGE                    */
510 #define TIMER01_PAGE      0x00     /* TIMER 0 AND TIMER 1                */
511 #define CPT0_PAGE         0x01     /* COMPARATOR 0                       */
512 #define CPT1_PAGE         0x02     /* COMPARATOR 1                       */
513 #define UART0_PAGE        0x00     /* UART 0                             */
514 #define UART1_PAGE        0x01     /* UART 1                             */
515 #define SPI0_PAGE         0x00     /* SPI 0                              */
516 #define EMI0_PAGE         0x00     /* EXTERNAL MEMORY INTERFACE          */
517 #define ADC0_PAGE         0x00     /* ADC 0                              */
518 #define ADC2_PAGE         0x02     /* ADC 2                              */
519 #define SMB0_PAGE         0x00     /* SMBUS 0                            */
520 #define TMR2_PAGE         0x00     /* TIMER 2                            */
521 #define TMR3_PAGE         0x01     /* TIMER 3                            */
522 #define TMR4_PAGE         0x02     /* TIMER 4                            */
523 #define DAC0_PAGE         0x00     /* DAC 0                              */
524 #define DAC1_PAGE         0x01     /* DAC 1                              */
525 #define PCA0_PAGE         0x00     /* PCA 0                              */
526 #define PLL0_PAGE         0x0F     /* PLL 0                              */
527 #define MAC0_PAGE         0x03     /* MULTIPLY / ACCUMULATE 0            */
528
529 #endif