-> mapping to an 1/x like behaviour
[my-code/atmel.git] / include / m64def.inc
1 ;***************************************************************************\r
2 ;* A P P L I C A T I O N   N O T E   F O R   T H E   A V R   F A M I L Y\r
3 ;* \r
4 ;* Number                               : AVR000\r
5 ;* File Name                    : "m64def.inc"\r
6 ;* Title                                : Register/Bit Definitions for the ATmega604\r
7 ;* Date                 : April 16th, 2002\r
8 ;* Version              : 1.0\r
9 ;* Support telephone    : +47 72 88 43 88 (ATMEL Norway)\r
10 ;* Support fax                  : +47 72 88 43 99 (ATMEL Norway)\r
11 ;* Support E-mail               : support@atmel.no\r
12 ;* Target MCU                   : ATmega64\r
13 ;*\r
14 ;* DESCRIPTION\r
15 ;* When including this file in the assembly program file, all I/O register      \r
16 ;* names and I/O register bit names appearing in the data book can be used.\r
17 ;* In addition, the six registers forming the three data pointers X, Y and\r
18 ;* Z have been assigned names XL - ZH. Highest RAM address for Internal \r
19 ;* SRAM is also defined \r
20 ;*\r
21 ;* The Register names are represented by their hexadecimal address.\r
22 ;* \r
23 ;* The Register Bit names are represented by their bit number (0-7).\r
24 ;* \r
25 ;* Please observe the difference in using the bit names with instructions\r
26 ;* such as "sbr"/"cbr" (set/clear bit in register) and "sbrs"/"sbrc" \r
27 ;* (skip if bit in register set/cleared). The following example illustrates\r
28 ;* this:\r
29 ;* \r
30 ;* in   r16,PORTB                               ;read PORTB latch\r
31 ;* sbr  r16,(1<<PB6)+(1<<PB5)   ;set PB6 and PB5 (use masks, not bit#)\r
32 ;* out  PORTB,r16                               ;output to PORTB\r
33 ;*\r
34 ;* in   r16,TIFR                                ;read the Timer Interrupt Flag Register\r
35 ;* sbrc r16,TOV0                                ;test the overflow flag (use bit#)\r
36 ;* rjmp TOV0_is_set                             ;jump if set\r
37 ;* ...                                                  ;otherwise do something else\r
38 ;***************************************************************************\r
39 \r
40 ;**** Specify Device ****\r
41 .device ATmega64\r
42 \r
43 ;*****************************************************************************\r
44 ; I/O Register Definitions\r
45 ;*****************************************************************************\r
46 \r
47 ;**** Memory Mapped I/O Register Definitions ($FF-$60) ****\r
48 .equ    UCSR1C  = $9D\r
49 .equ    UDR1    = $9C\r
50 .equ    UCSR1A  = $9B\r
51 .equ    UCSR1B  = $9A\r
52 .equ    UBRR1L  = $99\r
53 .equ    UBRR1H  = $98\r
54 .equ    UCSR0C  = $95\r
55 .equ    UBRR0H  = $90\r
56 .equ    ADCSRB  = $8E\r
57 .equ    TCCR3C  = $8C\r
58 .equ    TCCR3A  = $8B\r
59 .equ    TCCR3B  = $8A\r
60 .equ    TCNT3H  = $89\r
61 .equ    TCNT3L  = $88\r
62 .equ    OCR3AH  = $87\r
63 .equ    OCR3AL  = $86\r
64 .equ    OCR3BH  = $85\r
65 .equ    OCR3BL  = $84\r
66 .equ    OCR3CH  = $83\r
67 .equ    OCR3CL  = $82\r
68 .equ    ICR3H   = $81\r
69 .equ    ICR3L   = $80\r
70 .equ    ETIMSK  = $7D\r
71 .equ    ETIFR   = $7C\r
72 .equ    TCCR1C  = $7A\r
73 .equ    OCR1CH  = $79\r
74 .equ    OCR1CL  = $78\r
75 .equ    I2CR    = $74\r
76 .equ    I2DR    = $73\r
77 .equ    I2AR    = $72\r
78 .equ    I2SR    = $71\r
79 .equ    I2BR    = $70\r
80 .equ    TWCR    = $74\r
81 .equ    TWDR    = $73\r
82 .equ    TWAR    = $72\r
83 .equ    TWSR    = $71\r
84 .equ    TWBR    = $70\r
85 .equ    OSCCAL  = $6F\r
86 .equ    XMCRA   = $6D\r
87 .equ    XMCRB   = $6C\r
88 .equ    EICRA   = $6A\r
89 .equ    SPMCSR  = $68\r
90 .equ    SPMCR   = $68           ; old name for SPMCSR\r
91 .equ    PORTG   = $65\r
92 .equ    DDRG    = $64\r
93 .equ    PING    = $63\r
94 .equ    PORTF   = $62\r
95 .equ    DDRF    = $61\r
96 \r
97 ;**** I/O Register Definitions ($3F-$00) ****\r
98 .equ    SREG    = $3F\r
99 .equ    SPH             = $3E\r
100 .equ    SPL             = $3D\r
101 .equ    XDIV    = $3C\r
102 .equ    EICRB   = $3A\r
103 .equ    EIMSK   = $39\r
104 .equ    GIMSK   = $39           ; old name for EIMSK\r
105 .equ    GICR    = $39           ; old name for EIMSK\r
106 .equ    EIFR    = $38\r
107 .equ    GIFR    = $38           ; old name for EIFR\r
108 .equ    TIMSK   = $37\r
109 .equ    TIFR    = $36\r
110 .equ    MCUCR   = $35\r
111 .equ    MCUCSR  = $34\r
112 .equ    TCCR0   = $33\r
113 .equ    TCNT0   = $32\r
114 .equ    OCR0    = $31\r
115 .equ    ASSR    = $30\r
116 .equ    TCCR1A  = $2F\r
117 .equ    TCCR1B  = $2E\r
118 .equ    TCNT1H  = $2D\r
119 .equ    TCNT1L  = $2C\r
120 .equ    OCR1AH  = $2B\r
121 .equ    OCR1AL  = $2A\r
122 .equ    OCR1BH  = $29\r
123 .equ    OCR1BL  = $28\r
124 .equ    ICR1H   = $27\r
125 .equ    ICR1L   = $26\r
126 .equ    TCCR2   = $25\r
127 .equ    TCNT2   = $24\r
128 .equ    OCR2    = $23\r
129 .equ    OCDR    = $22           ; New\r
130 .equ    WDTCR   = $21\r
131 .equ    SFIOR   = $20           ; New\r
132 .equ    EEARH   = $1F\r
133 .equ    EEARL   = $1E\r
134 .equ    EEDR    = $1D\r
135 .equ    EECR    = $1C\r
136 .equ    PORTA   = $1B\r
137 .equ    DDRA    = $1A\r
138 .equ    PINA    = $19\r
139 .equ    PORTB   = $18\r
140 .equ    DDRB    = $17\r
141 .equ    PINB    = $16\r
142 .equ    PORTC   = $15\r
143 .equ    DDRC    = $14           ; New\r
144 .equ    PINC    = $13           ; New\r
145 .equ    PORTD   = $12\r
146 .equ    DDRD    = $11\r
147 .equ    PIND    = $10\r
148 .equ    SPDR    = $0F\r
149 .equ    SPSR    = $0E\r
150 .equ    SPCR    = $0D\r
151 .equ    UDR0    = $0C\r
152 .equ    UCSR0A  = $0B\r
153 .equ    UCSR0B  = $0A\r
154 .equ    UBRR0L  = $09\r
155 .equ    ACSR    = $08\r
156 .equ    ADMUX   = $07\r
157 .equ    ADCSRA  = $06   \r
158 .equ    ADCSR   = $06\r
159 .equ    ADCH    = $05\r
160 .equ    ADCL    = $04\r
161 .equ    PORTE   = $03\r
162 .equ    DDRE    = $02\r
163 .equ    PINE    = $01\r
164 .equ    PINF    = $00\r
165 \r
166 \r
167 ;*****************************************************************************\r
168 ; Bit Definitions\r
169 ;*****************************************************************************\r
170 \r
171 ; **** MCU Control ****\r
172 ; **** MCUCR ****\r
173 .equ    SRE             = 7             \r
174 .equ    SRW10   = 6\r
175 .equ    SE              = 5\r
176 .equ    SM1             = 4\r
177 .equ    SM0             = 3\r
178 .equ    SM2             = 2\r
179 .equ    IVSEL   = 1\r
180 .equ    IVCE    = 0\r
181 \r
182 ; **** MCUCSR ****\r
183 .equ    JTD             = 7             \r
184 .equ    JTRF    = 4     \r
185 .equ    WDRF    = 3\r
186 .equ    BORF    = 2\r
187 .equ    EXTRF   = 1\r
188 .equ    PORF    = 0\r
189 \r
190 ; **** XMCRA ****\r
191 .equ    SRL2    = 6             \r
192 .equ    SRL1    = 5\r
193 .equ    SRL0    = 4\r
194 .equ    SRW01   = 3\r
195 .equ    SRW00   = 2\r
196 .equ    SRW11   = 1\r
197 \r
198 ; **** XMCRB ****\r
199 .equ    XMBK    = 7             \r
200 .equ    XMM2    = 2\r
201 .equ    XMM1    = 1\r
202 .equ    XMM0    = 0\r
203 \r
204 ; **** SPMCSR ****\r
205 .equ    SPMIE   = 7             \r
206 .equ    ASB             = 6             ; backwards compatiblity\r
207 .equ    ASRE    = 4             ; backwards compatiblity\r
208 .equ    RWWSB   = 6\r
209 .equ    RWWSRE  = 4     \r
210 .equ    BLBSET  = 3\r
211 .equ    PGWRT   = 2\r
212 .equ    PGERS   = 1\r
213 .equ    SPMEN   = 0\r
214 \r
215 ; **** OCDR ****\r
216 .equ    IDRD    = 7             \r
217 .equ    OCDR6   = 6\r
218 .equ    OCDR5   = 5\r
219 .equ    OCDR4   = 4     \r
220 .equ    OCDR3   = 3\r
221 .equ    OCDR2   = 2\r
222 .equ    OCDR1   = 1\r
223 .equ    OCDR0   = 0\r
224 \r
225 ; **** XDIV ****\r
226 .equ    XDIVEN  = 7             \r
227 .equ    XDIV6   = 6\r
228 .equ    XDIV5   = 5\r
229 .equ    XDIV4   = 4\r
230 .equ    XDIV3   = 3\r
231 .equ    XDIV2   = 2\r
232 .equ    XDIV1   = 1\r
233 .equ    XDIV0   = 0\r
234 \r
235 ; **** SFIOR ****\r
236 .equ    TSM             = 7             \r
237 .equ    ADHSM   = 4\r
238 .equ    ACME    = 3\r
239 .equ    PUD             = 2\r
240 .equ    PSR0    = 1\r
241 .equ    PSR1    = 0\r
242 .equ    PSR2    = 0\r
243 .equ    PSR3    = 0\r
244 .equ    PSR321  = 0     \r
245 \r
246 ; **** Analog to Digital Converter ****\r
247 ; **** ADCSR ****\r
248 .equ    ADEN    = 7             \r
249 .equ    ADSC    = 6\r
250 .equ    ADATE   = 5\r
251 .equ    ADFR    = 5\r
252 .equ    ADIF    = 4\r
253 .equ    ADIE    = 3\r
254 .equ    ADPS2   = 2\r
255 .equ    ADPS1   = 1\r
256 .equ    ADPS0   = 0\r
257 \r
258 ; **** ADMUX ****\r
259 .equ    REFS1   = 7             \r
260 .equ    REFS0   = 6\r
261 .equ    ADLAR   = 5\r
262 .equ    MUX4    = 4\r
263 .equ    MUX3    = 3\r
264 .equ    MUX2    = 2\r
265 .equ    MUX1    = 1\r
266 .equ    MUX0    = 0\r
267 \r
268 ; **** ADCSRB ****\r
269 .equ    ADTS2   = 2             \r
270 .equ    ADTS1   = 1\r
271 .equ    ADTS0   = 0     \r
272 \r
273 ;**** Analog Comparator ****\r
274 ; **** ACSR ****\r
275 .equ    ACD             = 7             \r
276 .equ    ACBG    = 6\r
277 .equ    ACO             = 5\r
278 .equ    ACI             = 4\r
279 .equ    ACIE    = 3\r
280 .equ    ACIC    = 2\r
281 .equ    ACIS1   = 1\r
282 .equ    ACIS0   = 0\r
283         \r
284 \r
285 ; **** External Interrupts ****\r
286 ; **** EIMSK ****\r
287 .equ    INT7    = 7             \r
288 .equ    INT6    = 6\r
289 .equ    INT5    = 5\r
290 .equ    INT4    = 4\r
291 .equ    INT3    = 3\r
292 .equ    INT2    = 2\r
293 .equ    INT1    = 1\r
294 .equ    INT0    = 0\r
295 \r
296 ; **** EIFR ****\r
297 .equ    INTF7   = 7             \r
298 .equ    INTF6   = 6\r
299 .equ    INTF5   = 5\r
300 .equ    INTF4   = 4\r
301 .equ    INTF3   = 3\r
302 .equ    INTF2   = 2\r
303 .equ    INTF1   = 1\r
304 .equ    INTF0   = 0\r
305 \r
306 ; **** EICRB ****\r
307 .equ    ISC71   = 7             \r
308 .equ    ISC70   = 6\r
309 .equ    ISC61   = 5\r
310 .equ    ISC60   = 4\r
311 .equ    ISC51   = 3\r
312 .equ    ISC50   = 2\r
313 .equ    ISC41   = 1\r
314 .equ    ISC40   = 0\r
315 \r
316 ; **** EICRA ****\r
317 .equ    ISC31   = 7             \r
318 .equ    ISC30   = 6\r
319 .equ    ISC21   = 5\r
320 .equ    ISC20   = 4\r
321 .equ    ISC11   = 3\r
322 .equ    ISC10   = 2\r
323 .equ    ISC01   = 1\r
324 .equ    ISC00   = 0\r
325 \r
326 ; **** Timer Interrupts ****\r
327 ; **** TIMSK ****\r
328 .equ    OCIE2   = 7             \r
329 .equ    TOIE2   = 6\r
330 .equ    TICIE1  = 5\r
331 .equ    OCIE1A  = 4\r
332 .equ    OCIE1B  = 3\r
333 .equ    TOIE1   = 2\r
334 .equ    OCIE0   = 1\r
335 .equ    TOIE0   = 0\r
336 \r
337 ; **** ETIMSK ****\r
338 .equ    TICIE3  = 5             \r
339 .equ    OCIE3A  = 4\r
340 .equ    OCIE3B  = 3\r
341 .equ    TOIE3   = 2\r
342 .equ    OCIE3C  = 1\r
343 .equ    OCIE1C  = 0\r
344 \r
345 ; **** TIFR ****\r
346 .equ    OCF2    = 7             \r
347 .equ    TOV2    = 6\r
348 .equ    ICF1    = 5\r
349 .equ    OCF1A   = 4\r
350 .equ    OCF1B   = 3\r
351 .equ    TOV1    = 2\r
352 .equ    OCF0    = 1\r
353 .equ    TOV0    = 0\r
354 \r
355 ; **** ETIFR ****\r
356 .equ    ICF3    = 5             \r
357 .equ    OCF3A   = 4\r
358 .equ    OCF3B   = 3\r
359 .equ    TOV3    = 2\r
360 .equ    OCF3C   = 1\r
361 .equ    OCF1C   = 0\r
362 \r
363 ; **** Asynchronous Timer ****\r
364 ; **** ASSR ****\r
365 .equ    AS0             = 3             \r
366 .equ    TCN0UB  = 2\r
367 .equ    OCR0UB  = 1\r
368 .equ    TCR0UB  = 0\r
369 \r
370 ; **** Timer 0 ****\r
371 ; **** TCCR0 ****\r
372 .equ    FOC0    = 7             \r
373 .equ    PWM0    = 6\r
374 .equ    WGM00   = 6     \r
375 .equ    COM01   = 5\r
376 .equ    COM00   = 4\r
377 .equ    CTC0    = 3\r
378 .equ    WGM01   = 3\r
379 .equ    CS02    = 2\r
380 .equ    CS01    = 1\r
381 .equ    CS00    = 0\r
382 \r
383 ; **** Timer 1 ****\r
384 ; **** TCCR1A ****\r
385 .equ    COM1A1  = 7             \r
386 .equ    COM1A0  = 6\r
387 .equ    COM1B1  = 5\r
388 .equ    COM1B0  = 4\r
389 .equ    COM1C1  = 3\r
390 .equ    COM1C0  = 2\r
391 .equ    PWM11   = 1             ; OBSOLETE! Use WGM11\r
392 .equ    PWM10   = 0             ; OBSOLETE! Use WGM10\r
393 .equ    WGM11   = 1\r
394 .equ    WGM10   = 0\r
395 \r
396 ; **** TCCR1B ****\r
397 .equ    ICNC1   = 7             \r
398 .equ    ICES1   = 6\r
399 .equ    CTC11   = 4             ; OBSOLETE! Use WGM13\r
400 .equ    CTC10   = 3             ; OBSOLETE! Use WGM12\r
401 .equ    WGM13   = 4\r
402 .equ    WGM12   = 3\r
403 .equ    CS12    = 2\r
404 .equ    CS11    = 1\r
405 .equ    CS10    = 0\r
406 \r
407 ; **** TCCR1C ****\r
408 .equ    FOC1A   = 7             \r
409 .equ    FOC1B   = 6\r
410 .equ    FOC1C   = 5\r
411 \r
412 ; **** Timer 2 ****\r
413 ; **** TCCR2 ****\r
414 .equ    FOC2    = 7             \r
415 .equ    PWM2    = 6\r
416 .equ    WGM20   = 6     \r
417 .equ    COM21   = 5\r
418 .equ    COM20   = 4\r
419 .equ    CTC2    = 3\r
420 .equ    WGM21   = 3\r
421 .equ    CS22    = 2\r
422 .equ    CS21    = 1\r
423 .equ    CS20    = 0\r
424 \r
425 ; **** Timer 3 ****\r
426 ; **** TCCR3A ****\r
427 .equ    COM3A1  = 7             \r
428 .equ    COM3A0  = 6\r
429 .equ    COM3B1  = 5\r
430 .equ    COM3B0  = 4\r
431 .equ    COM3C1  = 3\r
432 .equ    COM3C0  = 2\r
433 .equ    PWM31   = 1             ; OBSOLETE! Use WGM31\r
434 .equ    PWM30   = 0             ; OBSOLETE! Use WGM30\r
435 .equ    WGM31   = 1\r
436 .equ    WGM30   = 0\r
437 \r
438 ; **** TCCR3B ****  \r
439 .equ    ICNC3   = 7             \r
440 .equ    ICES3   = 6\r
441 .equ    CTC31   = 4             ; OBSOLETE! Use WGM33\r
442 .equ    CTC30   = 3             ; OBSOLETE! Use WGM32\r
443 .equ    WGM33   = 4\r
444 .equ    WGM32   = 3\r
445 .equ    CS32    = 2\r
446 .equ    CS31    = 1\r
447 .equ    CS30    = 0\r
448 \r
449 ; **** TCCR3C ****\r
450 .equ    FOC3A   = 7             \r
451 .equ    FOC3B   = 6\r
452 .equ    FOC3C   = 5\r
453 \r
454 ; **** Watchdog Timer ****\r
455 ; **** WDTCR ****\r
456 .equ    WDCE    = 4             \r
457 .equ    WDTOE   = 4             ; For Mega103 compability\r
458 .equ    WDE             = 3\r
459 .equ    WDP2    = 2\r
460 .equ    WDP1    = 1\r
461 .equ    WDP0    = 0\r
462 \r
463 ; **** EEPROM  Control Register ****\r
464 ; **** EECR ****\r
465 .equ    EERIE   = 3             \r
466 .equ    EEMWE   = 2\r
467 .equ    EEWE    = 1\r
468 .equ    EERE    = 0\r
469 \r
470 ; **** USART 0 and USART 1 ****\r
471 ; **** (UCSRA0/1) ****\r
472 .equ    RXC             = 7             \r
473 .equ    TXC             = 6\r
474 .equ    UDRE    = 5\r
475 .equ    FE              = 4\r
476 .equ    DOR             = 3\r
477 .equ    PE              = 2             ; OBSOLETED!\r
478 .equ    U2X             = 1\r
479 .equ    MPCM    = 0\r
480 \r
481 ; **** (UCSR0A) ****\r
482 .equ    RXC0    = 7             \r
483 .equ    TXC0    = 6\r
484 .equ    UDRE0   = 5\r
485 .equ    FE0             = 4\r
486 .equ    DOR0    = 3\r
487 .equ    UPE0    = 2\r
488 .equ    U2X0    = 1\r
489 .equ    MPCM0   = 0\r
490 \r
491 ; **** (UCSR1A) ****\r
492 .equ    RXC1    = 7             \r
493 .equ    TXC1    = 6\r
494 .equ    UDRE1   = 5\r
495 .equ    FE1             = 4\r
496 .equ    DOR1    = 3\r
497 .equ    UPE1    = 2\r
498 .equ    U2X1    = 1\r
499 .equ    MPCM1   = 0\r
500 \r
501 ; **** (UCSRB0/1) ****\r
502 .equ    RXCIE   = 7             \r
503 .equ    TXCIE   = 6\r
504 .equ    UDRIE   = 5\r
505 .equ    RXEN    = 4\r
506 .equ    TXEN    = 3\r
507 .equ    UCSZ2   = 2\r
508 .equ    RXB8    = 1\r
509 .equ    TXB8    = 0\r
510 \r
511 ; **** (UCSR0B) ****\r
512 .equ    RXCIE0  = 7             \r
513 .equ    TXCIE0  = 6\r
514 .equ    UDRIE0  = 5\r
515 .equ    RXEN0   = 4\r
516 .equ    TXEN0   = 3\r
517 .equ    UCSZ02  = 2\r
518 .equ    RXB80   = 1\r
519 .equ    TXB80   = 0\r
520 \r
521 ; **** (UCSR1B) ****\r
522 .equ    RXCIE1  = 7             \r
523 .equ    TXCIE1  = 6\r
524 .equ    UDRIE1  = 5\r
525 .equ    RXEN1   = 4\r
526 .equ    TXEN1   = 3\r
527 .equ    UCSZ12  = 2\r
528 .equ    RXB81   = 1\r
529 .equ    TXB81   = 0\r
530 \r
531 ; **** (UCSRC0/1) ****\r
532 .equ    UMSEL   = 6             \r
533 .equ    UPM1    = 5\r
534 .equ    UPM0    = 4\r
535 .equ    USBS    = 3\r
536 .equ    UCSZ1   = 2\r
537 .equ    UCSZ0   = 1\r
538 .equ    UCPOL   = 0\r
539 \r
540 ; **** (UCSR0C) ****\r
541 .equ    UMSEL0  = 6             \r
542 .equ    UPM01   = 5\r
543 .equ    UPM00   = 4\r
544 .equ    USBS0   = 3\r
545 .equ    UCSZ01  = 2\r
546 .equ    UCSZ00  = 1\r
547 .equ    UCPOL0  = 0\r
548 \r
549 ; **** (UCSR1C) ****\r
550 .equ    UMSEL1  = 6             \r
551 .equ    UPM11   = 5\r
552 .equ    UPM10   = 4\r
553 .equ    USBS1   = 3\r
554 .equ    UCSZ11  = 2\r
555 .equ    UCSZ10  = 1\r
556 .equ    UCPOL1  = 0\r
557 \r
558         \r
559 ; **** SPI ****\r
560 ; **** SPCR ****\r
561 .equ    SPIE    = 7             \r
562 .equ    SPE             = 6\r
563 .equ    DORD    = 5\r
564 .equ    MSTR    = 4\r
565 .equ    CPOL    = 3\r
566 .equ    CPHA    = 2\r
567 .equ    SPR1    = 1\r
568 .equ    SPR0    = 0\r
569 \r
570 ; **** SPSR ****\r
571 .equ    SPIF    = 7             \r
572 .equ    WCOL    = 6\r
573 .equ    SPI2X   = 0\r
574 \r
575 ; **** I2C/TWI ****\r
576 ; **** I2CR ****\r
577 .equ    I2INT   = 7             \r
578 .equ    I2EA    = 6\r
579 .equ    I2STA   = 5\r
580 .equ    I2STO   = 4\r
581 .equ    I2WC    = 3\r
582 .equ    ENI2C   = 2\r
583 .equ    I2EN    = 2\r
584 .equ    I2C_TST = 1             ; Present in core test mode only. Write Only.\r
585 .equ    I2IE    = 0\r
586 \r
587 ; **** I2SR ****\r
588 .equ    I2S7    = 7             \r
589 .equ    I2S6    = 6\r
590 .equ    I2S5    = 5\r
591 .equ    I2S4    = 4\r
592 .equ    I2S3    = 3\r
593 .equ    I2GCE   = 0             \r
594         \r
595 ; **** I2AR ****\r
596 .equ    TWINT   = 7\r
597 .equ    TWEA    = 6\r
598 .equ    TWSTA   = 5\r
599 .equ    TWSTO   = 4\r
600 .equ    TWWC    = 3\r
601 .equ    TWEN    = 2\r
602 .equ    TWC_TST = 1             ; Present in core test mode only. Write Only.\r
603 .equ    TWIE    = 0\r
604 \r
605 ; **** TWSR ****\r
606 .equ    TWS7    = 7             \r
607 .equ    TWS6    = 6\r
608 .equ    TWS5    = 5\r
609 .equ    TWS4    = 4\r
610 .equ    TWS3    = 3\r
611 .equ    TWPS1   = 1\r
612 .equ    TWPS0   = 0\r
613 \r
614 ; **** TWAR ****\r
615 .equ    TWA6    = 7\r
616 .equ    TWA5    = 6\r
617 .equ    TWA4    = 5\r
618 .equ    TWA3    = 4\r
619 .equ    TWA2    = 3\r
620 .equ    TWA1    = 2\r
621 .equ    TWA0    = 1\r
622 .equ    TWGCE   = 0\r
623 \r
624 ; **** PORT A ****\r
625 ; **** PORTA ****\r
626 .equ    PA7             = 7             \r
627 .equ    PA6             = 6\r
628 .equ    PA5             = 5\r
629 .equ    PA4             = 4\r
630 .equ    PA3             = 3\r
631 .equ    PA2             = 2\r
632 .equ    PA1             = 1\r
633 .equ    PA0             = 0\r
634 .equ    PORTA7  = 7\r
635 .equ    PORTA6  = 6\r
636 .equ    PORTA5  = 5\r
637 .equ    PORTA4  = 4\r
638 .equ    PORTA3  = 3\r
639 .equ    PORTA2  = 2\r
640 .equ    PORTA1  = 1\r
641 .equ    PORTA0  = 0\r
642 \r
643 ; **** DDRA ****\r
644 .equ    DDA7    = 7             \r
645 .equ    DDA6    = 6\r
646 .equ    DDA5    = 5\r
647 .equ    DDA4    = 4\r
648 .equ    DDA3    = 3\r
649 .equ    DDA2    = 2\r
650 .equ    DDA1    = 1\r
651 .equ    DDA0    = 0\r
652 \r
653 ; **** PINA ****\r
654 .equ    PINA7   = 7             \r
655 .equ    PINA6   = 6\r
656 .equ    PINA5   = 5\r
657 .equ    PINA4   = 4\r
658 .equ    PINA3   = 3\r
659 .equ    PINA2   = 2\r
660 .equ    PINA1   = 1\r
661 .equ    PINA0   = 0\r
662 \r
663 ; **** PORT B ****\r
664 ; **** PORTB ****\r
665 .equ    PB7             = 7             \r
666 .equ    PB6             = 6\r
667 .equ    PB5             = 5\r
668 .equ    PB4             = 4\r
669 .equ    PB3             = 3\r
670 .equ    PB2             = 2\r
671 .equ    PB1             = 1\r
672 .equ    PB0             = 0\r
673 .equ    PORTB7  = 7\r
674 .equ    PORTB6  = 6\r
675 .equ    PORTB5  = 5\r
676 .equ    PORTB4  = 4\r
677 .equ    PORTB3  = 3\r
678 .equ    PORTB2  = 2\r
679 .equ    PORTB1  = 1\r
680 .equ    PORTB0  = 0\r
681 \r
682 ; **** DDRB ****\r
683 .equ    DDB7    = 7             \r
684 .equ    DDB6    = 6\r
685 .equ    DDB5    = 5\r
686 .equ    DDB4    = 4\r
687 .equ    DDB3    = 3\r
688 .equ    DDB2    = 2\r
689 .equ    DDB1    = 1\r
690 .equ    DDB0    = 0\r
691 \r
692 ; **** PINB ****\r
693 .equ    PINB7   = 7             \r
694 .equ    PINB6   = 6\r
695 .equ    PINB5   = 5\r
696 .equ    PINB4   = 4\r
697 .equ    PINB3   = 3\r
698 .equ    PINB2   = 2\r
699 .equ    PINB1   = 1\r
700 .equ    PINB0   = 0\r
701 \r
702 ;**** PORTC ****\r
703 .equ    PC7             = 7             \r
704 .equ    PC6             = 6\r
705 .equ    PC5             = 5\r
706 .equ    PC4             = 4\r
707 .equ    PC3             = 3\r
708 .equ    PC2             = 2\r
709 .equ    PC1             = 1\r
710 .equ    PC0             = 0\r
711 .equ    PORTC7  = 7\r
712 .equ    PORTC6  = 6\r
713 .equ    PORTC5  = 5\r
714 .equ    PORTC4  = 4\r
715 .equ    PORTC3  = 3\r
716 .equ    PORTC2  = 2\r
717 .equ    PORTC1  = 1\r
718 .equ    PORTC0  = 0\r
719 \r
720 ; **** DDRC ****\r
721 .equ    DDC7    = 7             \r
722 .equ    DDC6    = 6\r
723 .equ    DDC5    = 5\r
724 .equ    DDC4    = 4\r
725 .equ    DDC3    = 3\r
726 .equ    DDC2    = 2\r
727 .equ    DDC1    = 1\r
728 .equ    DDC0    = 0\r
729 \r
730 ; **** PINC ****\r
731 .equ    PINC7   = 7             \r
732 .equ    PINC6   = 6\r
733 .equ    PINC5   = 5\r
734 .equ    PINC4   = 4\r
735 .equ    PINC3   = 3\r
736 .equ    PINC2   = 2\r
737 .equ    PINC1   = 1\r
738 .equ    PINC0   = 0\r
739 \r
740 ;**** PORTD ****\r
741 .equ    PD7             = 7     \r
742 .equ    PD6             = 6\r
743 .equ    PD5             = 5\r
744 .equ    PD4             = 4\r
745 .equ    PD3             = 3\r
746 .equ    PD2             = 2\r
747 .equ    PD1             = 1\r
748 .equ    PD0             = 0\r
749 .equ    PORTD7  = 7\r
750 .equ    PORTD6  = 6\r
751 .equ    PORTD5  = 5\r
752 .equ    PORTD4  = 4\r
753 .equ    PORTD3  = 3\r
754 .equ    PORTD2  = 2\r
755 .equ    PORTD1  = 1\r
756 .equ    PORTD0  = 0\r
757 \r
758 ; **** DDRD ****\r
759 .equ    DDD7    = 7             \r
760 .equ    DDD6    = 6\r
761 .equ    DDD5    = 5\r
762 .equ    DDD4    = 4\r
763 .equ    DDD3    = 3\r
764 .equ    DDD2    = 2\r
765 .equ    DDD1    = 1\r
766 .equ    DDD0    = 0\r
767 \r
768 ; **** PIND ****\r
769 .equ    PIND7   = 7             \r
770 .equ    PIND6   = 6\r
771 .equ    PIND5   = 5\r
772 .equ    PIND4   = 4\r
773 .equ    PIND3   = 3\r
774 .equ    PIND2   = 2\r
775 .equ    PIND1   = 1\r
776 .equ    PIND0   = 0\r
777 \r
778 ;**** PORTE ****\r
779 .equ    PE7             = 7\r
780 .equ    PE6             = 6\r
781 .equ    PE5             = 5\r
782 .equ    PE4             = 4\r
783 .equ    PE3             = 3\r
784 .equ    PE2             = 2\r
785 .equ    PE1             = 1\r
786 .equ    PE0             = 0\r
787 .equ    PORTE7  = 7\r
788 .equ    PORTE6  = 6\r
789 .equ    PORTE5  = 5\r
790 .equ    PORTE4  = 4\r
791 .equ    PORTE3  = 3\r
792 .equ    PORTE2  = 2\r
793 .equ    PORTE1  = 1\r
794 .equ    PORTE0  = 0\r
795 \r
796 ; **** DDRE ****\r
797 .equ    DDE7    = 7             \r
798 .equ    DDE6    = 6\r
799 .equ    DDE5    = 5\r
800 .equ    DDE4    = 4\r
801 .equ    DDE3    = 3\r
802 .equ    DDE2    = 2\r
803 .equ    DDE1    = 1\r
804 .equ    DDE0    = 0\r
805 \r
806 ; **** PINE ****\r
807 .equ    PINE7   = 7             \r
808 .equ    PINE6   = 6\r
809 .equ    PINE5   = 5\r
810 .equ    PINE4   = 4\r
811 .equ    PINE3   = 3\r
812 .equ    PINE2   = 2\r
813 .equ    PINE1   = 1\r
814 .equ    PINE0   = 0\r
815 \r
816 ; **** PORTF ****\r
817 .equ    PF7             = 7             \r
818 .equ    PF6             = 6\r
819 .equ    PF5             = 5\r
820 .equ    PF4             = 4\r
821 .equ    PF3             = 3\r
822 .equ    PF2             = 2\r
823 .equ    PF1             = 1\r
824 .equ    PF0             = 0\r
825 .equ    PORTF7  = 7\r
826 .equ    PORTF6  = 6\r
827 .equ    PORTF5  = 5\r
828 .equ    PORTF4  = 4\r
829 .equ    PORTF3  = 3\r
830 .equ    PORTF2  = 2\r
831 .equ    PORTF1  = 1\r
832 .equ    PORTF0  = 0\r
833 \r
834 ; **** DDRF ****\r
835 .equ    DDF7    = 7             \r
836 .equ    DDF6    = 6\r
837 .equ    DDF5    = 5\r
838 .equ    DDF4    = 4\r
839 .equ    DDF3    = 3\r
840 .equ    DDF2    = 2\r
841 .equ    DDF1    = 1\r
842 .equ    DDF0    = 0\r
843 \r
844 ; **** PINF ****\r
845 .equ    PINF7   = 7             \r
846 .equ    PINF6   = 6\r
847 .equ    PINF5   = 5\r
848 .equ    PINF4   = 4\r
849 .equ    PINF3   = 3\r
850 .equ    PINF2   = 2\r
851 .equ    PINF1   = 1\r
852 .equ    PINF0   = 0\r
853 \r
854 ; **** PORTG ****\r
855 .equ    PG4             = 4             \r
856 .equ    PG3             = 3\r
857 .equ    PG2             = 2             \r
858 .equ    PG1             = 1\r
859 .equ    PG0             = 0\r
860 \r
861 ; **** DDRG ****\r
862 .equ    DDG4    = 4             \r
863 .equ    DDG3    = 3\r
864 .equ    DDG2    = 2\r
865 .equ    DDG1    = 1\r
866 .equ    DDG0    = 0\r
867 \r
868 ; **** PING ****\r
869 .equ    PING4   = 4\r
870 .equ    PING3   = 3     \r
871 .equ    PING2   = 2\r
872 .equ    PING1   = 1\r
873 .equ    PING0   = 0\r
874 \r
875 \r
876 ;*****************************************************************************\r
877 ; CPU Register Declarations\r
878 ;*****************************************************************************\r
879 \r
880 .def    XL      = r26           ; X pointer low\r
881 .def    XH      = r27           ; X pointer high\r
882 .def    YL      = r28           ; Y pointer low\r
883 .def    YH      = r29           ; Y pointer high\r
884 .def    ZL      = r30           ; Z pointer low\r
885 .def    ZH      = r31           ; Z pointer high\r
886 \r
887 \r
888 ;*****************************************************************************\r
889 ; Data Memory Declarations\r
890 ;*****************************************************************************\r
891 \r
892 .equ    RAMEND  = $10ff         ; Highest internal data memory (SRAM) address.\r
893 .equ    EEPROMEND = $07ff       ; Highest EEPROM address.\r
894         \r
895 ;*****************************************************************************\r
896 ; Program Memory Declarations\r
897 ;*****************************************************************************\r
898 \r
899 .equ    FLASHEND = $7FFF        ;  Highest program memory (flash) address\r
900                                 ; (When addressed as 16 bit words)\r
901                 \r
902 ;**** Boot Vectors ****\r
903                          ;  byte groups\r
904                          ;  /--\/--\/--\/--\ \r
905 .equ    SMALLBOOTSTART  = 0b0111111000000000    ; ($7E00) Smallest boot block is 512W\r
906 .equ    SECONDBOOTSTART = 0b0111110000000000    ; ($7C00) 2'nd boot block size is 1KW\r
907 .equ    THIRDBOOTSTART  = 0b0111100000000000    ; ($7800) Third boot block size is 2KW\r
908 .equ    LARGEBOOTSTART  = 0b0111000000000000    ; ($7000) Largest boot block is 4KW\r
909 \r
910 \r
911 ;**** Page Size ****\r
912 .equ    PAGESIZE        = 128   ; Number of WORDS in a page\r
913 \r
914 \r
915 ;**** Interrupt Vectors ****\r
916 .equ    INT0addr  = $002        ; External Interrupt0 Vector Address\r
917 .equ    INT1addr  = $004        ; External Interrupt1 Vector Address\r
918 .equ    INT2addr  = $006        ; External Interrupt2 Vector Address\r
919 .equ    INT3addr  = $008        ; External Interrupt3 Vector Address\r
920 .equ    INT4addr  = $00a        ; External Interrupt4 Vector Address\r
921 .equ    INT5addr  = $00c        ; External Interrupt5 Vector Address\r
922 .equ    INT6addr  = $00e        ; External Interrupt6 Vector Address\r
923 .equ    INT7addr  = $010        ; External Interrupt7 Vector Address\r
924 .equ    OC2addr   = $012        ; Output Compare2 Interrupt Vector Address\r
925 .equ    OVF2addr  = $014        ; Overflow2 Interrupt Vector Address\r
926 .equ    ICP1addr  = $016        ; Input Capture1 Interrupt Vector Address\r
927 .equ    OC1Aaddr  = $018        ; Output Compare1A Interrupt Vector Address\r
928 .equ    OC1Baddr  = $01a        ; Output Compare1B Interrupt Vector Address\r
929 .equ    OVF1addr  = $01c        ; Overflow1 Interrupt Vector Address\r
930 .equ    OC0addr   = $01e        ; Output Compare0 Interrupt Vector Address\r
931 .equ    OVF0addr  = $020        ; Overflow0 Interrupt Vector Address\r
932 .equ    SPIaddr   = $022        ; SPI Interrupt Vector Address\r
933 .equ    URXC0addr = $024        ; USART0 Receive Complete Interrupt Vector Address\r
934 .equ    UDRE0addr = $026        ; USART0 Data Register Empty Interrupt Vector Address\r
935 .equ    UTXC0addr = $028        ; USART0 Transmit Complete Interrupt Vector Address\r
936 .equ    ADCCaddr  = $02a        ; ADC Conversion Complete Handle\r
937 .equ    ERDYaddr  = $02c        ; EEPROM Write Complete Handle\r
938 .equ    ACIaddr   = $02e        ; Analog Comparator Interrupt Vector Address\r
939 \r
940 .equ    OC1Caddr  = $030        ; Output Compare1C Interrupt Vector Address\r
941 .equ    ICP3addr  = $032        ; Input Capture3 Interrupt Vector Address\r
942 .equ    OC3Aaddr  = $034        ; Output Compare3A Interrupt Vector Address\r
943 .equ    OC3Baddr  = $036        ; Output Compare3B Interrupt Vector Address\r
944 .equ    OC3Caddr  = $038        ; Output Compare3C Interrupt Vector Address\r
945 .equ    OVF3addr  = $03A        ; Overflow3 Interrupt Vector Address\r
946 .equ    URXC1addr = $03C        ; USART1 Receive Complete Interrupt Vector Address\r
947 .equ    UDRE1addr = $03E        ; USART1 Data Register Empty Interrupt Vector Address\r
948 .equ    UTXC1addr = $040        ; USART1 Transmit Complete Interrupt Vector Address\r
949 .equ    I2Caddr   = $042        ; I2C Interrupt Vector Address\r
950 .equ    TWIaddr   = $042        ; TWI Interrupt Vector Address\r
951 .equ    SPMRaddr  = $044        ; Store Program Memory Ready Interrupt Vector Address\r
952 \r
953 \r
954 ;**** End of File ****\r