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