7ef00e47256440979ae83196a7d61245e98aa009
[fw/sdcc] / device / include / mcs51 / c8051f060.h
1 /*-------------------------------------------------------------------------
2    Register Declarations for the Cygnal/SiLabs C8051F06x Processor Range
3
4    Copyright (C) 2004 - 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 C8051F060_H
22 #define C8051F060_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 0xB8 IP       ;  /* INTERRUPT PRIORITY                            */
41 sfr at 0xD0 PSW      ;  /* PROGRAM STATUS WORD                           */
42 sfr at 0xE0 ACC      ;  /* ACCUMULATOR                                   */
43 sfr at 0xE6 EIE1     ;  /* EXTERNAL INTERRUPT ENABLE 1                   */
44 sfr at 0xE7 EIE2     ;  /* EXTERNAL INTERRUPT ENABLE 2                   */
45 sfr at 0xF0 B        ;  /* B REGISTER                                    */
46 sfr at 0xF6 EIP1     ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 1        */
47 sfr at 0xF7 EIP2     ;  /* EXTERNAL INTERRUPT PRIORITY REGISTER 2        */
48 sfr at 0xFF WDTCN    ;  /* WATCHDOG TIMER CONTROL                        */
49
50 /*  Page 0x00 */
51 sfr at 0x88 TCON     ;  /* TIMER CONTROL                                 */
52 sfr at 0x89 TMOD     ;  /* TIMER MODE                                    */
53 sfr at 0x8A TL0      ;  /* TIMER 0 - LOW BYTE                            */
54 sfr at 0x8B TL1      ;  /* TIMER 1 - LOW BYTE                            */
55 sfr at 0x8C TH0      ;  /* TIMER 0 - HIGH BYTE                           */
56 sfr at 0x8D TH1      ;  /* TIMER 1 - HIGH BYTE                           */
57 sfr at 0x8E CKCON    ;  /* TIMER 0/1 CLOCK CONTROL                       */
58 sfr at 0x8F PSCTL    ;  /* FLASH WRITE/ERASE CONTROL                     */
59 sfr at 0x91 SSTA0    ;  /* UART 0 STATUS                                 */
60 sfr at 0x98 SCON0    ;  /* UART 0 CONTROL                                */
61 sfr at 0x98 SCON     ;  /* UART 0 CONTROL                                */
62 sfr at 0x99 SBUF0    ;  /* UART 0 BUFFER                                 */
63 sfr at 0x99 SBUF     ;  /* UART 0 BUFFER                                 */
64 sfr at 0x9A SPI0CFG  ;  /* SPI 0 CONFIGURATION                           */
65 sfr at 0x9B SPI0DAT  ;  /* SPI 0 DATA                                    */
66 sfr at 0x9D SPI0CKR  ;  /* SPI 0 CLOCK RATE CONTROL                      */
67 sfr at 0xA1 EMI0TC   ;  /* EMIF TIMING CONTROL                           */
68 sfr at 0xA2 EMI0CN   ;  /* EMIF CONTROL                                  */
69 sfr at 0xA2 _XPAGE   ;  /* XDATA/PDATA PAGE                              */
70 sfr at 0xA3 EMI0CF   ;  /* EMIF CONFIGURATION                            */
71 sfr at 0xA9 SADDR0   ;  /* UART 0 SLAVE ADDRESS                          */
72 sfr at 0xB7 FLSCL    ;  /* FLASH SCALE                                   */
73 sfr at 0xB9 SADEN0   ;  /* UART 0 SLAVE ADDRESS MASK                     */
74 sfr at 0xBB AMX0SL   ;  /* ADC 0 MUX CHANNEL SELECTION                   */
75 sfr at 0xBC ADC0CF   ;  /* ADC 0 CONFIGURATION                           */
76 sfr at 0xBE ADC0L    ;  /* ADC 0 DATA - LOW BYTE                         */
77 sfr at 0xBF ADC0H    ;  /* ADC 0 DATA - HIGH BYTE                        */
78 sfr at 0xC0 SMB0CN   ;  /* SMBUS 0 CONTROL                               */
79 sfr at 0xC1 SMB0STA  ;  /* SMBUS 0 STATUS                                */
80 sfr at 0xC2 SMB0DAT  ;  /* SMBUS 0 DATA                                  */
81 sfr at 0xC3 SMB0ADR  ;  /* SMBUS 0 SLAVE ADDRESS                         */
82 sfr at 0xC4 ADC0GTL  ;  /* ADC 0 GREATER-THAN REGISTER - LOW BYTE        */
83 sfr at 0xC5 ADC0GTH  ;  /* ADC 0 GREATER-THAN REGISTER - HIGH BYTE       */
84 sfr at 0xC6 ADC0LTL  ;  /* ADC 0 LESS-THAN REGISTER - LOW BYTE           */
85 sfr at 0xC7 ADC0LTH  ;  /* ADC 0 LESS-THAN REGISTER - HIGH BYTE          */
86 sfr at 0xC8 TMR2CN   ;  /* TIMER 2 CONTROL                               */
87 sfr at 0xC9 TMR2CF   ;  /* TIMER 2 CONFIGURATION                         */
88 sfr at 0xCA RCAP2L   ;  /* TIMER 2 CAPTURE REGISTER - LOW BYTE           */
89 sfr at 0xCB RCAP2H   ;  /* TIMER 2 CAPTURE REGISTER - HIGH BYTE          */
90 sfr at 0xCC TMR2L    ;  /* TIMER 2 - LOW BYTE                            */
91 sfr at 0xCC TL2      ;  /* TIMER 2 - LOW BYTE                            */
92 sfr at 0xCD TMR2H    ;  /* TIMER 2 - HIGH BYTE                           */
93 sfr at 0xCD TH2      ;  /* TIMER 2 - HIGH BYTE                           */
94 sfr at 0xCF SMB0CR   ;  /* SMBUS 0 CLOCK RATE                            */
95 sfr at 0xD1 REF0CN   ;  /* VOLTAGE REFERENCE 0 CONTROL                   */
96 sfr at 0xD2 DAC0L    ;  /* DAC 0 REGISTER - LOW BYTE                     */
97 sfr at 0xD3 DAC0H    ;  /* DAC 0 REGISTER - HIGH BYTE                    */
98 sfr at 0xD4 DAC0CN   ;  /* DAC 0 CONTROL                                 */
99 sfr at 0xD8 PCA0CN   ;  /* PCA 0 COUNTER CONTROL                         */
100 sfr at 0xD9 PCA0MD   ;  /* PCA 0 COUNTER MODE                            */
101 sfr at 0xDA PCA0CPM0 ;  /* PCA 0 MODULE 0 CONTROL                        */
102 sfr at 0xDB PCA0CPM1 ;  /* PCA 0 MODULE 1 CONTROL                        */
103 sfr at 0xDC PCA0CPM2 ;  /* PCA 0 MODULE 2 CONTROL                        */
104 sfr at 0xDD PCA0CPM3 ;  /* PCA 0 MODULE 3 CONTROL                        */
105 sfr at 0xDE PCA0CPM4 ;  /* PCA 0 MODULE 4 CONTROL                        */
106 sfr at 0xDF PCA0CPM5 ;  /* PCA 0 MODULE 5 CONTROL                        */
107 sfr at 0xE1 PCA0CPL5 ;  /* PCA 0 MODULE 5 CAPTURE/COMPARE - LOW BYTE     */
108 sfr at 0xE2 PCA0CPH5 ;  /* PCA 0 MODULE 5 CAPTURE/COMPARE - HIGH BYTE    */
109 sfr at 0xE8 ADC0CN   ;  /* ADC 0 CONTROL                                 */
110 sfr at 0xE9 PCA0CPL2 ;  /* PCA 0 MODULE 2 CAPTURE/COMPARE - LOW BYTE     */
111 sfr at 0xEA PCA0CPH2 ;  /* PCA 0 MODULE 2 CAPTURE/COMPARE - HIGH BYTE    */
112 sfr at 0xEB PCA0CPL3 ;  /* PCA 0 MODULE 3 CAPTURE/COMPARE - LOW BYTE     */
113 sfr at 0xEC PCA0CPH3 ;  /* PCA 0 MODULE 3 CAPTURE/COMPARE - HIGH BYTE    */
114 sfr at 0xED PCA0CPL4 ;  /* PCA 0 MODULE 4 CAPTURE/COMPARE - LOW BYTE     */
115 sfr at 0xEE PCA0CPH4 ;  /* PCA 0 MODULE 4 CAPTURE/COMPARE - HIGH BYTE    */
116 sfr at 0xEF RSTSRC   ;  /* RESET SOURCE                                  */
117 sfr at 0xF8 SPI0CN   ;  /* SPI 0 CONTROL                                 */
118 sfr at 0xF9 PCA0L    ;  /* PCA 0 TIMER - LOW BYTE                        */
119 sfr at 0xFA PCA0H    ;  /* PCA 0 TIMER - HIGH BYTE                       */
120 sfr at 0xFB PCA0CPL0 ;  /* PCA 0 MODULE 0 CAPTURE/COMPARE - LOW BYTE     */
121 sfr at 0xFC PCA0CPH0 ;  /* PCA 0 MODULE 0 CAPTURE/COMPARE - HIGH BYTE    */
122 sfr at 0xFD PCA0CPL1 ;  /* PCA 0 MODULE 1 CAPTURE/COMPARE - LOW BYTE     */
123 sfr at 0xFE PCA0CPH1 ;  /* PCA 0 MODULE 1 CAPTURE/COMPARE - HIGH BYTE    */
124
125 /*  Page 0x01 */
126 sfr at 0x88 CPT0CN   ;  /* COMPARATOR 0 CONTROL                          */
127 sfr at 0x89 CPT0MD   ;  /* COMPARATOR 0 CONFIGURATION                    */
128 sfr at 0x98 SCON1    ;  /* UART 1 CONTROL                                */
129 sfr at 0x99 SBUF1    ;  /* UART 1 BUFFER                                 */
130 sfr at 0xBC ADC1CF   ;  /* ADC 1 CONFIGURATION                           */
131 sfr at 0xBE ADC1L    ;  /* ADC 1 DATA - LOW BYTE                         */
132 sfr at 0xBF ADC1H    ;  /* ADC 1 DATA - HIGH BYTE                        */
133 sfr at 0xC0 CAN0STA  ;  /* CAN 0 STATUS                                  */
134 sfr at 0xC8 TMR3CN   ;  /* TIMER 3 CONTROL                               */
135 sfr at 0xC9 TMR3CF   ;  /* TIMER 3 CONFIGURATION                         */
136 sfr at 0xCA RCAP3L   ;  /* TIMER 3 CAPTURE REGISTER - LOW BYTE           */
137 sfr at 0xCB RCAP3H   ;  /* TIMER 3 CAPTURE REGISTER - HIGH BYTE          */
138 sfr at 0xCC TMR3L    ;  /* TIMER 3 - LOW BYTE                            */
139 sfr at 0xCD TMR3H    ;  /* TIMER 3 - HIGH BYTE                           */
140 sfr at 0xD1 REF1CN   ;  /* VOLTAGE REFERENCE 1 CONTROL                   */
141 sfr at 0xD2 DAC1L    ;  /* DAC 1 REGISTER - LOW BYTE                     */
142 sfr at 0xD3 DAC1H    ;  /* DAC 1 REGISTER - HIGH BYTE                    */
143 sfr at 0xD4 DAC1CN   ;  /* DAC 1 CONTROL                                 */
144 sfr at 0xD8 CAN0DATL ;  /* CAN 0 DATA REGISTER LOW                       */
145 sfr at 0xD9 CAN0DATH ;  /* CAN 0 DATA REGISTER HIGH                      */
146 sfr at 0xDA CAN0ADR  ;  /* CAN 0 ADDRESS                                 */
147 sfr at 0xDB CAN0TST  ;  /* CAN 0 TEST REGISTER                           */
148 sfr at 0xE8 ADC1CN   ;  /* ADC 1 CONTROL                                 */
149 sfr at 0xF8 CAN0CN   ;  /* CAN 0 CONTROL                                 */
150
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 ADC2L    ;  /* ADC 2 DATA - LOW BYTE                         */
158 sfr at 0xBF ADC2H    ;  /* ADC 2 DATA - HIGH BYTE                        */
159 sfr at 0xC4 ADC2GTL  ;  /* ADC 2 GREATER-THAN REGISTER - LOW BYTE        */
160 sfr at 0xC5 ADC2GTH  ;  /* ADC 2 GREATER-THAN REGISTER - HIGH BYTE       */
161 sfr at 0xC6 ADC2LTL  ;  /* ADC 2 LESS-THAN REGISTER - LOW BYTE           */
162 sfr at 0xC7 ADC2LTH  ;  /* ADC 2 LESS-THAN REGISTER - HIGH BYTE          */
163 sfr at 0xC8 TMR4CN   ;  /* TIMER 4 CONTROL                               */
164 sfr at 0xC9 TMR4CF   ;  /* TIMER 4 CONFIGURATION                         */
165 sfr at 0xCA RCAP4L   ;  /* TIMER 4 CAPTURE REGISTER - LOW BYTE           */
166 sfr at 0xCB RCAP4H   ;  /* TIMER 4 CAPTURE REGISTER - HIGH BYTE          */
167 sfr at 0xCC TMR4L    ;  /* TIMER 4 - LOW BYTE                            */
168 sfr at 0xCD TMR4H    ;  /* TIMER 4 - HIGH BYTE                           */
169 sfr at 0xD1 REF2CN   ;  /* VOLTAGE REFERENCE 2 CONTROL                   */
170 sfr at 0xE8 ADC2CN   ;  /* ADC 2 CONTROL                                 */
171
172 /*  Page 0x03 */
173 sfr at 0x88 CPT2CN   ;  /* COMPARATOR 2 CONTROL                          */
174 sfr at 0x89 CPT2MD   ;  /* COMPARATOR 2 CONFIGURATION                    */
175 sfr at 0xD8 DMA0CN   ;  /* DMA0 CONTROL                                  */
176 sfr at 0xD9 DMA0DAL  ;  /* DMA0 DATA ADDRESS BEGINNING LOW BYTE          */
177 sfr at 0xDA DMA0DAH  ;  /* DMA0 DATA ADDRESS BEGINNING HIGH BYTE         */
178 sfr at 0xDB DMA0DSL  ;  /* DMA0 DATA ADDRESS POINTER LOW BYTE            */
179 sfr at 0xDC DMA0DSH  ;  /* DMA0 DATA ADDRESS POINTER HIGH BYTE           */
180 sfr at 0xDD DMA0IPT  ;  /* DMA0 INSTRUCTION WRITE ADDRESS                */
181 sfr at 0xDE DMA0IDT  ;  /* DMA0 INSTRUCTION WRITE DATA                   */
182 sfr at 0xF8 DMA0CF   ;  /* DMA0 CONFIGURATION                            */
183 sfr at 0xF9 DMA0CTL  ;  /* DMA0 REPEAT COUNTER LIMIT LOW BYTE            */
184 sfr at 0xFA DMA0CTH  ;  /* DMA0 REPEAT COUNTER LIMIT HIGH BYTE           */
185 sfr at 0xFB DMA0CSL  ;  /* DMA0 REPEAT COUNTER STATUS LOW BYTE           */
186 sfr at 0xFC DMA0CSH  ;  /* DMA0 REPEAT COUNTER STATUS HIGH BYTE          */
187 sfr at 0xFD DMA0BND  ;  /* DMA0 INSTRUCTION BOUNDARY                     */
188 sfr at 0xFE DMA0ISW  ;  /* DMA0 INSTRUCTION STATUS                       */
189
190 /*  Page 0x0F */
191 sfr at 0x8A OSCICN   ;  /* INTERNAL OSCILLATOR CONTROL                   */
192 sfr at 0x8B OSCICL   ;  /* INTERNAL OSCILLATOR CALIBRATION               */
193 sfr at 0x8C OSCXCN   ;  /* EXTERNAL OSCILLATOR CONTROL                   */
194 sfr at 0x96 SFRPGCN  ;  /* SFR PAGE CONTROL                              */
195 sfr at 0x97 CLKSEL   ;  /* SYSTEM CLOCK SELECT                           */
196 sfr at 0x9C P4MDOUT  ;  /* PORT 4 OUTPUT MODE                            */
197 sfr at 0x9D P5MDOUT  ;  /* PORT 5 OUTPUT MODE                            */
198 sfr at 0x9E P6MDOUT  ;  /* PORT 6 OUTPUT MODE                            */
199 sfr at 0x9F P7MDOUT  ;  /* PORT 7 OUTPUT MODE                            */
200 sfr at 0xA4 P0MDOUT  ;  /* PORT 0 OUTPUT MODE                            */
201 sfr at 0xA5 P1MDOUT  ;  /* PORT 1 OUTPUT MODE                            */
202 sfr at 0xA6 P2MDOUT  ;  /* PORT 2 OUTPUT MODE CONFIGURATION              */
203 sfr at 0xA7 P3MDOUT  ;  /* PORT 3 OUTPUT MODE CONFIGURATION              */
204 sfr at 0xAD P1MDIN   ;  /* PORT 1 INPUT MODE                             */
205 sfr at 0xAE P2MDIN   ;  /* PORT 2 INPUT MODE                             */
206 sfr at 0xB7 FLACL    ;  /* FLASH ACCESS LIMIT                            */
207 sfr at 0xBA ADC0CPT  ;  /* ADC0 CALIBRATION POINTER                      */
208 sfr at 0xBB ADC0CCF  ;  /* ADC0 CALIBRATION COEFFICIENT                  */
209 sfr at 0xC8 P4       ;  /* PORT 4                                        */
210 sfr at 0xD8 P5       ;  /* PORT 5                                        */
211 sfr at 0xE1 XBR0     ;  /* CROSSBAR CONFIGURATION REGISTER 0             */
212 sfr at 0xE2 XBR1     ;  /* CROSSBAR CONFIGURATION REGISTER 1             */
213 sfr at 0xE3 XBR2     ;  /* CROSSBAR CONFIGURATION REGISTER 2             */
214 sfr at 0xE4 XBR3     ;  /* CROSSBAR CONFIGURATION REGISTER 3             */
215 sfr at 0xE8 P6       ;  /* PORT 6                                        */
216 sfr at 0xF8 P7       ;  /* PORT 7                                        */
217
218
219 /*  BIT Registers  */
220
221 /*  P0  0x80 */
222 sbit at 0x80 P0_0    ;
223 sbit at 0x81 P0_1    ;
224 sbit at 0x82 P0_2    ;
225 sbit at 0x83 P0_3    ;
226 sbit at 0x84 P0_4    ;
227 sbit at 0x85 P0_5    ;
228 sbit at 0x86 P0_6    ;
229 sbit at 0x87 P0_7    ;
230
231 /*  TCON  0x88 */
232 sbit at 0x88 IT0     ;  /* EXT. INTERRUPT 0 TYPE                         */
233 sbit at 0x89 IE0     ;  /* EXT. INTERRUPT 0 EDGE FLAG                    */
234 sbit at 0x8A IT1     ;  /* EXT. INTERRUPT 1 TYPE                         */
235 sbit at 0x8B IE1     ;  /* EXT. INTERRUPT 1 EDGE FLAG                    */
236 sbit at 0x8C TR0     ;  /* TIMER 0 ON/OFF CONTROL                        */
237 sbit at 0x8D TF0     ;  /* TIMER 0 OVERFLOW FLAG                         */
238 sbit at 0x8E TR1     ;  /* TIMER 1 ON/OFF CONTROL                        */
239 sbit at 0x8F TF1     ;  /* TIMER 1 OVERFLOW FLAG                         */
240
241 /*  CPT0CN  0x88 */
242 sbit at 0x88 CP0HYN0 ;  /* COMPARATOR 0 NEGATIVE HYSTERESIS 0            */
243 sbit at 0x89 CP0HYN1 ;  /* COMPARATOR 0 NEGATIVE HYSTERESIS 1            */
244 sbit at 0x8A CP0HYP0 ;  /* COMPARATOR 0 POSITIVE HYSTERESIS 0            */
245 sbit at 0x8B CP0HYP1 ;  /* COMPARATOR 0 POSITIVE HYSTERESIS 1            */
246 sbit at 0x8C CP0FIF  ;  /* COMPARATOR 0 FALLING EDGE INTERRUPT           */
247 sbit at 0x8D CP0RIF  ;  /* COMPARATOR 0 RISING EDGE INTERRUPT            */
248 sbit at 0x8E CP0OUT  ;  /* COMPARATOR 0 OUTPUT                           */
249 sbit at 0x8F CP0EN   ;  /* COMPARATOR 0 ENABLE                           */
250
251 /*  CPT1CN  0x88 */
252 sbit at 0x88 CP1HYN0 ;  /* COMPARATOR 1 NEGATIVE HYSTERESIS 0            */
253 sbit at 0x89 CP1HYN1 ;  /* COMPARATOR 1 NEGATIVE HYSTERESIS 1            */
254 sbit at 0x8A CP1HYP0 ;  /* COMPARATOR 1 POSITIVE HYSTERESIS 0            */
255 sbit at 0x8B CP1HYP1 ;  /* COMPARATOR 1 POSITIVE HYSTERESIS 1            */
256 sbit at 0x8C CP1FIF  ;  /* COMPARATOR 1 FALLING EDGE INTERRUPT           */
257 sbit at 0x8D CP1RIF  ;  /* COMPARATOR 1 RISING EDGE INTERRUPT            */
258 sbit at 0x8E CP1OUT  ;  /* COMPARATOR 1 OUTPUT                           */
259 sbit at 0x8F CP1EN   ;  /* COMPARATOR 1 ENABLE                           */
260
261 /*  CPT2CN  0x88 */
262 sbit at 0x88 CP2HYN0 ;  /* COMPARATOR 2 NEGATIVE HYSTERESIS 0            */
263 sbit at 0x89 CP2HYN1 ;  /* COMPARATOR 2 NEGATIVE HYSTERESIS 1            */
264 sbit at 0x8A CP2HYP0 ;  /* COMPARATOR 2 POSITIVE HYSTERESIS 0            */
265 sbit at 0x8B CP2HYP1 ;  /* COMPARATOR 2 POSITIVE HYSTERESIS 1            */
266 sbit at 0x8C CP2FIF  ;  /* COMPARATOR 2 FALLING EDGE INTERRUPT           */
267 sbit at 0x8D CP2RIF  ;  /* COMPARATOR 2 RISING EDGE INTERRUPT            */
268 sbit at 0x8E CP2OUT  ;  /* COMPARATOR 2 OUTPUT                           */
269 sbit at 0x8F CP2EN   ;  /* COMPARATOR 2 ENABLE                           */
270
271 /*  P1  0x90 */
272 sbit at 0x90 P1_0    ;
273 sbit at 0x91 P1_1    ;
274 sbit at 0x92 P1_2    ;
275 sbit at 0x93 P1_3    ;
276 sbit at 0x94 P1_4    ;
277 sbit at 0x95 P1_5    ;
278 sbit at 0x96 P1_6    ;
279 sbit at 0x97 P1_7    ;
280
281 /*  SCON0  0x98 */
282 sbit at 0x98 RI0     ;  /* UART 0 RX INTERRUPT FLAG                      */
283 sbit at 0x98 RI      ;  /* UART 0 RX INTERRUPT FLAG                      */
284 sbit at 0x99 TI0     ;  /* UART 0 TX INTERRUPT FLAG                      */
285 sbit at 0x99 TI      ;  /* UART 0 TX INTERRUPT FLAG                      */
286 sbit at 0x9A RB80    ;  /* UART 0 RX BIT 8                               */
287 sbit at 0x9B TB80    ;  /* UART 0 TX BIT 8                               */
288 sbit at 0x9C REN0    ;  /* UART 0 RX ENABLE                              */
289 sbit at 0x9C REN     ;  /* UART 0 RX ENABLE                              */
290 sbit at 0x9D SM20    ;  /* UART 0 MULTIPROCESSOR EN                      */
291 sbit at 0x9E SM10    ;  /* UART 0 MODE 1                                 */
292 sbit at 0x9F SM00    ;  /* UART 0 MODE 0                                 */
293
294 /*  SCON1  0x98 */
295 sbit at 0x98 RI1     ;  /* UART 1 RX INTERRUPT FLAG                      */
296 sbit at 0x99 TI1     ;  /* UART 1 TX INTERRUPT FLAG                      */
297 sbit at 0x9A RB81    ;  /* UART 1 RX BIT 8                               */
298 sbit at 0x9B TB81    ;  /* UART 1 TX BIT 8                               */
299 sbit at 0x9C REN1    ;  /* UART 1 RX ENABLE                              */
300 sbit at 0x9D MCE1    ;  /* UART 1 MCE                                    */
301 sbit at 0x9F S1MODE  ;  /* UART 1 MODE                                   */
302
303 /*  P2  0xA0 */
304 sbit at 0xA0 P2_0    ;
305 sbit at 0xA1 P2_1    ;
306 sbit at 0xA2 P2_2    ;
307 sbit at 0xA3 P2_3    ;
308 sbit at 0xA4 P2_4    ;
309 sbit at 0xA5 P2_5    ;
310 sbit at 0xA6 P2_6    ;
311 sbit at 0xA7 P2_7    ;
312
313 /*  IE  0xA8 */
314 sbit at 0xA8 EX0     ;  /* EXTERNAL INTERRUPT 0 ENABLE                   */
315 sbit at 0xA9 ET0     ;  /* TIMER 0 INTERRUPT ENABLE                      */
316 sbit at 0xAA EX1     ;  /* EXTERNAL INTERRUPT 1 ENABLE                   */
317 sbit at 0xAB ET1     ;  /* TIMER 1 INTERRUPT ENABLE                      */
318 sbit at 0xAC ES0     ;  /* UART0 INTERRUPT ENABLE                        */
319 sbit at 0xAC ES      ;  /* UART0 INTERRUPT ENABLE                        */
320 sbit at 0xAD ET2     ;  /* TIMER 2 INTERRUPT ENABLE                      */
321 sbit at 0xAF EA      ;  /* GLOBAL INTERRUPT ENABLE                       */
322
323 /*  P3  0xB0 */
324 sbit at 0xB0 P3_0    ;
325 sbit at 0xB1 P3_1    ;
326 sbit at 0xB2 P3_2    ;
327 sbit at 0xB3 P3_3    ;
328 sbit at 0xB4 P3_4    ;
329 sbit at 0xB5 P3_5    ;
330 sbit at 0xB6 P3_6    ;
331 sbit at 0xB7 P3_7    ;
332
333 /*  IP  0xB8 */
334 sbit at 0xB8 PX0     ;  /* EXTERNAL INTERRUPT 0 PRIORITY                 */
335 sbit at 0xB9 PT0     ;  /* TIMER 0 PRIORITY                              */
336 sbit at 0xBA PX1     ;  /* EXTERNAL INTERRUPT 1 PRIORITY                 */
337 sbit at 0xBB PT1     ;  /* TIMER 1 PRIORITY                              */
338 sbit at 0xBC PS      ;  /* SERIAL PORT PRIORITY                          */
339 sbit at 0xBD PT2     ;  /* TIMER 2 PRIORITY                              */
340
341 /*  SMB0CN  0xC0 */
342 sbit at 0xC0 SMBTOE  ;  /* SMBUS 0 TIMEOUT ENABLE                        */
343 sbit at 0xC1 SMBFTE  ;  /* SMBUS 0 FREE TIMER ENABLE                     */
344 sbit at 0xC2 AA      ;  /* SMBUS 0 ASSERT/ACKNOWLEDGE FLAG               */
345 sbit at 0xC3 SI      ;  /* SMBUS 0 INTERRUPT PENDING FLAG                */
346 sbit at 0xC4 STO     ;  /* SMBUS 0 STOP FLAG                             */
347 sbit at 0xC5 STA     ;  /* SMBUS 0 START FLAG                            */
348 sbit at 0xC6 ENSMB   ;  /* SMBUS 0 ENABLE                                */
349 sbit at 0xC7 BUSY    ;  /* SMBUS 0 BUSY                                  */
350
351 /*  CAN0STA  0xC0 */
352 sbit at 0xC3 CANTXOK ;  /* CAN TRANSMITTED A MESSAGE SUCCESSFULLY        */
353 sbit at 0xC4 CANRXOK ;  /* CAN RECEIVED A MESSAGE SUCCESSFULLY           */
354 sbit at 0xC5 CANEPASS;  /* CAN ERROR PASSIVE                             */
355 sbit at 0xC6 CANEWARN;  /* CAN WARNING STATUS                            */
356 sbit at 0xC7 CANBOFF ;  /* CAN BUSOFF STATUS                             */
357
358 /*  TMR2CN  0xC8 */
359 sbit at 0xC8 CPRL2   ;  /* TIMER 2 CAPTURE SELECT                        */
360 sbit at 0xC9 CT2     ;  /* TIMER 2 COUNTER SELECT                        */
361 sbit at 0xCA TR2     ;  /* TIMER 2 ON/OFF CONTROL                        */
362 sbit at 0xCB EXEN2   ;  /* TIMER 2 EXTERNAL ENABLE FLAG                  */
363 sbit at 0xCE EXF2    ;  /* TIMER 2 EXTERNAL FLAG                         */
364 sbit at 0xCF TF2     ;  /* TIMER 2 OVERFLOW FLAG                         */
365
366 /*  TMR3CN  0xC8 */
367 sbit at 0xC8 CPRL3   ;  /* TIMER 3 CAPTURE SELECT                        */
368 sbit at 0xC9 CT3     ;  /* TIMER 3 COUNTER SELECT                        */
369 sbit at 0xCA TR3     ;  /* TIMER 3 ON/OFF CONTROL                        */
370 sbit at 0xCB EXEN3   ;  /* TIMER 3 EXTERNAL ENABLE FLAG                  */
371 sbit at 0xCE EXF3    ;  /* TIMER 3 EXTERNAL FLAG                         */
372 sbit at 0xCF TF3     ;  /* TIMER 3 OVERFLOW FLAG                         */
373
374 /*  TMR4CN  0xC8 */
375 sbit at 0xC8 CPRL4   ;  /* TIMER 4 CAPTURE SELECT                        */
376 sbit at 0xC9 CT4     ;  /* TIMER 4 COUNTER SELECT                        */
377 sbit at 0xCA TR4     ;  /* TIMER 4 ON/OFF CONTROL                        */
378 sbit at 0xCB EXEN4   ;  /* TIMER 4 EXTERNAL ENABLE FLAG                  */
379 sbit at 0xCE EXF4    ;  /* TIMER 4 EXTERNAL FLAG                         */
380 sbit at 0xCF TF4     ;  /* TIMER 4 OVERFLOW FLAG                         */
381
382 /*  P4  0xC8 */
383 sbit at 0xC8 P4_0    ;
384 sbit at 0xC9 P4_1    ;
385 sbit at 0xCA P4_2    ;
386 sbit at 0xCB P4_3    ;
387 sbit at 0xCC P4_4    ;
388 sbit at 0xCD P4_5    ;
389 sbit at 0xCE P4_6    ;
390 sbit at 0xCF P4_7    ;
391
392 /*  PSW  0xD0 */
393 sbit at 0xD0 P       ;  /* ACCUMULATOR PARITY FLAG                       */
394 sbit at 0xD1 F1      ;  /* USER FLAG 1                                   */
395 sbit at 0xD2 OV      ;  /* OVERFLOW FLAG                                 */
396 sbit at 0xD3 RS0     ;  /* REGISTER BANK SELECT 0                        */
397 sbit at 0xD4 RS1     ;  /* REGISTER BANK SELECT 1                        */
398 sbit at 0xD5 F0      ;  /* USER FLAG 0                                   */
399 sbit at 0xD6 AC      ;  /* AUXILIARY CARRY FLAG                          */
400 sbit at 0xD7 CY      ;  /* CARRY FLAG                                    */
401
402 /*  PCA0CN  0xD8 */
403 sbit at 0xD8 CCF0    ;  /* PCA 0 MODULE 0 INTERRUPT FLAG                 */
404 sbit at 0xD9 CCF1    ;  /* PCA 0 MODULE 1 INTERRUPT FLAG                 */
405 sbit at 0xDA CCF2    ;  /* PCA 0 MODULE 2 INTERRUPT FLAG                 */
406 sbit at 0xDB CCF3    ;  /* PCA 0 MODULE 3 INTERRUPT FLAG                 */
407 sbit at 0xDC CCF4    ;  /* PCA 0 MODULE 4 INTERRUPT FLAG                 */
408 sbit at 0xDD CCF5    ;  /* PCA 0 MODULE 5 INTERRUPT FLAG                 */
409 sbit at 0xDE CR      ;  /* PCA 0 COUNTER RUN CONTROL BIT                 */
410 sbit at 0xDF CF      ;  /* PCA 0 COUNTER OVERFLOW FLAG                   */
411
412 /*  DMA0CN  0xD8 */
413 sbit at 0xD8 DMA0DO0 ;  /* ADC0 Data Overflow Warning Flag               */
414 sbit at 0xD9 DMA0DO1 ;  /* ADC1 Data Overflow Warning Flag               */
415 sbit at 0xDA DMA0DOE ;  /* Data Overflow Warning Interrupt Enable        */
416 sbit at 0xDB DMA0DE0 ;  /* ADC0 Data Overflow Error Flag                 */
417 sbit at 0xDC DMA0DE1 ;  /* ADC1 Data Overflow Error Flag                 */
418 sbit at 0xDD DMA0MD  ;  /* DMA0 Mode Select                              */
419 sbit at 0xDE DMA0INT ;  /* DMA0 Operations Complete Flag                 */
420 sbit at 0xDF DMA0EN  ;  /* DMA0 Enable                                   */
421
422 /*  P5  0xD8 */
423 sbit at 0xD8 P5_0    ;
424 sbit at 0xD9 P5_1    ;
425 sbit at 0xDA P5_2    ;
426 sbit at 0xDB P5_3    ;
427 sbit at 0xDC P5_4    ;
428 sbit at 0xDD P5_5    ;
429 sbit at 0xDE P5_6    ;
430 sbit at 0xDF P5_7    ;
431
432 /*  ADC0CN  0xE8 */
433 sbit at 0xE9 AD0WINT ;  /* ADC 0 WINDOW INTERRUPT FLAG                   */
434 sbit at 0xEA AD0CM0  ;  /* ADC 0 CONVERT START MODE BIT 0                */
435 sbit at 0xEB AD0CM1  ;  /* ADC 0 CONVERT START MODE BIT 1                */
436 sbit at 0xEC AD0BUSY ;  /* ADC 0 BUSY FLAG                               */
437 sbit at 0xED AD0INT  ;  /* ADC 0 EOC INTERRUPT FLAG                      */
438 sbit at 0xEE AD0TM   ;  /* ADC 0 TRACK MODE                              */
439 sbit at 0xEF AD0EN   ;  /* ADC 0 ENABLE                                  */
440
441 /*  ADC1CN  0xE8 */
442 sbit at 0xE9 AD1CM0  ;  /* ADC 1 CONVERT START MODE BIT 0                */
443 sbit at 0xEA AD1CM1  ;  /* ADC 1 CONVERT START MODE BIT 1                */
444 sbit at 0xEB AD1CM2  ;  /* ADC 1 CONVERT START MODE BIT 1                */
445 sbit at 0xEC AD1BUSY ;  /* ADC 1 BUSY FLAG                               */
446 sbit at 0xED AD1INT  ;  /* ADC 1 EOC INTERRUPT FLAG                      */
447 sbit at 0xEE AD1TM   ;  /* ADC 1 TRACK MODE                              */
448 sbit at 0xEF AD1EN   ;  /* ADC 1 ENABLE                                  */
449
450 /*  ADC2CN  0xE8 */
451 sbit at 0xE8 AD2LJST ;  /* ADC 2 LEFT JUSTIFY SELECT                     */
452 sbit at 0xE9 AD2WINT ;  /* ADC 2 WINDOW INTERRUPT FLAG                   */
453 sbit at 0xEA AD2CM0  ;  /* ADC 2 CONVERT START MODE BIT 0                */
454 sbit at 0xEB AD2CM1  ;  /* ADC 2 CONVERT START MODE BIT 1                */
455 sbit at 0xEC AD2BUSY ;  /* ADC 2 BUSY FLAG                               */
456 sbit at 0xED AD2INT  ;  /* ADC 2 EOC INTERRUPT FLAG                      */
457 sbit at 0xEE AD2TM   ;  /* ADC 2 TRACK MODE                              */
458 sbit at 0xEF AD2EN   ;  /* ADC 2 ENABLE                                  */
459
460 /*  P6  0xE8 */
461 sbit at 0xE8 P6_0    ;
462 sbit at 0xE9 P6_1    ;
463 sbit at 0xEA P6_2    ;
464 sbit at 0xEB P6_3    ;
465 sbit at 0xEC P6_4    ;
466 sbit at 0xED P6_5    ;
467 sbit at 0xEE P6_6    ;
468 sbit at 0xEF P6_7    ;
469
470 /*  SPI0CN  0xF8 */
471 sbit at 0xF8 SPIEN   ;  /* SPI 0 SPI ENABLE                              */
472 sbit at 0xF9 TXBMT   ;  /* SPI 0 TX BUFFER EMPTY FLAG                    */
473 sbit at 0xFA NSSMD0  ;  /* SPI 0 SLAVE SELECT MODE 0                     */
474 sbit at 0xFB NSSMD1  ;  /* SPI 0 SLAVE SELECT MODE 1                     */
475 sbit at 0xFC RXOVRN  ;  /* SPI 0 RX OVERRUN FLAG                         */
476 sbit at 0xFD MODF    ;  /* SPI 0 MODE FAULT FLAG                         */
477 sbit at 0xFE WCOL    ;  /* SPI 0 WRITE COLLISION FLAG                    */
478 sbit at 0xFF SPIF    ;  /* SPI 0 INTERRUPT FLAG                          */
479
480 /*  CAN0CN  0xF8 */
481 sbit at 0xF8 CANINIT ;  /* CAN INITIALIZATION                            */
482 sbit at 0xF9 CANIE   ;  /* CAN MODULE INTERRUPT ENABLE                   */
483 sbit at 0xFA CANSIE  ;  /* CAN STATUS CHANGE INTERRUPT ENABLE            */
484 sbit at 0xFB CANEIE  ;  /* CAN ERROR INTERRUPT ENABLE                    */
485 sbit at 0xFC CANIF   ;  /* CAN INTERRUPT FLAG                            */
486 sbit at 0xFD CANDAR  ;  /* CAN DISABLE AUTOMATIC RETRANSMISSION          */
487 sbit at 0xFE CANCCE  ;  /* CAN CONFIGURATION CHANGE ENABLE               */
488 sbit at 0xFF CANTEST ;  /* CAN TEST MODE ENABLE                          */
489
490 /*  DMA0CF  0xF8 */
491 sbit at 0xF8 DMA0EO  ;  /* END-OF-OPERATION FLAG                         */
492 sbit at 0xF9 DMA0EOE ;  /* END-OF-OPERATION INTERRUPT ENABLE             */
493 sbit at 0xFA DMA0CI  ;  /* REPEAT COUNTER OVERFLOW FLAG                  */
494 sbit at 0xFB DMA0CIE ;  /* REPEAT COUNTER OVERFLOW INTERRUPT ENABLE      */
495 sbit at 0xFE DMA0XBY ;  /* OFF-CHIP XRAM BUSY FLAG                       */
496 sbit at 0xFF DMA0HLT ;  /* HALT DMA0 OFF-CHIP XRAM ACCESS                */
497
498 /*  P7  0xF8 */
499 sbit at 0xF8 P7_0    ;
500 sbit at 0xF9 P7_1    ;
501 sbit at 0xFA P7_2    ;
502 sbit at 0xFB P7_3    ;
503 sbit at 0xFC P7_4    ;
504 sbit at 0xFD P7_5    ;
505 sbit at 0xFE P7_6    ;
506 sbit at 0xFF P7_7    ;
507
508
509 /* Predefined SFR Bit Masks */
510
511 #define IDLE              0x01    /* PCON                                */
512 #define STOP              0x02    /* PCON                                */
513 #define ECCF              0x01    /* PCA0CPMn                            */
514 #define PWM               0x02    /* PCA0CPMn                            */
515 #define TOG               0x04    /* PCA0CPMn                            */
516 #define MAT               0x08    /* PCA0CPMn                            */
517 #define CAPN              0x10    /* PCA0CPMn                            */
518 #define CAPP              0x20    /* PCA0CPMn                            */
519 #define ECOM              0x40    /* PCA0CPMn                            */
520 #define PWM16             0x80    /* PCA0CPMn                            */
521 #define PORSF             0x02    /* RSTSRC                              */
522 #define SWRSF             0x10    /* RSTSRC                              */
523
524
525 /* SFR PAGE DEFINITIONS */
526
527 #define CONFIG_PAGE       0x0F     /* SYSTEM AND PORT CONFIGURATION PAGE */
528 #define LEGACY_PAGE       0x00     /* LEGACY SFR PAGE                    */
529 #define TIMER01_PAGE      0x00     /* TIMER 0 AND TIMER 1                */
530 #define CPT0_PAGE         0x01     /* COMPARATOR 0                       */
531 #define CPT1_PAGE         0x02     /* COMPARATOR 1                       */
532 #define CPT2_PAGE         0x03     /* COMPARATOR 2                       */
533 #define UART0_PAGE        0x00     /* UART 0                             */
534 #define UART1_PAGE        0x01     /* UART 1                             */
535 #define SPI0_PAGE         0x00     /* SPI 0                              */
536 #define EMI0_PAGE         0x00     /* EXTERNAL MEMORY INTERFACE          */
537 #define ADC0_PAGE         0x00     /* ADC 0                              */
538 #define ADC1_PAGE         0x01     /* ADC 1                              */
539 #define ADC2_PAGE         0x02     /* ADC 2                              */
540 #define SMB0_PAGE         0x00     /* SMBUS 0                            */
541 #define TMR2_PAGE         0x00     /* TIMER 2                            */
542 #define TMR3_PAGE         0x01     /* TIMER 3                            */
543 #define TMR4_PAGE         0x02     /* TIMER 4                            */
544 #define DAC0_PAGE         0x00     /* DAC 0                              */
545 #define DAC1_PAGE         0x01     /* DAC 1                              */
546 #define PCA0_PAGE         0x00     /* PCA 0                              */
547 #define DMA0_PAGE         0x03     /* DMA 0                              */
548 #define CAN0_PAGE         0x01     /* CAN 0                              */
549
550 #endif