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