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