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