-> mapping to an 1/x like behaviour
[my-code/atmel.git] / include / m169def.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                    : "m169def.inc"\r
6 ;* Title                        : Register/Bit Definitions for the ATmega169\r
7 ;* Date                         : June 14th, 2001\r
8 ;* Version                      : 2.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                   : ATmega169\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 ATmega169\r
42 \r
43 ;*****************************************************************************\r
44 ; I/O Register Definitions\r
45 ;*****************************************************************************\r
46 \r
47 ;**** Memory Mapped I/O Register Definitions  ****\r
48 .equ  LCDDR18   = $FE\r
49 .equ  LCDDR17   = $FD \r
50 .equ  LCDDR16   = $FC\r
51 .equ  LCDDR15   = $FB\r
52 .equ  LCDDR13   = $F9 \r
53 .equ  LCDDR12   = $F8\r
54 .equ  LCDDR11   = $F7\r
55 .equ  LCDDR10   = $F6 \r
56 .equ  LCDDR8    = $F4\r
57 .equ  LCDDR7    = $F3\r
58 .equ  LCDDR6    = $F2\r
59 .equ  LCDDR5    = $F1 \r
60 .equ  LCDDR3    = $EF\r
61 .equ  LCDDR2    = $EE\r
62 .equ  LCDDR1    = $ED \r
63 .equ  LCDDR0    = $EC\r
64 .equ  LCDCCR    = $E7\r
65 .equ  LCDFRR    = $E6\r
66 .equ  LCDCRB    = $E5\r
67 .equ  LCDCRA    = $E4\r
68 .equ  UDR0      = $C6  \r
69 .equ  UBRR0H    = $C5  \r
70 .equ  UBRR0L    = $C4  \r
71 .equ  UCSR0C    = $C2\r
72 .equ  UCSR0B    = $C1\r
73 .equ  UCSR0A    = $C0\r
74 .equ  USIDR     = $BA\r
75 .equ  USISR     = $B9\r
76 .equ  USICR     = $B8\r
77 .equ  ASSR      = $B6\r
78 .equ  OCR2A     = $B3  \r
79 .equ  TCNT2     = $B2  \r
80 .equ  TCCR2A    = $B0\r
81 .equ  OCR1BH    = $8B \r
82 .equ  OCR1BL    = $8A \r
83 .equ  OCR1AH    = $89 \r
84 .equ  OCR1AL    = $88 \r
85 .equ  ICR1H     = $87 \r
86 .equ  ICR1L     = $86 \r
87 .equ  TCNT1H    = $85 \r
88 .equ  TCNT1L    = $84 \r
89 .equ  TCCR1C    = $82 \r
90 .equ  TCCR1B    = $81\r
91 .equ  TCCR1A    = $80\r
92 .equ  DIDR1     = $7F\r
93 .equ  DIDR0     = $7E\r
94 .equ  ADMUX     = $7C \r
95 .equ  ADCSRB    = $7B\r
96 .equ  ADCSRA    = $7A\r
97 .equ  ADCH      = $79 \r
98 .equ  ADCL      = $78\r
99 .equ  TIMSK2    = $70\r
100 .equ  TIMSK1    = $6F\r
101 .equ  TIMSK0    = $6E\r
102 .equ  PCMSK1    = $6C\r
103 .equ  PCMSK0    = $6B \r
104 .equ  EICRA     = $69 \r
105 .equ  OSCCAL    = $66\r
106 .equ  CLKPR     = $61\r
107 .equ  WDTCR     = $60\r
108 .equ  SREG      = $3F\r
109 .equ  SPH       = $3E\r
110 .equ  SPL       = $3D\r
111 .equ  SPMCSR    = $37\r
112 .equ  MCUCR     = $35\r
113 .equ  MCUSR     = $34\r
114 .equ  SMCR      = $33\r
115 .equ  OCDR      = $31\r
116 .equ  ACSR      = $30\r
117 .equ  SPDR      = $2E \r
118 .equ  SPSR      = $2D\r
119 .equ  SPCR      = $2C\r
120 .equ  GPIOR2    = $2B \r
121 .equ  GPIOR1    = $2A \r
122 .equ  OCR0A     = $27\r
123 .equ  TCNT0     = $26 \r
124 .equ  TCCR0A    = $24\r
125 .equ  GTCCR     = $23\r
126 .equ  EEARH     = $22 \r
127 .equ  EEARL     = $21 \r
128 .equ  EEDR      = $20\r
129 .equ  EECR      = $1F\r
130 .equ  GPIOR0    = $1E \r
131 .equ  EIMSK     = $1D\r
132 .equ  EIFR      = $1C\r
133 .equ  TIFR2     = $17\r
134 .equ  TIFR1     = $16\r
135 .equ  TIFR0     = $15\r
136 .equ  PORTG     = $14\r
137 .equ  DDRG      = $13\r
138 .equ  PING      = $12\r
139 .equ  PORTF     = $11\r
140 .equ  DDRF      = $10\r
141 .equ  PINF      = $0F\r
142 .equ  PORTE     = $0E\r
143 .equ  DDRE      = $0D\r
144 .equ  PINE      = $0C\r
145 .equ  PORTD     = $0B\r
146 .equ  DDRD      = $0A\r
147 .equ  PIND      = $09\r
148 .equ  PORTC     = $08\r
149 .equ  DDRC      = $07\r
150 .equ  PINC      = $06\r
151 .equ  PORTB     = $05\r
152 .equ  DDRB      = $04\r
153 .equ  PINB      = $03\r
154 .equ  PORTA     = $02\r
155 .equ  DDRA      = $01\r
156 .equ  PINA      = $00\r
157 \r
158 ;*****************************************************************************\r
159 ; Bit Definitions\r
160 ;*****************************************************************************\r
161 \r
162 ; *** LCDDR18, LCDDR13, LCDDR8, LCDDR3 ***\r
163 .equ SEG24              = 0     \r
164 \r
165 ; *** LCDSR17, LCDSR12, LCDSR7, LCDSR2 ***\r
166 .equ SEG23      = 7 \r
167 .equ SEG22      = 6\r
168 .equ SEG21      = 5\r
169 .equ SEG20      = 4\r
170 .equ SEG19      = 3\r
171 .equ SEG18      = 2\r
172 .equ SEG17      = 1\r
173 .equ SEG16      = 0\r
174 \r
175 ; *** LCDSR16, LCDSR11, LCDSR6, LCDSR1 ***\r
176 .equ SEG15      = 7 \r
177 .equ SEG14      = 6\r
178 .equ SEG13      = 5\r
179 .equ SEG12      = 4\r
180 .equ SEG11      = 3\r
181 .equ SEG10      = 2\r
182 .equ SEG9       = 1\r
183 .equ SEG8       = 0\r
184         \r
185 ; *** LCDSR15, LCDSR10, LCDSR5, LCDSR0 ***\r
186 .equ SEG7       = 7 \r
187 .equ SEG6       = 6\r
188 .equ SEG5       = 5\r
189 .equ SEG4       = 4\r
190 .equ SEG3       = 3\r
191 .equ SEG2       = 2\r
192 .equ SEG1       = 1\r
193 .equ SEG0       = 0\r
194 \r
195 ; *** LCDCCR ***\r
196 .equ LCDCC3     = 3 \r
197 .equ LCDCC2     = 2\r
198 .equ LCDCC1     = 1\r
199 .equ LCDCC0     = 0\r
200 \r
201 ; *** LCDFRR *** \r
202 .equ LCDPS2     = 6 \r
203 .equ LCDPS1     = 5\r
204 .equ LCDPS0     = 4\r
205 .equ LCDCD2     = 2\r
206 .equ LCDCD1     = 1\r
207 .equ LCDCD0     = 0\r
208                                 \r
209 ; *** LCDCRB ***\r
210 .equ LCDCS      = 7 \r
211 .equ LCDB2      = 6\r
212 .equ LCDMUX1    = 5 \r
213 .equ LCDMUX0    = 4\r
214 .equ LCDPM2     = 2\r
215 .equ LCDPM1     = 1\r
216 .equ LCDPM0     = 0\r
217                 \r
218 ; *** LCDCRA ***\r
219 .equ LCDEN      = 7 \r
220 .equ LCDAB      = 6             \r
221 .equ LCDIF      = 4\r
222 .equ LCDIE      = 3\r
223 .equ LCDBL      = 0\r
224 \r
225 ; *** UCSR0C ***\r
226 .equ UMSEL0     = 6  \r
227 .equ UPM01      = 5\r
228 .equ UPM00      = 4\r
229 .equ USBS0      = 3\r
230 .equ UCSZ01     = 2\r
231 .equ UCSZ00     = 1\r
232 .equ UCPOL0     = 0\r
233 \r
234 ; *** UCSR0B ***\r
235 .equ RXCIE0     = 7  \r
236 .equ TXCIE0     = 6\r
237 .equ UDRIE0     = 5\r
238 .equ RXEN0      = 4\r
239 .equ TXEN0      = 3\r
240 .equ UCSZ02     = 2\r
241 .equ RXB80      = 1\r
242 .equ TXB80      = 0\r
243 \r
244 ; *** UCSR0A ***\r
245 .equ RXC0       = 7  \r
246 .equ TXC0       = 6\r
247 .equ UDRE0      = 5\r
248 .equ FE0        = 4\r
249 .equ DOR0       = 3\r
250 .equ PE0        = 2\r
251 .equ U2X0       = 1\r
252 .equ MPCM0      = 0\r
253 \r
254 ;*** USISR ***\r
255 .equ USISIF     = 7  \r
256 .equ USIOIF     = 6\r
257 .equ USIPF      = 5\r
258 .equ USIDC      = 4\r
259 .equ USICNT3    = 3\r
260 .equ USICNT2    = 2\r
261 .equ USICNT1    = 1\r
262 .equ USICNT0    = 0\r
263 \r
264 ; *** USICR ***\r
265 .equ USISIE     = 7  \r
266 .equ USIOIE     = 6\r
267 .equ USIWM1     = 5\r
268 .equ USIWM0     = 4\r
269 .equ USICS1     = 3\r
270 .equ USICS0     = 2\r
271 .equ USICLK     = 1\r
272 .equ USITC      = 0\r
273         \r
274 ; *** ASSR ***\r
275 .equ EXCLK      = 4\r
276 .equ AS2        = 3  \r
277 .equ TCN2UB     = 2\r
278 .equ OCR2UB     = 1\r
279 .equ TCR2UB     = 0\r
280 \r
281 ; *** TCCR2A ***\r
282 .equ FOC2       = 7  \r
283 .equ WGM20      = 6\r
284 .equ COM2A1     = 5\r
285 .equ COM2A0     = 4\r
286 .equ WGM21      = 3\r
287 .equ CS22       = 2\r
288 .equ CS21       = 1\r
289 .equ CS20       = 0\r
290 \r
291 ; *** TCCR1C ***\r
292 .equ FOC1A      = 7  \r
293 .equ FOC1B      = 6\r
294 \r
295 ; *** TCCR1B ***\r
296 .equ ICNC1      = 7  \r
297 .equ ICES1      = 6\r
298 .equ WGM13      = 4\r
299 .equ WGM12      = 3\r
300 .equ CS12       = 2\r
301 .equ CS11       = 1\r
302 .equ CS10       = 0\r
303 \r
304 ; *** TCCR1A ***\r
305 .equ COM1A1     = 7  \r
306 .equ COM1A0     = 6\r
307 .equ COM1B1     = 5\r
308 .equ COM1B0     = 4\r
309 .equ COM1C1     = 3\r
310 .equ COM1C0     = 2\r
311 .equ WGM11      = 1\r
312 .equ WGM10      = 0\r
313 \r
314 ; *** DIDR1 ***\r
315 .equ ADC7D      = 7  \r
316 .equ ADC6D      = 6\r
317 .equ ADC5D      = 5\r
318 .equ ADC4D      = 4\r
319 .equ ADC3D      = 3\r
320 .equ ADC2D      = 2\r
321 .equ ADC1D      = 1\r
322 .equ ADC0D      = 0\r
323 \r
324 ; *** DIDR0 ***\r
325 .equ AIN1D      = 1  \r
326 .equ AIN0D      = 0\r
327 \r
328 ; *** ADMUX ***\r
329 .equ REFS1      = 7  \r
330 .equ REFS0      = 6\r
331 .equ ADLAR      = 5\r
332 .equ MUX4       = 4\r
333 .equ MUX3       = 3\r
334 .equ MUX2       = 2\r
335 .equ MUX1       = 1\r
336 .equ MUX0       = 0\r
337 \r
338 ; *** ADCSRB ***\r
339 .equ ADHSM      = 7  \r
340 .equ ACME       = 6\r
341 .equ ADTS2      = 2\r
342 .equ ADTS1      = 1\r
343 .equ ADTS0      = 0\r
344 \r
345 ; *** ADCSRA ***\r
346 .equ ADEN       = 7  \r
347 .equ ADSC       = 6\r
348 .equ ADRF       = 5\r
349 .equ ADIF       = 4\r
350 .equ ADIE       = 3\r
351 .equ ADPS2      = 2\r
352 .equ ADPS1      = 1\r
353 .equ ADPS0      = 0\r
354 \r
355 ; *** TIMSK2 ***\r
356 .equ OCIE2A     = 1\r
357 .equ TOIE2      = 0\r
358 \r
359 ; *** TIMSK1 ***\r
360 .equ ICIE1      = 5  \r
361 .equ OCIE1B     = 2\r
362 .equ OCIE1A     = 1\r
363 .equ TOIE1      = 0\r
364 \r
365 ; *** TIMSK0 ***\r
366 .equ OCIE0A     = 1\r
367 .equ TOIE0      = 0\r
368 \r
369 ; *** PCMSK1 ***\r
370 .equ PCINT15    = 7  \r
371 .equ PCINT14    = 6\r
372 .equ PCINT13    = 5\r
373 .equ PCINT12    = 4\r
374 .equ PCINT11    = 3\r
375 .equ PCINT10    = 2\r
376 .equ PCINT9     = 1\r
377 .equ PCINT8     = 0\r
378 \r
379 ; *** PCMSK0 ***\r
380 .equ PCINT7     = 7  \r
381 .equ PCINT6     = 6\r
382 .equ PCINT5     = 5\r
383 .equ PCINT4     = 4\r
384 .equ PCINT3     = 3\r
385 .equ PCINT2     = 2\r
386 .equ PCINT1     = 1\r
387 .equ PCINT0     = 0\r
388 \r
389 ; *** EICRA ***\r
390 .equ ISC01      = 1\r
391 .equ ISC00      = 0\r
392 \r
393 ; *** CLKPR ***\r
394 .equ CLKPCE     = 7  \r
395 .equ CLKPS3     = 3\r
396 .equ CLKPS2     = 2\r
397 .equ CLKPS1     = 1\r
398 .equ CLKPS0     = 0\r
399 \r
400 ; *** WDTCR ***\r
401 .equ WDCE       = 4  \r
402 .equ WDE        = 3\r
403 .equ WDP2       = 2\r
404 .equ WDP1       = 1\r
405 .equ WDP0       = 0\r
406 \r
407 ; *** SREG ***\r
408 .equ I          = 7  \r
409 .equ T          = 6\r
410 .equ H          = 5\r
411 .equ S          = 4\r
412 .equ V          = 3\r
413 .equ N          = 2\r
414 .equ Z          = 1\r
415 .equ C          = 0\r
416 \r
417 ; *** SPH ***\r
418 .equ SP15       = 7  \r
419 .equ SP14       = 6\r
420 .equ SP13       = 5\r
421 .equ SP12       = 4\r
422 .equ SP11       = 3\r
423 .equ SP10       = 2\r
424 .equ SP9        = 1\r
425 .equ SP8        = 0\r
426 \r
427 ; *** SPL ***\r
428 .equ SP7        = 7  \r
429 .equ SP6        = 6\r
430 .equ SP5        = 5\r
431 .equ SP4        = 4\r
432 .equ SP3        = 3\r
433 .equ SP2        = 2\r
434 .equ SP1        = 1\r
435 .equ SP0        = 0\r
436 \r
437 ; *** SPMCSR ***\r
438 .equ SPMIE      = 7  \r
439 .equ RWWSB      = 6\r
440 .equ RWWSRE     = 4\r
441 .equ BLBSET     = 3\r
442 .equ PGWRT      = 2\r
443 .equ PGERS      = 1\r
444 .equ SPMEN      = 0\r
445 \r
446 ; *** MCUCR ***\r
447 .equ JTD        = 7  \r
448 .equ PUD        = 4\r
449 .equ IVSEL      = 1\r
450 .equ IVCE       = 0\r
451 \r
452 ; *** MCUSR ***\r
453 .equ JTRF       = 4  \r
454 .equ WDRF       = 3\r
455 .equ BORF       = 2\r
456 .equ EXTRF      = 1\r
457 .equ PORF       = 0\r
458 \r
459 ; *** SMCR ***\r
460 .equ SM2        = 3  \r
461 .equ SM1        = 2\r
462 .equ SM0        = 1\r
463 .equ SE         = 0\r
464 \r
465 ; *** OCDR ***\r
466 .equ IDRD       = 7  \r
467 .equ OCD        = 7\r
468 .equ OCDR6      = 6\r
469 .equ OCDR5      = 5\r
470 .equ OCDR4      = 4\r
471 .equ OCDR3      = 3\r
472 .equ OCDR2      = 2\r
473 .equ OCDR1      = 1\r
474 .equ OCDR0      = 0\r
475 \r
476 ; *** ACSR ***\r
477 .equ ACD        = 7  \r
478 .equ ACBG       = 6\r
479 .equ ACO        = 5\r
480 .equ ACI        = 4\r
481 .equ ACIE       = 3\r
482 .equ ACIC       = 2\r
483 .equ ACIS1      = 1\r
484 .equ ACIS0      = 0\r
485 \r
486 ; *** SPSR ***\r
487 .equ SPIF       = 7  \r
488 .equ WCOL       = 6\r
489 .equ SPI2X      = 0\r
490 \r
491 ; *** SPCR ***\r
492 .equ SPIE       = 7 \r
493 .equ SPE        = 6\r
494 .equ DORD       = 5\r
495 .equ MSTR       = 4\r
496 .equ CPOL       = 3\r
497 .equ CPHA       = 2\r
498 .equ SPR1       = 1\r
499 .equ SPR0       = 0\r
500 \r
501 ; *** TCCR0A ***\r
502 .equ FOC0A      = 7 \r
503 .equ WGM00      = 6\r
504 .equ COM0A1     = 5\r
505 .equ COM0A0     = 4\r
506 .equ WGM01      = 3\r
507 .equ CS02       = 2\r
508 .equ CS01       = 1\r
509 .equ CS00       = 0\r
510 \r
511 ; *** GTCCR ***\r
512 .equ TSM        = 7  \r
513 .equ PSR2       = 1\r
514 .equ PSR10      = 0\r
515                                          \r
516 ; To make tim8pwm_def.inc file\r
517 ; part independent.             \r
518 .equ PSR0       = PSR10  \r
519 .equ PSR1       = PSR10\r
520         \r
521 ; *** EECR ***\r
522 .equ EERIE      = 3  \r
523 .equ EEMWE      = 2\r
524 .equ EEWE       = 1\r
525 .equ EERE       = 0\r
526 \r
527 ; *** EIMSK ***\r
528 .equ PCIE1      = 7\r
529 .equ PCIE0      = 6\r
530 .equ INT0       = 0\r
531 \r
532 ; *** EIFR ***\r
533 .equ PCIF1      = 7\r
534 .equ PCIF0      = 6\r
535 .equ INTF0      = 0\r
536 \r
537 ; *** TIFR2 ***\r
538 .equ OCF2A      = 1\r
539 .equ TOV2       = 0\r
540 \r
541 ; *** TIFR1 ***\r
542 .equ ICF1       = 5  \r
543 .equ OCF1B      = 2\r
544 .equ OCF1A      = 1\r
545 .equ TOV1       = 0\r
546 \r
547 ; *** TIFR0 ***\r
548 .equ OCF0A      = 1\r
549 .equ TOV0       = 0\r
550 \r
551 ; *** PORTG ***\r
552 .equ PORTG5     = 5\r
553 .equ PORTG4     = 4\r
554 .equ PORTG3     = 3\r
555 .equ PORTG2     = 2\r
556 .equ PORTG1     = 1\r
557 .equ PORTG0     = 0\r
558 \r
559 ; *** DDRG ***\r
560 .equ DDG4       = 4\r
561 .equ DDG3       = 3\r
562 .equ DDG2       = 2\r
563 .equ DDG1       = 1\r
564 .equ DDG0       = 0\r
565 \r
566 ; *** PING ***\r
567 .equ PING5      = 5\r
568 .equ PING4      = 4\r
569 .equ PING3      = 3\r
570 .equ PING2      = 2\r
571 .equ PING1      = 1\r
572 .equ PING0      = 0\r
573 \r
574 ; *** PORTF ***\r
575 .equ PORTF7     = 7  \r
576 .equ PORTF6     = 6\r
577 .equ PORTF5     = 5\r
578 .equ PORTF4     = 4\r
579 .equ PORTF3     = 3\r
580 .equ PORTF2     = 2\r
581 .equ PORTF1     = 1\r
582 .equ PORTF0     = 0\r
583 \r
584 ; *** DDRF ***\r
585 .equ DDF7       = 7  \r
586 .equ DDF6       = 6\r
587 .equ DDF5       = 5\r
588 .equ DDF4       = 4\r
589 .equ DDF3       = 3\r
590 .equ DDF2       = 2\r
591 .equ DDF1       = 1\r
592 .equ DDF0       = 0\r
593 \r
594 ; *** PINF ***\r
595 .equ PINF7      = 7  \r
596 .equ PINF6      = 6\r
597 .equ PINF5      = 5\r
598 .equ PINF4      = 4\r
599 .equ PINF3      = 3\r
600 .equ PINF2      = 2\r
601 .equ PINF1      = 1\r
602 .equ PINF0      = 0\r
603 \r
604 ; *** PORTE ***\r
605 .equ PORTE7     = 7  \r
606 .equ PORTE6     = 6\r
607 .equ PORTE5     = 5\r
608 .equ PORTE4     = 4\r
609 .equ PORTE3     = 3\r
610 .equ PORTE2     = 2\r
611 .equ PORTE1     = 1\r
612 .equ PORTE0     = 0\r
613 \r
614 ; *** DDRE ***\r
615 .equ DDE7       = 7  \r
616 .equ DDE6       = 6\r
617 .equ DDE5       = 5\r
618 .equ DDE4       = 4\r
619 .equ DDE3       = 3\r
620 .equ DDE2       = 2\r
621 .equ DDE1       = 1\r
622 .equ DDE0       = 0\r
623 \r
624 ; *** PINE ***\r
625 .equ PINE7      = 7  \r
626 .equ PINE6      = 6\r
627 .equ PINE5      = 5\r
628 .equ PINE4      = 4\r
629 .equ PINE3      = 3\r
630 .equ PINE2      = 2\r
631 .equ PINE1      = 1\r
632 .equ PINE0      = 0\r
633 \r
634 ; *** PORTD ***\r
635 .equ PORTD7     = 7  \r
636 .equ PORTD6     = 6\r
637 .equ PORTD5     = 5\r
638 .equ PORTD4     = 4\r
639 .equ PORTD3     = 3\r
640 .equ PORTD2     = 2\r
641 .equ PORTD1     = 1\r
642 .equ PORTD0     = 0\r
643 \r
644 ; *** DDRD ***\r
645 .equ DDD7       = 7  \r
646 .equ DDD6       = 6\r
647 .equ DDD5       = 5\r
648 .equ DDD4       = 4\r
649 .equ DDD3       = 3\r
650 .equ DDD2       = 2\r
651 .equ DDD1       = 1\r
652 .equ DDD0       = 0\r
653 \r
654 ; *** PIND ***\r
655 .equ PIND7      = 7  \r
656 .equ PIND6      = 6\r
657 .equ PIND5      = 5\r
658 .equ PIND4      = 4\r
659 .equ PIND3      = 3\r
660 .equ PIND2      = 2\r
661 .equ PIND1      = 1\r
662 .equ PIND0      = 0\r
663 \r
664 ; *** PORTC ***\r
665 .equ PORTC7     = 7  \r
666 .equ PORTC6     = 6\r
667 .equ PORTC5     = 5\r
668 .equ PORTC4     = 4\r
669 .equ PORTC3     = 3\r
670 .equ PORTC2     = 2\r
671 .equ PORTC1     = 1\r
672 .equ PORTC0     = 0\r
673 \r
674 ; *** DDRC ***\r
675 .equ DDC7       = 7  \r
676 .equ DDC6       = 6\r
677 .equ DDC5       = 5\r
678 .equ DDC4       = 4\r
679 .equ DDC3       = 3\r
680 .equ DDC2       = 2\r
681 .equ DDC1       = 1\r
682 .equ DDC0       = 0\r
683 \r
684 ; *** PINC ***\r
685 .equ PINC7      = 7  \r
686 .equ PINC6      = 6\r
687 .equ PINC5      = 5\r
688 .equ PINC4      = 4\r
689 .equ PINC3      = 3\r
690 .equ PINC2      = 2\r
691 .equ PINC1      = 1\r
692 .equ PINC0      = 0\r
693 \r
694 ; *** PORTB ***\r
695 .equ PORTB7     = 7  \r
696 .equ PORTB6     = 6\r
697 .equ PORTB5     = 5\r
698 .equ PORTB4     = 4\r
699 .equ PORTB3     = 3\r
700 .equ PORTB2     = 2\r
701 .equ PORTB1     = 1\r
702 .equ PORTB0     = 0\r
703 \r
704 ; *** DDRB ***\r
705 .equ DDB7       = 7  \r
706 .equ DDB6       = 6\r
707 .equ DDB5       = 5\r
708 .equ DDB4       = 4\r
709 .equ DDB3       = 3\r
710 .equ DDB2       = 2\r
711 .equ DDB1       = 1\r
712 .equ DDB0       = 0\r
713 \r
714 ; *** PINB ***\r
715 .equ PINB7      = 7  \r
716 .equ PINB6      = 6\r
717 .equ PINB5      = 5\r
718 .equ PINB4      = 4\r
719 .equ PINB3      = 3\r
720 .equ PINB2      = 2\r
721 .equ PINB1      = 1\r
722 .equ PINB0      = 0\r
723 \r
724 ; *** PORTA ***\r
725 .equ PORTA7     = 7  \r
726 .equ PORTA6     = 6\r
727 .equ PORTA5     = 5\r
728 .equ PORTA4     = 4\r
729 .equ PORTA3     = 3\r
730 .equ PORTA2     = 2\r
731 .equ PORTA1     = 1\r
732 .equ PORTA0     = 0\r
733 \r
734 ; *** DDRA ***\r
735 .equ DDA7       = 7  \r
736 .equ DDA6       = 6\r
737 .equ DDA5       = 5\r
738 .equ DDA4       = 4\r
739 .equ DDA3       = 3\r
740 .equ DDA2       = 2\r
741 .equ DDA1       = 1\r
742 .equ DDA0       = 0\r
743 \r
744 ; *** PINA ***\r
745 .equ PINA7      = 7  \r
746 .equ PINA6      = 6\r
747 .equ PINA5      = 5\r
748 .equ PINA4      = 4\r
749 .equ PINA3      = 3\r
750 .equ PINA2      = 2\r
751 .equ PINA1      = 1\r
752 .equ PINA0      = 0\r
753 \r
754 ;*****************************************************************************\r
755 ; CPU Register Declarations\r
756 ;*****************************************************************************\r
757 \r
758 .def    XL      = r26           ; X pointer low\r
759 .def    XH      = r27           ; X pointer high\r
760 .def    YL      = r28           ; Y pointer low\r
761 .def    YH      = r29           ; Y pointer high\r
762 .def    ZL      = r30           ; Z pointer low\r
763 .def    ZH      = r31           ; Z pointer high\r
764 \r
765 \r
766 ;*****************************************************************************\r
767 ; Data Memory Declarations\r
768 ;*****************************************************************************\r
769 \r
770 .equ    RAMEND  = $4ff          ; Highest internal data memory (SRAM) address.\r
771                                                         ;(1k RAM + IO + REG)\r
772 .equ    EEPROMEND = $01ff   ; Highest EEPROM address.\r
773                                 ;(512 byte)\r
774 ;*****************************************************************************\r
775 ; Program Memory Declarations\r
776 ;*****************************************************************************\r
777 \r
778 .equ    FLASHEND = $1FFF        ;  Highest program memory (flash) address\r
779                                 ; (When addressed as 16 bit words)\r
780                                                         ; ( 8k words , 16k byte ) \r
781                 \r
782 ;**** Boot Vectors ****\r
783                         ;  byte groups\r
784                         ;   /--\/--\/--\ \r
785 .equ    SMALLBOOTSTART  =0b1111110000000  ;($1F80) smallest boot block is 256B\r
786 .equ    SECONDBOOTSTART =0b1111100000000  ;($1F00) second boot block size is 512B\r
787 .equ    THIRDBOOTSTART  =0b1111000000000  ;($1E00) third boot block size is 1KB\r
788 .equ    LARGEBOOTSTART  =0b1110000000000  ;($1C00) largest boot block is 2KB\r
789 .equ    BOOTSTART       =THIRDBOOTSTART   ;OBSOLETE!!! kept for compatibility\r
790 \r
791 ;**** Page Size ****\r
792 .equ    PAGESIZE        =64     ;number of WORDS in a page\r
793 \r
794 ;**** Interrupt Vectors ****            \r
795 .equ    INT0addr     =$002      ;External Interrupt0 Interrupt Address\r
796 .equ    PCINT0addr   =$004      ;Pin Change Interrupt0 Interrupt Address \r
797 .equ    PCINT1addr   =$006      ;Pin Change Interrupt1 Interrupt Address\r
798 .equ    CMP2addr     =$008 \r
799 .equ    OC2addr      =$008      ;Timer/Counter2 Compare Match Interrupt Address\r
800 .equ    OVF2addr     =$00a      ;Overflow1 Interrupt Address\r
801 .equ    ICP1addr     =$00c      ;Input Capture1 Interrupt Address\r
802 .equ    OC1Aaddr     =$00e      ;Output Compare1A Interrupt Address\r
803 .equ    OC1Baddr     =$010      ;Output Compare1B Interrupt Address \r
804 .equ    OVF1addr     =$012      ;Overflow1 Interrupt Address\r
805 .equ    CMP0addr     =$014 \r
806 .equ    OC0addr      =$014      ;Timer/Counter0 Compare Match Interrupt Address\r
807 .equ    OVF0addr     =$016      ;Overflow0 Interrupt Address\r
808 .equ    SPIaddr      =$018      ;SPI Interrupt Address\r
809 .equ    URXC0addr    =$01a      ;UART Receive Complete Interrupt Address\r
810 .equ    UDRE0addr    =$01c      ;UART Data Register Empty Interrupt Address\r
811 .equ    UTXC0addr    =$01e      ;UART Transmit Complete Interrupt Address\r
812 .equ    USI_STARTaddr=$020      ;Universal Serial Bus Start Interrupt Address   \r
813 .equ    USI_OVFaddr  =$022      ;Universal Serial Bus Overflow Interrupt Address        \r
814 .equ    ACIaddr      =$024      ;Analog Comparator Interrupt Address\r
815 .equ  ADCCaddr     =$026        ;ADC Conversion Complete Interrupt Address\r
816 .equ    ERDYaddr     =$028      ;EEPROM write complete Interrupt Address\r
817 .equ    SPMRaddr     =$02a      ;Store Program Memory Ready Interrupt Address\r
818 .equ    LCDSFaddr    =$02c      ;LCD Start of Frame Interrupt Address\r
819 \r
820 ;for compatibility with s8515\r
821 .equ    URXCaddr=$01a   ;UART Receive Complete Interrupt \r
822 .equ    UDREaddr=$01e   ;UART Data Register Empty Interrupt \r
823 .equ    UTXCaddr=$022   ;UART Transmit Complete Interrupt \r
824 \r