Imported Upstream version 2.9.0
[debian/cc1111] / device / include / mcs51 / C8051T610.h
1 /*-------------------------------------------------------------------------
2    Register Declarations for the SiLabs C8051T61x Processor Range
3
4    Copyright (C) 2008 - Steven Borley, steven.borley@partnerelectronics.com
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 C8051T610_H
22 #define C8051T610_H
23
24 #include <compiler.h>
25
26 /*  BYTE Registers  */
27
28 SFR(       P0, 0x80 )  ; /* PORT 0 */
29 SFR(       SP, 0x81 )  ; /* STACK POINTER */
30 SFR(      DPL, 0x82 )  ; /* DATA POINTER - LOW BYTE */
31 SFR(      DPH, 0x83 )  ; /* DATA POINTER - HIGH BYTE */
32 SFR(    TOFFL, 0x85 )  ; /* TEMPERATURE SENSOR OFFSET - LOW BYTE */
33 SFR(    TOFFH, 0x86 )  ; /* TEMPERATURE SENSOR OFFSET - HIGH BYTE */
34 SFR(     PCON, 0x87 )  ; /* POWER CONTROL */
35 SFR(     TCON, 0x88 )  ; /* TIMER CONTROL */
36 SFR(     TMOD, 0x89 )  ; /* TIMER MODE */
37 SFR(      TL0, 0x8A )  ; /* TIMER 0 - LOW BYTE */
38 SFR(      TL1, 0x8B )  ; /* TIMER 1 - LOW BYTE */
39 SFR(      TH0, 0x8C )  ; /* TIMER 0 - HIGH BYTE */
40 SFR(      TH1, 0x8D )  ; /* TIMER 1 - HIGH BYTE */
41 SFR(    CKCON, 0x8E )  ; /* CLOCK CONTROL */
42 SFR(       P1, 0x90 )  ; /* PORT 1 */
43 SFR(   TMR3CN, 0x91 )  ; /* TIMER 3 CONTROL */
44 SFR(  TMR3RLL, 0x92 )  ; /* TIMER 3 CAPTURE REGISTER - LOW BYTE */
45 SFR(  TMR3RLH, 0x93 )  ; /* TIMER 3 CAPTURE REGISTER - HIGH BYTE */
46 SFR(    TMR3L, 0x94 )  ; /* TIMER 3 - LOW BYTE */
47 SFR(    TMR3H, 0x95 )  ; /* TIMER 3 - HIGH BYTE */
48 SFR(     SCON, 0x98 )  ; /* SERIAL PORT CONTROL */
49 SFR(    SCON0, 0x98 )  ; /* SERIAL PORT CONTROL */
50 SFR(     SBUF, 0x99 )  ; /* SERIAL PORT BUFFER */
51 SFR(    SBUF0, 0x99 )  ; /* SERIAL PORT BUFFER */
52 SFR(   CPT1CN, 0x9A )  ; /* COMPARATOR 1 CONTROL */
53 SFR(   CPT0CN, 0x9B )  ; /* COMPARATOR 0 CONTROL */
54 SFR(   CPT1MD, 0x9C )  ; /* COMPARATOR 1 MODE SELECTION */
55 SFR(   CPT0MD, 0x9D )  ; /* COMPARATOR 0 MODE SELECTION */
56 SFR(   CPT1MX, 0x9E )  ; /* COMPARATOR 1 MUX SELECTION */
57 SFR(   CPT0MX, 0x9F )  ; /* COMPARATOR 0 MUX SELECTION */
58 SFR(       P2, 0xA0 )  ; /* PORT 2 */
59 SFR(  SPI0CFG, 0xA1 )  ; /* SPI0 CONFIGURATION */
60 SFR(  SPI0CKR, 0xA2 )  ; /* SPI0 CLOCK RATE CONTROL */
61 SFR(  SPI0DAT, 0xA3 )  ; /* SPI0 DATA */
62 SFR(  P0MDOUT, 0xA4 )  ; /* PORT 0 OUTPUT MODE CONFIGURATION */
63 SFR(  P1MDOUT, 0xA5 )  ; /* PORT 1 OUTPUT MODE CONFIGURATION */
64 SFR(  P2MDOUT, 0xA6 )  ; /* PORT 2 OUTPUT MODE CONFIGURATION */
65 SFR(  P3MDOUT, 0xA7 )  ; /* PORT 3 OUTPUT MODE CONFIGURATION */
66 SFR(       IE, 0xA8 )  ; /* INTERRUPT ENABLE */
67 SFR(   CLKSEL, 0xA9 )  ; /* SYSTEM CLOCK SELECT */
68 SFR(   EMI0CN, 0xAA )  ; /* EXTERNAL MEMORY INTERFACE CONTROL */
69 SFR(   _XPAGE, 0xAA )  ; /* XDATA/PDATA PAGE */
70 SFR(       P3, 0xB0 )  ; /* PORT 3 */
71 SFR(   OSCXCN, 0xB1 )  ; /* EXTERNAL OSCILLATOR CONTROL */
72 SFR(   OSCICN, 0xB2 )  ; /* INTERNAL OSCILLATOR CONTROL */
73 SFR(   OSCICL, 0xB3 )  ; /* INTERNAL OSCILLATOR CALIBRATION */
74 SFR(       IP, 0xB8 )  ; /* INTERRUPT PRIORITY */
75 SFR(    AMX0P, 0xBB )  ; /* ADC 0 MUX POSITIVE CHANNEL SELECTION */
76 SFR(   ADC0CF, 0xBC )  ; /* ADC 0 CONFIGURATION */
77 SFR(    ADC0L, 0xBD )  ; /* ADC 0 DATA WORD LSB */
78 SFR(    ADC0H, 0xBE )  ; /* ADC 0 DATA WORD MSB */
79 SFR(   SMB0CN, 0xC0 )  ; /* SMBUS CONTROL */
80 SFR(   SMB0CF, 0xC1 )  ; /* SMBUS CONFIGURATION */
81 SFR(  SMB0DAT, 0xC2 )  ; /* SMBUS DATA */
82 SFR(  ADC0GTL, 0xC3 )  ; /* ADC 0 GREATER-THAN LOW BYTE */
83 SFR(  ADC0GTH, 0xC4 )  ; /* ADC 0 GREATER-THAN HIGH BYTE */
84 SFR(  ADC0LTL, 0xC5 )  ; /* ADC 0 LESS-THAN LOW BYTE */
85 SFR(  ADC0LTH, 0xC6 )  ; /* ADC 0 LESS-THAN HIGH BYTE */
86 SFR(   REG0CN, 0xC7 )  ; /* Voltage Regulator Control */
87 SFR(    T2CON, 0xC8 )  ; /* TIMER 2 CONTROL */
88 SFR(   TMR2CN, 0xC8 )  ; /* TIMER 2 CONTROL */
89 SFR(   RCAP2L, 0xCA )  ; /* TIMER 2 CAPTURE REGISTER - LOW BYTE */
90 SFR(  TMR2RLL, 0xCA )  ; /* TIMER 2 CAPTURE REGISTER - LOW BYTE */
91 SFR(   RCAP2H, 0xCB )  ; /* TIMER 2 CAPTURE REGISTER - HIGH BYTE */
92 SFR(  TMR2RLH, 0xCB )  ; /* TIMER 2 CAPTURE REGISTER - HIGH BYTE */
93 SFR(      TL2, 0xCC )  ; /* TIMER 2 - LOW BYTE */
94 SFR(    TMR2L, 0xCC )  ; /* TIMER 2 - LOW BYTE */
95 SFR(      TH2, 0xCD )  ; /* TIMER 2 - HIGH BYTE */
96 SFR(    TMR2H, 0xCD )  ; /* TIMER 2 - HIGH BYTE */
97 SFR(      PSW, 0xD0 )  ; /* PROGRAM STATUS WORD */
98 SFR(   REF0CN, 0xD1 )  ; /* VOLTAGE REFERENCE 0 CONTROL */
99 SFR(   P0SKIP, 0xD4 )  ; /* PORT 0 SKIP */
100 SFR(   P1SKIP, 0xD5 )  ; /* PORT 1 SKIP */
101 SFR(   P2SKIP, 0xD6 )  ; /* PORT 2 SKIP */
102 SFR(   PCA0CN, 0xD8 )  ; /* PCA CONTROL */
103 SFR(   PCA0MD, 0xD9 )  ; /* PCA MODE */
104 SFR( PCA0CPM0, 0xDA )  ; /* PCA MODULE 0 MODE REGISTER */
105 SFR( PCA0CPM1, 0xDB )  ; /* PCA MODULE 1 MODE REGISTER */
106 SFR( PCA0CPM2, 0xDC )  ; /* PCA MODULE 2 MODE REGISTER */
107 SFR( PCA0CPM3, 0xDD )  ; /* PCA MODULE 3 MODE REGISTER */
108 SFR( PCA0CPM4, 0xDE )  ; /* PCA MODULE 4 MODE REGISTER */
109 SFR(      ACC, 0xE0 )  ; /* ACCUMULATOR */
110 SFR(     XBR0, 0xE1 )  ; /* PORT MUX CONFIGURATION REGISTER 0 */
111 SFR(     XBR1, 0xE2 )  ; /* PORT MUX CONFIGURATION REGISTER 1 */
112 SFR(   IT01CF, 0xE4 )  ; /* INT0/INT1 CONFIGURATION REGISTER */
113 SFR(  INT01CF, 0xE4 )  ; /* INT0/INT1 CONFIGURATION REGISTER */
114 SFR(     EIE1, 0xE6 )  ; /* EXTERNAL INTERRUPT ENABLE 1 */
115 SFR(   ADC0CN, 0xE8 )  ; /* ADC 0 CONTROL */
116 SFR( PCA0CPL1, 0xE9 )  ; /* PCA CAPTURE 1 LOW */
117 SFR( PCA0CPH1, 0xEA )  ; /* PCA CAPTURE 1 HIGH */
118 SFR( PCA0CPL2, 0xEB )  ; /* PCA CAPTURE 2 LOW */
119 SFR( PCA0CPH2, 0xEC )  ; /* PCA CAPTURE 2 HIGH */
120 SFR( PCA0CPL3, 0xED )  ; /* PCA CAPTURE 3 LOW */
121 SFR( PCA0CPH3, 0xEE )  ; /* PCA CAPTURE 3 HIGH */
122 SFR(   RSTSRC, 0xEF )  ; /* RESET SOURCE */
123 SFR(        B, 0xF0 )  ; /* B REGISTER */
124 SFR(   P0MODE, 0xF1 )  ; /* PORT 0 INPUT MODE CONFIGURATION */
125 SFR(   P0MDIN, 0xF1 )  ; /* PORT 0 INPUT MODE CONFIGURATION */
126 SFR(   P1MODE, 0xF2 )  ; /* PORT 1 INPUT MODE CONFIGURATION */
127 SFR(   P1MDIN, 0xF2 )  ; /* PORT 1 INPUT MODE CONFIGURATION */
128 SFR(   P2MODE, 0xF3 )  ; /* PORT 2 INPUT MODE CONFIGURATION */
129 SFR(   P2MDIN, 0xF3 )  ; /* PORT 2 INPUT MODE CONFIGURATION */
130 SFR(   P3MODE, 0xF4 )  ; /* PORT 3 INPUT MODE CONFIGURATION */
131 SFR(   P3MDIN, 0xF4 )  ; /* PORT 3 INPUT MODE CONFIGURATION */
132 SFR(     EIP1, 0xF6 )  ; /* EXTERNAL INTERRUPT PRIORITY REGISTER 1 */
133 SFR(   SPI0CN, 0xF8 )  ; /* SPI0 CONTROL */
134 SFR(    PCA0L, 0xF9 )  ; /* PCA COUNTER LOW */
135 SFR(    PCA0H, 0xFA )  ; /* PCA COUNTER HIGH */
136 SFR( PCA0CPL0, 0xFB )  ; /* PCA CAPTURE 0 LOW */
137 SFR( PCA0CPH0, 0xFC )  ; /* PCA CAPTURE 0 HIGH */
138 SFR( PCA0CPL4, 0xFD )  ; /* PCA CAPTURE 4 LOW */
139 SFR( PCA0CPH4, 0xFE )  ; /* PCA CAPTURE 4 HIGH */
140 SFR(   VDM0CN, 0xFF )  ; /* VDD MONITOR CONTROL */
141
142
143 /*  WORD/DWORD Registers  */
144
145 SFR16E(     TOFF, 0x8685 )  ; /* TEMPERATURE SENSOR OFFSET WORD */
146 SFR16E(     TMR0, 0x8C8A )  ; /* TIMER 0 COUNTER */
147 SFR16E(     TMR1, 0x8D8B )  ; /* TIMER 1 COUNTER */
148 SFR16E(     TMR2, 0xCDCC )  ; /* TIMER 2 COUNTER */
149 SFR16E(    RCAP2, 0xCBCA )  ; /* TIMER 2 CAPTURE REGISTER WORD */
150 SFR16E(   TMR2RL, 0xCBCA )  ; /* TIMER 2 CAPTURE REGISTER WORD */
151 SFR16E(     TMR3, 0x9594 )  ; /* TIMER 3 COUNTER */
152 SFR16E(   TMR3RL, 0x9392 )  ; /* TIMER 3 CAPTURE REGISTER WORD */
153 SFR16E(     ADC0, 0xBEBD )  ; /* ADC 0 DATA WORD */
154 SFR16E(   ADC0GT, 0xC4C3 )  ; /* ADC 0 GREATER-THAN REGISTER WORD */
155 SFR16E(   ADC0LT, 0xC6C5 )  ; /* ADC 0 LESS-THAN REGISTER WORD */
156 SFR16E(     PCA0, 0xFAF9 )  ; /* PCA COUNTER */
157 SFR16E(  PCA0CP0, 0xFCFB )  ; /* PCA CAPTURE 0 WORD */
158 SFR16E(  PCA0CP1, 0xEAE9 )  ; /* PCA CAPTURE 1 WORD */
159 SFR16E(  PCA0CP2, 0xECEB )  ; /* PCA CAPTURE 2 WORD */
160 SFR16E(  PCA0CP3, 0xEEED )  ; /* PCA CAPTURE 3 WORD */
161 SFR16E(  PCA0CP4, 0xFEFD )  ; /* PCA CAPTURE 4 WORD */
162
163
164 /*  BIT Registers  */
165
166 /*  P0  0x80 */
167 SBIT(     P0_0, 0x80, 0 )  ;
168 SBIT(     P0_1, 0x80, 1 )  ;
169 SBIT(     P0_2, 0x80, 2 )  ;
170 SBIT(     P0_3, 0x80, 3 )  ;
171 SBIT(     P0_4, 0x80, 4 )  ;
172 SBIT(     P0_5, 0x80, 5 )  ;
173 SBIT(     P0_6, 0x80, 6 )  ;
174 SBIT(     P0_7, 0x80, 7 )  ;
175
176 /*  TCON  0x88 */
177 SBIT(      IT0, 0x88, 0 )  ; /* TCON.0 - EXT. INTERRUPT 0 TYPE */
178 SBIT(      IE0, 0x88, 1 )  ; /* TCON.1 - EXT. INTERRUPT 0 EDGE FLAG */
179 SBIT(      IT1, 0x88, 2 )  ; /* TCON.2 - EXT. INTERRUPT 1 TYPE */
180 SBIT(      IE1, 0x88, 3 )  ; /* TCON.3 - EXT. INTERRUPT 1 EDGE FLAG */
181 SBIT(      TR0, 0x88, 4 )  ; /* TCON.4 - TIMER 0 ON/OFF CONTROL */
182 SBIT(      TF0, 0x88, 5 )  ; /* TCON.5 - TIMER 0 OVERFLOW FLAG */
183 SBIT(      TR1, 0x88, 6 )  ; /* TCON.6 - TIMER 1 ON/OFF CONTROL */
184 SBIT(      TF1, 0x88, 7 )  ; /* TCON.7 - TIMER 1 OVERFLOW FLAG */
185
186 /*  P1  0x90 */
187 SBIT(     P1_0, 0x90, 0 )  ;
188 SBIT(     P1_1, 0x90, 1 )  ;
189 SBIT(     P1_2, 0x90, 2 )  ;
190 SBIT(     P1_3, 0x90, 3 )  ;
191 SBIT(     P1_4, 0x90, 4 )  ;
192 SBIT(     P1_5, 0x90, 5 )  ;
193 SBIT(     P1_6, 0x90, 6 )  ;
194 SBIT(     P1_7, 0x90, 7 )  ;
195
196 /*  SCON  0x98 */
197 SBIT(       RI, 0x98, 0 )  ; /* SCON.0 - RECEIVE INTERRUPT FLAG */
198 SBIT(      RI0, 0x98, 0 )  ; /* SCON.0 - RECEIVE INTERRUPT FLAG */
199 SBIT(       TI, 0x98, 1 )  ; /* SCON.1 - TRANSMIT INTERRUPT FLAG */
200 SBIT(      TI0, 0x98, 1 )  ; /* SCON.1 - TRANSMIT INTERRUPT FLAG */
201 SBIT(      RB8, 0x98, 2 )  ; /* SCON.2 - RECEIVE BIT 8 */
202 SBIT(     RB80, 0x98, 2 )  ; /* SCON.2 - RECEIVE BIT 8 */
203 SBIT(      TB8, 0x98, 3 )  ; /* SCON.3 - TRANSMIT BIT 8 */
204 SBIT(     TB80, 0x98, 3 )  ; /* SCON.3 - TRANSMIT BIT 8 */
205 SBIT(      REN, 0x98, 4 )  ; /* SCON.4 - RECEIVE ENABLE */
206 SBIT(     REN0, 0x98, 4 )  ; /* SCON.4 - RECEIVE ENABLE */
207 SBIT(      SM2, 0x98, 5 )  ; /* SCON.5 - MULTIPROCESSOR COMMUNICATION ENABLE */
208 SBIT(     MCE0, 0x98, 5 )  ; /* SCON.5 - MULTIPROCESSOR COMMUNICATION ENABLE */
209 SBIT(      SM0, 0x98, 7 )  ; /* SCON.7 - SERIAL MODE CONTROL BIT 0 */
210 SBIT(   S0MODE, 0x98, 7 )  ; /* SCON.7 - SERIAL MODE CONTROL BIT 0 */
211
212 /*  P2  0xA0 */
213 SBIT(     P2_0, 0xA0, 0 )  ;
214 SBIT(     P2_1, 0xA0, 1 )  ;
215 SBIT(     P2_2, 0xA0, 2 )  ;
216 SBIT(     P2_3, 0xA0, 3 )  ;
217 SBIT(     P2_4, 0xA0, 4 )  ;
218 SBIT(     P2_5, 0xA0, 5 )  ;
219 SBIT(     P2_6, 0xA0, 6 )  ;
220 SBIT(     P2_7, 0xA0, 7 )  ;
221
222 /*  IE  0xA8 */
223 SBIT(      EX0, 0xA8, 0 )  ; /* IE.0 - EXTERNAL INTERRUPT 0 ENABLE */
224 SBIT(      ET0, 0xA8, 1 )  ; /* IE.1 - TIMER 0 INTERRUPT ENABLE */
225 SBIT(      EX1, 0xA8, 2 )  ; /* IE.2 - EXTERNAL INTERRUPT 1 ENABLE */
226 SBIT(      ET1, 0xA8, 3 )  ; /* IE.3 - TIMER 1 INTERRUPT ENABLE */
227 SBIT(       ES, 0xA8, 4 )  ; /* IE.4 - SERIAL PORT INTERRUPT ENABLE */
228 SBIT(      ES0, 0xA8, 4 )  ; /* IE.4 - SERIAL PORT INTERRUPT ENABLE */
229 SBIT(      ET2, 0xA8, 5 )  ; /* IE.5 - TIMER 2 INTERRUPT ENABLE */
230 SBIT(    ESPI0, 0xA8, 6 )  ; /* IE.6 - SPI0 INTERRUPT ENABLE */
231 SBIT(       EA, 0xA8, 7 )  ; /* IE.7 - GLOBAL INTERRUPT ENABLE */
232
233 /*  P3  0xB0 */
234 SBIT(     P3_0, 0xB0, 0 )  ;
235 SBIT(     P3_1, 0xB0, 1 )  ;
236 SBIT(     P3_2, 0xB0, 2 )  ;
237 SBIT(     P3_3, 0xB0, 3 )  ;
238 SBIT(     P3_4, 0xB0, 4 )  ;
239 SBIT(     P3_5, 0xB0, 5 )  ;
240 SBIT(     P3_6, 0xB0, 6 )  ;
241 SBIT(     P3_7, 0xB0, 7 )  ;
242
243 /*  IP  0xB8 */
244 SBIT(      PX0, 0xB8, 0 )  ; /* IP.0 - EXTERNAL INTERRUPT 0 PRIORITY */
245 SBIT(      PT0, 0xB8, 1 )  ; /* IP.1 - TIMER 0 PRIORITY */
246 SBIT(      PX1, 0xB8, 2 )  ; /* IP.2 - EXTERNAL INTERRUPT 1 PRIORITY */
247 SBIT(      PT1, 0xB8, 3 )  ; /* IP.3 - TIMER 1 PRIORITY */
248 SBIT(       PS, 0xB8, 4 )  ; /* IP.4 - SERIAL PORT PRIORITY */
249 SBIT(      PS0, 0xB8, 4 )  ; /* IP.4 - SERIAL PORT PRIORITY */
250 SBIT(      PT2, 0xB8, 5 )  ; /* IP.5 - TIMER 2 PRIORITY */
251 SBIT(    PSPI0, 0xB8, 6 )  ; /* IP.6 - SPI0 PRIORITY */
252
253 /*  SMB0CN  0xC0 */
254 SBIT(       SI, 0xC0, 0 )  ; /* SMB0CN.0 - SMBUS 0 INTERRUPT PENDING FLAG */
255 SBIT(      ACK, 0xC0, 1 )  ; /* SMB0CN.1 - SMBUS 0 ACKNOWLEDGE FLAG */
256 SBIT(  ARBLOST, 0xC0, 2 )  ; /* SMB0CN.2 - SMBUS 0 ARBITRATION LOST INDICATOR */
257 SBIT(    ACKRQ, 0xC0, 3 )  ; /* SMB0CN.3 - SMBUS 0 ACKNOWLEDGE REQUEST */
258 SBIT(      STO, 0xC0, 4 )  ; /* SMB0CN.4 - SMBUS 0 STOP FLAG */
259 SBIT(      STA, 0xC0, 5 )  ; /* SMB0CN.5 - SMBUS 0 START FLAG */
260 SBIT(   TXMODE, 0xC0, 6 )  ; /* SMB0CN.6 - SMBUS 0 TRANSMIT MODE INDICATOR */
261 SBIT(   MASTER, 0xC0, 7 )  ; /* SMB0CN.7 - SMBUS 0 MASTER/SLAVE INDICATOR */
262
263 /*  TMR2CN  0xC8 */
264 SBIT(   T2XCLK, 0xC8, 0 )  ; /* TMR2CN.0 - TIMER 2 EXTERNAL CLOCK SELECT */
265 SBIT(      TR2, 0xC8, 2 )  ; /* TMR2CN.2 - TIMER 2 ON/OFF CONTROL */
266 SBIT(  T2SPLIT, 0xC8, 3 )  ; /* TMR2CN.3 - TIMER 2 SPLIT MODE ENABLE */
267 SBIT(   TF2LEN, 0xC8, 5 )  ; /* TMR2CN.5 - TIMER 2 LOW BYTE INTERRUPT ENABLE */
268 SBIT(     TF2L, 0xC8, 6 )  ; /* TMR2CN.6 - TIMER 2 LOW BYTE OVERFLOW FLAG */
269 SBIT(      TF2, 0xC8, 7 )  ; /* TMR2CN.7 - TIMER 2 OVERFLOW FLAG */
270 SBIT(     TF2H, 0xC8, 7 )  ; /* TMR2CN.7 - TIMER 2 HIGH BYTE OVERFLOW FLAG */
271
272 /*  PSW  0xD0 */
273 SBIT(   PARITY, 0xD0, 0 )  ; /* PSW.0 - ACCUMULATOR PARITY FLAG */
274 SBIT(       F1, 0xD0, 1 )  ; /* PSW.1 - FLAG 1 */
275 SBIT(       OV, 0xD0, 2 )  ; /* PSW.2 - OVERFLOW FLAG */
276 SBIT(      RS0, 0xD0, 3 )  ; /* PSW.3 - REGISTER BANK SELECT 0 */
277 SBIT(      RS1, 0xD0, 4 )  ; /* PSW.4 - REGISTER BANK SELECT 1 */
278 SBIT(       F0, 0xD0, 5 )  ; /* PSW.5 - FLAG 0 */
279 SBIT(       AC, 0xD0, 6 )  ; /* PSW.6 - AUXILIARY CARRY FLAG */
280 SBIT(       CY, 0xD0, 7 )  ; /* PSW.7 - CARRY FLAG */
281
282 /*  PCA0CN  0xD8 */
283 SBIT(     CCF0, 0xD8, 0 )  ; /* PCA0CN.0 - PCA MODULE 0 CAPTURE/COMPARE FLAG */
284 SBIT(     CCF1, 0xD8, 1 )  ; /* PCA0CN.1 - PCA MODULE 1 CAPTURE/COMPARE FLAG */
285 SBIT(     CCF2, 0xD8, 2 )  ; /* PCA0CN.2 - PCA MODULE 2 CAPTURE/COMPARE FLAG */
286 SBIT(     CCF3, 0xD8, 3 )  ; /* PCA0CN.3 - PCA MODULE 3 CAPTURE/COMPARE FLAG */
287 SBIT(     CCF4, 0xD8, 4 )  ; /* PCA0CN.4 - PCA MODULE 4 CAPTURE/COMPARE FLAG */
288 SBIT(       CR, 0xD8, 6 )  ; /* PCA0CN.6 - PCA COUNTER/TIMER RUN CONTROL */
289 SBIT(       CF, 0xD8, 7 )  ; /* PCA0CN.7 - PCA COUNTER/TIMER OVERFLOW FLAG */
290
291 /*  ADC0CN  0xE8 */
292 SBIT(   AD0CM0, 0xE8, 0 )  ; /* ADC0CN.0 - ADC 0 START OF CONV. MODE BIT 0 */
293 SBIT(   AD0CM1, 0xE8, 1 )  ; /* ADC0CN.1 - ADC 0 START OF CONV. MODE BIT 1 */
294 SBIT(   AD0CM2, 0xE8, 2 )  ; /* ADC0CN.2 - ADC 0 START OF CONV. MODE BIT 2 */
295 SBIT(  AD0WINT, 0xE8, 3 )  ; /* ADC0CN.3 - ADC 0 WINDOW COMPARE INT. FLAG */
296 SBIT(  AD0BUSY, 0xE8, 4 )  ; /* ADC0CN.4 - ADC 0 BUSY FLAG */
297 SBIT(   AD0INT, 0xE8, 5 )  ; /* ADC0CN.5 - ADC 0 CONV. COMPLETE INT. FLAG */
298 SBIT(    AD0TM, 0xE8, 6 )  ; /* ADC0CN.6 - ADC 0 TRACK MODE */
299 SBIT(    AD0EN, 0xE8, 7 )  ; /* ADC0CN.7 - ADC 0 ENABLE */
300                              
301 /*  SPI0CN  0xF8 */          
302 SBIT(    SPIEN, 0xF8, 0 )  ; /* SPI0CN.0 - SPI0 ENABLE */
303 SBIT(    TXBMT, 0xF8, 1 )  ; /* SPI0CN.1 - TRANSMIT BUFFER EMPTY */
304 SBIT(   NSSMD0, 0xF8, 2 )  ; /* SPI0CN.2 - SLAVE SELECT MODE BIT 0 */
305 SBIT(   NSSMD1, 0xF8, 3 )  ; /* SPI0CN.3 - SLAVE SELECT MODE BIT 1 */
306 SBIT(   RXOVRN, 0xF8, 4 )  ; /* SPI0CN.4 - RECEIVE OVERRUN FLAG */
307 SBIT(     MODF, 0xF8, 5 )  ; /* SPI0CN.5 - MODE FAULT FLAG */
308 SBIT(     WCOL, 0xF8, 6 )  ; /* SPI0CN.6 - WRITE COLLISION FLAG */
309 SBIT(     SPIF, 0xF8, 7 )  ; /* SPI0CN.7 - SPI0 INTERRUPT FLAG */
310
311
312 /* Predefined SFR Bit Masks */
313
314 #define PCON_IDLE         0x01    /* PCON                                */
315 #define PCON_STOP         0x02    /* PCON                                */
316 #define T1M               0x08    /* CKCON                               */
317 #define PSWE              0x01    /* PSCTL                               */
318 #define PSEE              0x02    /* PSCTL                               */
319 #define ECP0              0x20    /* EIE1                                */
320 #define ECP1              0x40    /* EIE1                                */
321 #define PORSF             0x02    /* RSTSRC                              */
322 #define SWRSF             0x10    /* RSTSRC                              */
323 #define ECCF              0x01    /* PCA0CPMn                            */
324 #define PWM               0x02    /* PCA0CPMn                            */
325 #define TOG               0x04    /* PCA0CPMn                            */
326 #define MAT               0x08    /* PCA0CPMn                            */
327 #define CAPN              0x10    /* PCA0CPMn                            */
328 #define CAPP              0x20    /* PCA0CPMn                            */
329 #define ECOM              0x40    /* PCA0CPMn                            */
330 #define PWM16             0x80    /* PCA0CPMn                            */
331 #define CP0E              0x10    /* XBR0                                */
332 #define CP0OEN            0x10    /* XBR0                                */
333 #define CP0AE             0x20    /* XBR0                                */
334 #define CP0AOEN           0x20    /* XBR0                                */
335 #define CP1E              0x40    /* XBR0                                */
336 #define CP1AE             0x80    /* XBR0                                */
337
338 /* Interrupts */
339
340 #define INT_EXT0          0       /* External Interrupt 0 */
341 #define INT_TIMER0        1       /* Timer0 Overflow */
342 #define INT_EXT1          2       /* External Interrupt 1 */
343 #define INT_TIMER1        3       /* Timer1 Overflow */
344 #define INT_UART0         4       /* Serial Port 0 */
345 #define INT_TIMER2        5       /* Timer2 Overflow */
346 #define INT_SPI0          6       /* Serial Peripheral Interface 0 */
347 #define INT_SMBUS0        7       /* SMBus0 Interface */
348 /*                        8          Reserved */
349 #define INT_ADC0_WINDOW   9       /* ADC0 Window Comparison */
350 #define INT_ADC0_EOC      10      /* ADC0 End Of Conversion */
351 #define INT_PCA0          11      /* PCA0 Peripheral */
352 #define INT_COMPARATOR0   12      /* Comparator0 */
353 #define INT_COMPARATOR1   13      /* Comparator1 */
354 #define INT_TIMER3        14      /* Timer3 Overflow */
355
356 #endif