| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662 |
- {******************************************************************************
- Register definitions and startup code for ATMEL ATmega48/88
- ******************************************************************************}
- unit atmega168fam;
- {$goto on}
- interface
- var
- PINB : byte absolute $23;
- DDRB : byte absolute $24;
- PORTB : byte absolute $25;
- PINC : byte absolute $26;
- DDRC : byte absolute $27;
- PORTC : byte absolute $28;
- PIND : byte absolute $29;
- DDRD : byte absolute $2A;
- PORTD : byte absolute $2B;
- TIFR0 : byte absolute $35;
- TIFR1 : byte absolute $36;
- PCIFR : byte absolute $3B;
- EIFR : byte absolute $3C;
- EIMSK : byte absolute $3D;
- GPIOR0 : byte absolute $3E;
- EECR : byte absolute $3F;
- EEDR : byte absolute $40;
- EEARL : byte absolute $41;
- EEARH : byte absolute $42;
- EEAR : word absolute $41;
- GTCCR : byte absolute $43;
- TCCR0A : byte absolute $44;
- TCCR0B : byte absolute $45;
- TCNT0 : byte absolute $46;
- OCR0A : byte absolute $47;
- OCR0B : byte absolute $48;
- GPIOR1 : byte absolute $4A;
- GPIOR2 : byte absolute $4B;
- SPCR : byte absolute $4C;
- SPSR : byte absolute $4D;
- SPDR : byte absolute $4E;
- ACSR : byte absolute $50;
- SMCR : byte absolute $53;
- MCUSR : byte absolute $54;
- MCUCR : byte absolute $55;
- SPMCSR : byte absolute $57;
- SPL : byte absolute $5D;
- SPH : byte absolute $5E;
- SP : word absolute $5D;
- SREG : byte absolute $5F;
- WDTCSR : byte absolute $60;
- CLKPR : byte absolute $61;
- PRR : byte absolute $64;
- OSCCAL : byte absolute $66;
- PCICR : byte absolute $68;
- EICRA : byte absolute $69;
- PCMSK0 : byte absolute $6B;
- PCMSK1 : byte absolute $6C;
- PCMSK2 : byte absolute $6D;
- TIMSK0 : byte absolute $6E;
- TIMSK1 : byte absolute $6F;
- TIMSK2 : byte absolute $70;
- ADCL : byte absolute $78;
- ADCH : byte absolute $79;
- ADC : word absolute $78;
- ADCSRA : byte absolute $7A;
- ADCSRB : byte absolute $7B;
- ADMUX : byte absolute $7C;
- DIDR0 : byte absolute $7E;
- DIDR1 : byte absolute $7F;
- TCCR1A : byte absolute $80;
- TCCR1B : byte absolute $81;
- TCCR1C : byte absolute $82;
- TCNT1L : byte absolute $84;
- TCNT1H : byte absolute $85;
- TCNT1 : word absolute $84;
- ICRL : byte absolute $86;
- ICR1H : byte absolute $87;
- OCR1AL : byte absolute $88;
- OCR1AH : byte absolute $89;
- OCR1A : word absolute $88;
- OCR1BL : byte absolute $8A;
- OCR1BH : byte absolute $8B;
- OCR1B : word absolute $8A;
- TCCR2A : byte absolute $B0;
- TCCR2B : byte absolute $B1;
- TCNT2 : byte absolute $B2;
- OCR2A : byte absolute $B3;
- OCR2B : byte absolute $B4;
- ASSR : byte absolute $B6;
- TWBR : byte absolute $B8;
- TWSR : byte absolute $B9;
- TWAR : byte absolute $BA;
- TWDR : byte absolute $BB;
- TWCR : byte absolute $BC;
- TWAMR : byte absolute $BD;
- UCSR0A : byte absolute $C0;
- UCSR0B : byte absolute $C1;
- UCSR0C : byte absolute $C2;
- UBRR0L : byte absolute $C4;
- UBRR0H : byte absolute $C5;
- UBRR0 : word absolute $C4;
- UDR0 : byte absolute $C6;
- const
- { PINB }
- PINB7 = 7;
- PINB6 = 6;
- PINB5 = 5;
- PINB4 = 4;
- PINB3 = 3;
- PINB2 = 2;
- PINB1 = 1;
- PINB0 = 0;
- { DDRB }
- DDB7 = 7;
- DDB6 = 6;
- DDB5 = 5;
- DDB4 = 4;
- DDB3 = 3;
- DDB2 = 2;
- DDB1 = 1;
- DDB0 = 0;
- { PORTB }
- PORTB7 = 7;
- PORTB6 = 6;
- PORTB5 = 5;
- PORTB4 = 4;
- PORTB3 = 3;
- PORTB2 = 2;
- PORTB1 = 1;
- PORTB0 = 0;
- { PINC }
- PINC6 = 6;
- PINC5 = 5;
- PINC4 = 4;
- PINC3 = 3;
- PINC2 = 2;
- PINC1 = 1;
- PINC0 = 0;
- { DDRC }
- DDC6 = 6;
- DDC5 = 5;
- DDC4 = 4;
- DDC3 = 3;
- DDC2 = 2;
- DDC1 = 1;
- DDC0 = 0;
- { PORTC }
- PORTC6 = 6;
- PORTC5 = 5;
- PORTC4 = 4;
- PORTC3 = 3;
- PORTC2 = 2;
- PORTC1 = 1;
- PORTC0 = 0;
- { PIND }
- PIND7 = 7;
- PIND6 = 6;
- PIND5 = 5;
- PIND4 = 4;
- PIND3 = 3;
- PIND2 = 2;
- PIND1 = 1;
- PIND0 = 0;
- { DDRD }
- DDD7 = 7;
- DDD6 = 6;
- DDD5 = 5;
- DDD4 = 4;
- DDD3 = 3;
- DDD2 = 2;
- DDD1 = 1;
- DDD0 = 0;
- { PORTD }
- PORTD7 = 7;
- PORTD6 = 6;
- PORTD5 = 5;
- PORTD4 = 4;
- PORTD3 = 3;
- PORTD2 = 2;
- PORTD1 = 1;
- PORTD0 = 0;
- { TIFR0 }
- OCF0B = 2;
- OCF0A = 1;
- TOV0 = 0;
- { TIFR1 }
- ICF1 = 5;
- OCF1B = 2;
- OCF1A = 1;
- TOV1 = 0;
- { PCIFR }
- PCIF2 = 2;
- PCIF1 = 1;
- PCIF0 = 0;
- { EIFR }
- INTF1 = 1;
- INTF0 = 0;
- { EIMSK }
- INT1 = 1;
- INT0 = 0;
- { EECR }
- EEPM1 = 5;
- EEPM0 = 4;
- EERIE = 3;
- EEMPE = 2;
- EEPE = 1;
- EERE = 0;
- { GTCCR }
- TSM = 7;
- PSRASY = 1;
- PSRSYNC = 0;
- { TCCR0A }
- COM0A1 = 7;
- COM0A0 = 6;
- COM0B1 = 5;
- COM0B0 = 4;
- WGM01 = 1;
- WGM00 = 0;
- { TCCR0B }
- FOC0A = 7;
- FOC0B = 6;
- WGM02 = 3;
- CS02 = 2;
- CS01 = 1;
- CS00 = 0;
- { SPCR }
- SPIE = 7;
- SPE = 6;
- DORD = 5;
- MSTR = 4;
- CPOL = 3;
- CPHA = 2;
- SPR1 = 1;
- SPR0 = 0;
- { SPSR }
- SPIF = 7;
- WCOL = 6;
- SPI2X = 0;
- { ACSR }
- ACD = 7;
- ACBG = 6;
- ACO = 5;
- ACI = 4;
- ACIE = 3;
- ACIC = 2;
- ACIS1 = 1;
- ACIS0 = 0;
- { SMCR }
- SM2 = 3;
- SM1 = 2;
- SM0 = 1;
- SE = 0;
- { MCUSR }
- WDRF = 3;
- BORF = 2;
- EXTRF = 1;
- PORF = 0;
- { MCUCR }
- PUD = 4;
- IVSEL = 1;
- IVCE = 0;
- { SPMCSR }
- SPMIE = 7;
- RWWSB = 6;
- RWWSRE = 4;
- BLBSET = 3;
- PGWRT = 2;
- PGERS = 1;
- SPMEN = 0;
- { WDTCSR }
- WDIF = 7;
- WDIE = 6;
- WDP3 = 5;
- WDCE = 4;
- WDE = 3;
- WDP2 = 2;
- WDP1 = 1;
- WDP0 = 0;
- { CLKPR }
- CLKPCE = 7;
- CLKPS3 = 3;
- CLKPS2 = 2;
- CLKPS1 = 1;
- CLKPS0 = 0;
- { PRR }
- PRTWI = 7;
- PRTIM2 = 6;
- PRTIM0 = 5;
- PRTIM1 = 3;
- PRSPI = 2;
- PRUSART0 = 1;
- PRADC = 0;
- { PCICR }
- PCIE2 = 2;
- PCIE1 = 1;
- PCIE0 = 0;
- { EICRA }
- ISC11 = 3;
- ISC10 = 2;
- ISC01 = 1;
- ISC00 = 0;
- { PCMSK0 }
- PCINT7 = 7;
- PCINT6 = 6;
- PCINT5 = 5;
- PCINT4 = 4;
- PCINT3 = 3;
- PCINT2 = 2;
- PCINT1 = 1;
- PCINT0 = 0;
- { PCMSK1 }
- PCINT14 = 6;
- PCINT13 = 5;
- PCINT12 = 4;
- PCINT11 = 3;
- PCINT10 = 2;
- PCINT9 = 1;
- PCINT8 = 0;
- { PCMSK2 }
- PCINT23 = 7;
- PCINT22 = 6;
- PCINT21 = 5;
- PCINT20 = 4;
- PCINT19 = 3;
- PCINT18 = 2;
- PCINT17 = 1;
- PCINT16 = 0;
- { TIMSK0 }
- OCIE0B = 2;
- OCIE0A = 1;
- TOIE0 = 0;
- { TIMSK1 }
- ICIE1 = 5;
- OCIE1B = 2;
- OCIE1A = 1;
- TOIE1 = 0;
- { TIMSK2 }
- OCIE2B = 2;
- OCIE2A = 1;
- TOIE2 = 0;
- { ADCSRA }
- ADEN = 7;
- ADSC = 6;
- ADATE = 5;
- ADIF = 4;
- ADIE = 3;
- ADPS2 = 2;
- ADPS1 = 1;
- ADPS0 = 0;
- { ADCSRB }
- ACME = 6;
- ADTS2 = 2;
- ADTS1 = 1;
- ADTS0 = 0;
- { ADMUX }
- REFS1 = 7;
- REFS0 = 6;
- ADLAR = 5;
- MUX3 = 3;
- MUX2 = 2;
- MUX1 = 1;
- MUX0 = 0;
- { DIDR0 }
- ADC5D = 5;
- ADC4D = 4;
- ADC3D = 3;
- ADC2D = 2;
- ADC1D = 1;
- ADC0D = 0;
- { DIDR1 }
- AIN1D = 1;
- AIN0D = 0;
- { TCCR1A }
- COM1A1 = 7;
- COM1A0 = 6;
- COM1B1 = 5;
- COM1B0 = 4;
- WGM11 = 1;
- WGM10 = 0;
- { TCCR1B }
- ICNC1 = 7;
- ICES1 = 6;
- WGM13 = 4;
- WGM12 = 3;
- CS12 = 2;
- CS11 = 1;
- CS10 = 0;
- { TCCR1C }
- FOC1A = 7;
- FOC1B = 6;
- { TCCR2A }
- COM2A1 = 7;
- COM2A0 = 6;
- COM2B1 = 5;
- COM2B0 = 4;
- WGM21 = 1;
- WGM20 = 0;
- { TCCR2B }
- FOC2A = 7;
- FOC2B = 6;
- WGM22 = 3;
- CS22 = 2;
- CS21 = 1;
- CS20 = 0;
- { ASSR }
- EXCLK = 6;
- AS2 = 5;
- TCN2UB = 4;
- OCR2AUB = 3;
- OCR2BUB = 2;
- TCR2AUB = 1;
- TCR2BUB = 0;
- { TWSR }
- TWS7 = 7;
- TWS6 = 6;
- TWS5 = 5;
- TWS4 = 4;
- TWS3 = 3;
- TWPS1 = 1;
- TWPS0 = 0;
- { TWAR }
- TWA6 = 7;
- TWA5 = 6;
- TWA4 = 5;
- TWA3 = 4;
- TWA2 = 3;
- TWA1 = 2;
- TWA0 = 1;
- { TWCR }
- TWINT = 7;
- TWEA = 6;
- TWSTA = 5;
- TWSTO = 4;
- TWWC = 3;
- TWEN = 2;
- TWIE = 0;
- { TWAMR }
- TWAM6 = 7;
- TWAM5 = 6;
- TWAM4 = 5;
- TWAM3 = 4;
- TWAM2 = 3;
- TWAM1 = 2;
- TWAM0 = 1;
- { UCSR0A }
- RXC0 = 7;
- TXC0 = 6;
- UDRE0 = 5;
- FE0 = 4;
- DOR0 = 3;
- UPE0 = 2;
- U2X0 = 1;
- MPCM0 = 0;
- { UCSR0B }
- RXCIE0 = 7;
- TXCIE0 = 6;
- UDRIE0 = 5;
- RXEN0 = 4;
- TXEN0 = 3;
- UCVSZ02 = 2;
- RXB80 = 1;
- TXB80 = 0;
- { UCSR0C }
- UMSEL01 = 7;
- UMSEL00 = 6;
- UPM01 = 5;
- UPM00 = 4;
- USBS0 = 3;
- UCVSZ01 = 2;
- UCVSZ00 = 1;
- UCPOL0 = 0;
- implementation
- {$i avrcommon.inc}
-
- procedure Int00Handler; external name 'Int00Handler';
- procedure Int01Handler; external name 'Int01Handler';
- procedure Int02Handler; external name 'Int02Handler';
- procedure Int03Handler; external name 'Int03Handler';
- procedure Int04Handler; external name 'Int04Handler';
- procedure Int05Handler; external name 'Int05Handler';
- procedure Int06Handler; external name 'Int06Handler';
- procedure Int07Handler; external name 'Int07Handler';
- procedure Int08Handler; external name 'Int08Handler';
- procedure Int09Handler; external name 'Int09Handler';
- procedure Int10Handler; external name 'Int10Handler';
- procedure Int11Handler; external name 'Int11Handler';
- procedure Int12Handler; external name 'Int12Handler';
- procedure Int13Handler; external name 'Int13Handler';
- procedure Int14Handler; external name 'Int14Handler';
- procedure Int15Handler; external name 'Int15Handler';
- procedure Int16Handler; external name 'Int16Handler';
- procedure Int17Handler; external name 'Int17Handler';
- procedure Int18Handler; external name 'Int18Handler';
- procedure Int19Handler; external name 'Int19Handler';
- procedure Int20Handler; external name 'Int20Handler';
- procedure Int21Handler; external name 'Int21Handler';
- procedure Int22Handler; external name 'Int22Handler';
- procedure Int23Handler; external name 'Int23Handler';
- procedure Int24Handler; external name 'Int24Handler';
- procedure Int25Handler; external name 'Int25Handler';
- procedure Int26Handler; external name 'Int26Handler';
- procedure Int27Handler; external name 'Int27Handler';
- procedure Int28Handler; external name 'Int28Handler';
- procedure Int29Handler; external name 'Int29Handler';
- procedure Int30Handler; external name 'Int30Handler';
- procedure Int31Handler; external name 'Int31Handler';
- procedure Int32Handler; external name 'Int32Handler';
- procedure Int33Handler; external name 'Int33Handler';
- procedure Int34Handler; external name 'Int34Handler';
- procedure _FPC_start; assembler; nostackframe;
- label
- _start;
- asm
- .init
- .globl _start
- jmp _start
- jmp Int00Handler
- jmp Int01Handler
- jmp Int02Handler
- jmp Int03Handler
- jmp Int04Handler
- jmp Int05Handler
- jmp Int06Handler
- jmp Int07Handler
- jmp Int08Handler
- jmp Int09Handler
- jmp Int10Handler
- jmp Int11Handler
- jmp Int12Handler
- jmp Int13Handler
- jmp Int14Handler
- jmp Int15Handler
- jmp Int16Handler
- jmp Int17Handler
- jmp Int18Handler
- jmp Int19Handler
- jmp Int20Handler
- jmp Int21Handler
- jmp Int22Handler
- jmp Int23Handler
- jmp Int24Handler
- {
- all ATMEL MCUs use the same startup code, the details are
- governed by defines
- }
- {$i start.inc}
- .weak Int00Handler
- .weak Int01Handler
- .weak Int02Handler
- .weak Int03Handler
- .weak Int04Handler
- .weak Int05Handler
- .weak Int06Handler
- .weak Int07Handler
- .weak Int08Handler
- .weak Int09Handler
- .weak Int10Handler
- .weak Int11Handler
- .weak Int12Handler
- .weak Int13Handler
- .weak Int14Handler
- .weak Int15Handler
- .weak Int16Handler
- .weak Int17Handler
- .weak Int18Handler
- .weak Int19Handler
- .weak Int20Handler
- .weak Int21Handler
- .weak Int22Handler
- .weak Int23Handler
- .weak Int24Handler
- .set Int00Handler, Default_IRQ_handler
- .set Int01Handler, Default_IRQ_handler
- .set Int02Handler, Default_IRQ_handler
- .set Int03Handler, Default_IRQ_handler
- .set Int04Handler, Default_IRQ_handler
- .set Int05Handler, Default_IRQ_handler
- .set Int06Handler, Default_IRQ_handler
- .set Int07Handler, Default_IRQ_handler
- .set Int08Handler, Default_IRQ_handler
- .set Int09Handler, Default_IRQ_handler
- .set Int10Handler, Default_IRQ_handler
- .set Int11Handler, Default_IRQ_handler
- .set Int12Handler, Default_IRQ_handler
- .set Int13Handler, Default_IRQ_handler
- .set Int14Handler, Default_IRQ_handler
- .set Int15Handler, Default_IRQ_handler
- .set Int16Handler, Default_IRQ_handler
- .set Int17Handler, Default_IRQ_handler
- .set Int18Handler, Default_IRQ_handler
- .set Int19Handler, Default_IRQ_handler
- .set Int20Handler, Default_IRQ_handler
- .set Int21Handler, Default_IRQ_handler
- .set Int22Handler, Default_IRQ_handler
- .set Int23Handler, Default_IRQ_handler
- .set Int24Handler, Default_IRQ_handler
- end;
- end.
|