mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-09 17:06:04 +02:00
* completed atmega128-Unit by Christian
git-svn-id: trunk@18849 -
This commit is contained in:
parent
a08dfdf803
commit
a774f4681a
@ -1,7 +1,6 @@
|
|||||||
{******************************************************************************
|
{******************************************************************************
|
||||||
Register definitions and startup code for ATMEL ATmega128
|
Register definitions and startup code for ATMEL ATmega128
|
||||||
|
|
||||||
|
|
||||||
******************************************************************************}
|
******************************************************************************}
|
||||||
unit atmega128;
|
unit atmega128;
|
||||||
|
|
||||||
@ -9,6 +8,505 @@ unit atmega128;
|
|||||||
{$macro on}
|
{$macro on}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
type
|
||||||
|
const
|
||||||
|
_SFR_OFFSET = $20; //indirect addressing
|
||||||
|
var
|
||||||
|
PINF : byte absolute $00+_SFR_OFFSET;
|
||||||
|
PINE : byte absolute $01+_SFR_OFFSET;
|
||||||
|
DDRE : byte absolute $02+_SFR_OFFSET;
|
||||||
|
PORTE : byte absolute $03+_SFR_OFFSET;
|
||||||
|
ADCW : word absolute $04+_SFR_OFFSET;
|
||||||
|
ADC : word absolute $04+_SFR_OFFSET;
|
||||||
|
ADCL : byte absolute $04+_SFR_OFFSET;
|
||||||
|
ADCH : byte absolute $05+_SFR_OFFSET;
|
||||||
|
ADCSR : byte absolute $06+_SFR_OFFSET;
|
||||||
|
ADCSRA : byte absolute $06+_SFR_OFFSET;
|
||||||
|
ADMUX : byte absolute $07+_SFR_OFFSET;
|
||||||
|
ACSR : byte absolute $08+_SFR_OFFSET;
|
||||||
|
UBRR0L : byte absolute $09+_SFR_OFFSET;
|
||||||
|
UCSR0B : byte absolute $0A+_SFR_OFFSET;
|
||||||
|
UCSR0A : byte absolute $0B+_SFR_OFFSET;
|
||||||
|
UDR0 : byte absolute $0C+_SFR_OFFSET;
|
||||||
|
SPCR : byte absolute $0D+_SFR_OFFSET;
|
||||||
|
SPSR : byte absolute $0E+_SFR_OFFSET;
|
||||||
|
SPDR : byte absolute $0F+_SFR_OFFSET;
|
||||||
|
PIND : byte absolute $10+_SFR_OFFSET;
|
||||||
|
DDRD : byte absolute $11+_SFR_OFFSET;
|
||||||
|
PORTD : byte absolute $12+_SFR_OFFSET;
|
||||||
|
PINC : byte absolute $13+_SFR_OFFSET;
|
||||||
|
DDRC : byte absolute $14+_SFR_OFFSET;
|
||||||
|
PORTC : byte absolute $15+_SFR_OFFSET;
|
||||||
|
PINB : byte absolute $16+_SFR_OFFSET;
|
||||||
|
DDRB : byte absolute $17+_SFR_OFFSET;
|
||||||
|
PORTB : byte absolute $18+_SFR_OFFSET;
|
||||||
|
PINA : byte absolute $19+_SFR_OFFSET;
|
||||||
|
DDRA : byte absolute $1A+_SFR_OFFSET;
|
||||||
|
PORTA : byte absolute $1B+_SFR_OFFSET;
|
||||||
|
EECR : byte absolute $1C+_SFR_OFFSET;
|
||||||
|
EEDR : byte absolute $1D+_SFR_OFFSET;
|
||||||
|
EEAR : word absolute $1E+_SFR_OFFSET;
|
||||||
|
EEARL : byte absolute $1E+_SFR_OFFSET;
|
||||||
|
EEARH : byte absolute $1F+_SFR_OFFSET;
|
||||||
|
SFIOR : byte absolute $20+_SFR_OFFSET;
|
||||||
|
WDTCR : byte absolute $21+_SFR_OFFSET;
|
||||||
|
OCDR : byte absolute $22+_SFR_OFFSET;
|
||||||
|
OCR2 : byte absolute $23+_SFR_OFFSET;
|
||||||
|
TCNT2 : byte absolute $24+_SFR_OFFSET;
|
||||||
|
TCCR2 : byte absolute $25+_SFR_OFFSET;
|
||||||
|
ICR1 : word absolute $26+_SFR_OFFSET;
|
||||||
|
ICR1L : byte absolute $26+_SFR_OFFSET;
|
||||||
|
ICR1H : byte absolute $27+_SFR_OFFSET;
|
||||||
|
OCR1B : word absolute $28+_SFR_OFFSET;
|
||||||
|
OCR1BL : byte absolute $28+_SFR_OFFSET;
|
||||||
|
OCR1BH : byte absolute $29+_SFR_OFFSET;
|
||||||
|
OCR1A : word absolute $2A+_SFR_OFFSET;
|
||||||
|
OCR1AL : byte absolute $2A+_SFR_OFFSET;
|
||||||
|
OCR1AH : byte absolute $2B+_SFR_OFFSET;
|
||||||
|
TCNT1 : word absolute $2C+_SFR_OFFSET;
|
||||||
|
TCNT1L : byte absolute $2C+_SFR_OFFSET;
|
||||||
|
TCNT1H : byte absolute $2D+_SFR_OFFSET;
|
||||||
|
TCCR1B : byte absolute $2E+_SFR_OFFSET;
|
||||||
|
TCCR1A : byte absolute $2F+_SFR_OFFSET;
|
||||||
|
TCCR1B : byte absolute $2E+_SFR_OFFSET;
|
||||||
|
ASSR : byte absolute $30+_SFR_OFFSET;
|
||||||
|
OCR0 : byte absolute $31+_SFR_OFFSET;
|
||||||
|
TCNT0 : byte absolute $32+_SFR_OFFSET;
|
||||||
|
TCCR0 : byte absolute $33+_SFR_OFFSET;
|
||||||
|
MCUSR : byte absolute $34+_SFR_OFFSET;
|
||||||
|
MCUCSR : byte absolute $34+_SFR_OFFSET;
|
||||||
|
MCUCR : byte absolute $35+_SFR_OFFSET;
|
||||||
|
TIFR : byte absolute $36+_SFR_OFFSET;
|
||||||
|
TIMSK : byte absolute $37+_SFR_OFFSET;
|
||||||
|
EIFR : byte absolute $38+_SFR_OFFSET;
|
||||||
|
EIMSK : byte absolute $39+_SFR_OFFSET;
|
||||||
|
EICRB : byte absolute $3A+_SFR_OFFSET;
|
||||||
|
RAMPZ : byte absolute $3B+_SFR_OFFSET;
|
||||||
|
XDIV : byte absolute $3C+_SFR_OFFSET;
|
||||||
|
DDRF : byte absolute $61;
|
||||||
|
PORTF : byte absolute $62;
|
||||||
|
PING : byte absolute $63;
|
||||||
|
DDRG : byte absolute $64;
|
||||||
|
PORTG : byte absolute $65;
|
||||||
|
SPMCSR : byte absolute $68;
|
||||||
|
EICRA : byte absolute $6A;
|
||||||
|
XMCRB : byte absolute $6C;
|
||||||
|
XMCRA : byte absolute $6D;
|
||||||
|
OSCCAL : byte absolute $6F;
|
||||||
|
TWBR : byte absolute $70;
|
||||||
|
TWSR : byte absolute $71;
|
||||||
|
TWAR : byte absolute $72;
|
||||||
|
TWDR : byte absolute $73;
|
||||||
|
TWCR : byte absolute $74;
|
||||||
|
OCR1C : word absolute $78;
|
||||||
|
OCR1CL : byte absolute $78;
|
||||||
|
OCR1CH : byte absolute $79;
|
||||||
|
TCCR1C : byte absolute $7A;
|
||||||
|
ETIFR : byte absolute $7C;
|
||||||
|
ETIMSK : byte absolute $7D;
|
||||||
|
ICR3 : word absolute $80;
|
||||||
|
ICR3L : byte absolute $80;
|
||||||
|
ICR3H : byte absolute $81;
|
||||||
|
OCR3C : word absolute $82;
|
||||||
|
OCR3CL : byte absolute $82;
|
||||||
|
OCR3CH : byte absolute $83;
|
||||||
|
OCR3B : word absolute $84;
|
||||||
|
OCR3BL : byte absolute $84;
|
||||||
|
OCR3BH : byte absolute $85;
|
||||||
|
OCR3A : word absolute $86;
|
||||||
|
OCR3AL : byte absolute $86;
|
||||||
|
OCR3AH : byte absolute $87;
|
||||||
|
TCNT3 : word absolute $88;
|
||||||
|
TCNT3L : byte absolute $88;
|
||||||
|
TCNT3H : byte absolute $89;
|
||||||
|
TCCR3B : byte absolute $8A;
|
||||||
|
TCCR3A : byte absolute $8B;
|
||||||
|
TCCR3C : byte absolute $8C;
|
||||||
|
UBRR0H : byte absolute $90;
|
||||||
|
UCSR0C : byte absolute $95;
|
||||||
|
UBRR1H : byte absolute $98;
|
||||||
|
UBRR1L : byte absolute $99;
|
||||||
|
UCSR1B : byte absolute $9A;
|
||||||
|
UCSR1A : byte absolute $9B;
|
||||||
|
UDR1 : byte absolute $9C;
|
||||||
|
UCSR1C : byte absolute $9D;
|
||||||
|
const
|
||||||
|
TWINT = 7;
|
||||||
|
TWEA = 6;
|
||||||
|
TWSTA = 5;
|
||||||
|
TWSTO = 4;
|
||||||
|
TWWC = 3;
|
||||||
|
TWEN = 2;
|
||||||
|
TWIE = 0;
|
||||||
|
|
||||||
|
TWA6 = 7;
|
||||||
|
TWA5 = 6;
|
||||||
|
TWA4 = 5;
|
||||||
|
TWA3 = 4;
|
||||||
|
TWA2 = 3;
|
||||||
|
TWA1 = 2;
|
||||||
|
TWA0 = 1;
|
||||||
|
TWGCE = 0;
|
||||||
|
|
||||||
|
TWS7 = 7;
|
||||||
|
TWS6 = 6;
|
||||||
|
TWS5 = 5;
|
||||||
|
TWS4 = 4;
|
||||||
|
TWS3 = 3;
|
||||||
|
TWPS1 = 1;
|
||||||
|
TWPS0 = 0;
|
||||||
|
|
||||||
|
SRL2 = 6;
|
||||||
|
SRL1 = 5;
|
||||||
|
SRL0 = 4;
|
||||||
|
SRW01 = 3;
|
||||||
|
SRW00 = 2;
|
||||||
|
SRW11 = 1;
|
||||||
|
|
||||||
|
XMBK = 7;
|
||||||
|
XMM2 = 2;
|
||||||
|
XMM1 = 1;
|
||||||
|
XMM0 = 0;
|
||||||
|
|
||||||
|
XDIVEN = 7;
|
||||||
|
XDIV6 = 6;
|
||||||
|
XDIV5 = 5;
|
||||||
|
XDIV4 = 4;
|
||||||
|
XDIV3 = 3;
|
||||||
|
XDIV2 = 2;
|
||||||
|
XDIV1 = 1;
|
||||||
|
XDIV0 = 0;
|
||||||
|
|
||||||
|
RAMPZ0 = 0;
|
||||||
|
|
||||||
|
ISC31 = 7;
|
||||||
|
ISC30 = 6;
|
||||||
|
ISC21 = 5;
|
||||||
|
ISC20 = 4;
|
||||||
|
ISC11 = 3;
|
||||||
|
ISC10 = 2;
|
||||||
|
ISC01 = 1;
|
||||||
|
ISC00 = 0;
|
||||||
|
|
||||||
|
ISC71 = 7;
|
||||||
|
ISC70 = 6;
|
||||||
|
ISC61 = 5;
|
||||||
|
ISC60 = 4;
|
||||||
|
ISC51 = 3;
|
||||||
|
ISC50 = 2;
|
||||||
|
ISC41 = 1;
|
||||||
|
ISC40 = 0;
|
||||||
|
|
||||||
|
SPMIE = 7;
|
||||||
|
RWWSB = 6;
|
||||||
|
RWWSRE = 4;
|
||||||
|
BLBSET = 3;
|
||||||
|
PGWRT = 2;
|
||||||
|
PGERS = 1;
|
||||||
|
SPMEN = 0;
|
||||||
|
|
||||||
|
INT7 = 7;
|
||||||
|
INT6 = 6;
|
||||||
|
INT5 = 5;
|
||||||
|
INT4 = 4;
|
||||||
|
INT3 = 3;
|
||||||
|
INT2 = 2;
|
||||||
|
INT1 = 1;
|
||||||
|
INT0 = 0;
|
||||||
|
|
||||||
|
INTF7 = 7;
|
||||||
|
INTF6 = 6;
|
||||||
|
INTF5 = 5;
|
||||||
|
INTF4 = 4;
|
||||||
|
INTF3 = 3;
|
||||||
|
INTF2 = 2;
|
||||||
|
INTF1 = 1;
|
||||||
|
INTF0 = 0;
|
||||||
|
|
||||||
|
OCIE2 = 7;
|
||||||
|
TOIE2 = 6;
|
||||||
|
TICIE1 = 5;
|
||||||
|
OCIE1A = 4;
|
||||||
|
OCIE1B = 3;
|
||||||
|
TOIE1 = 2;
|
||||||
|
OCIE0 = 1;
|
||||||
|
TOIE0 = 0;
|
||||||
|
|
||||||
|
OCF2 = 7;
|
||||||
|
TOV2 = 6;
|
||||||
|
ICF1 = 5;
|
||||||
|
OCF1A = 4;
|
||||||
|
OCF1B = 3;
|
||||||
|
TOV1 = 2;
|
||||||
|
OCF0 = 1;
|
||||||
|
TOV0 = 0;
|
||||||
|
|
||||||
|
TICIE3 = 5;
|
||||||
|
OCIE3A = 4;
|
||||||
|
OCIE3B = 3;
|
||||||
|
TOIE3 = 2;
|
||||||
|
OCIE3C = 1;
|
||||||
|
OCIE1C = 0;
|
||||||
|
|
||||||
|
ICF3 = 5;
|
||||||
|
OCF3A = 4;
|
||||||
|
OCF3B = 3;
|
||||||
|
TOV3 = 2;
|
||||||
|
OCF3C = 1;
|
||||||
|
OCF1C = 0;
|
||||||
|
|
||||||
|
SRE = 7;
|
||||||
|
SRW = 6;
|
||||||
|
SRW10 = 6;
|
||||||
|
SE = 5;
|
||||||
|
SM1 = 4;
|
||||||
|
SM0 = 3;
|
||||||
|
SM2 = 2;
|
||||||
|
IVSEL = 1;
|
||||||
|
IVCE = 0;
|
||||||
|
|
||||||
|
JTD = 7;
|
||||||
|
JTRF = 4;
|
||||||
|
WDRF = 3;
|
||||||
|
BORF = 2;
|
||||||
|
EXTRF = 1;
|
||||||
|
PORF = 0;
|
||||||
|
|
||||||
|
FOC = 7;
|
||||||
|
WGM0 = 6;
|
||||||
|
COM1 = 5;
|
||||||
|
COM0 = 4;
|
||||||
|
WGM1 = 3;
|
||||||
|
CS2 = 2;
|
||||||
|
CS1 = 1;
|
||||||
|
CS0 = 0;
|
||||||
|
|
||||||
|
FOC0 = 7;
|
||||||
|
WGM00 = 6;
|
||||||
|
COM01 = 5;
|
||||||
|
COM00 = 4;
|
||||||
|
WGM01 = 3;
|
||||||
|
CS02 = 2;
|
||||||
|
CS01 = 1;
|
||||||
|
CS00 = 0;
|
||||||
|
|
||||||
|
FOC2 = 7;
|
||||||
|
WGM20 = 6;
|
||||||
|
COM21 = 5;
|
||||||
|
COM20 = 4;
|
||||||
|
WGM21 = 3;
|
||||||
|
CS22 = 2;
|
||||||
|
CS21 = 1;
|
||||||
|
CS20 = 0;
|
||||||
|
|
||||||
|
AS0 = 3;
|
||||||
|
TCN0UB = 2;
|
||||||
|
OCR0UB = 1;
|
||||||
|
TCR0UB = 0;
|
||||||
|
|
||||||
|
COMA1 = 7;
|
||||||
|
COMA0 = 6;
|
||||||
|
COMB1 = 5;
|
||||||
|
COMB0 = 4;
|
||||||
|
COMC1 = 3;
|
||||||
|
COMC0 = 2;
|
||||||
|
WGMA1 = 1;
|
||||||
|
WGMA0 = 0;
|
||||||
|
|
||||||
|
COM1A1 = 7;
|
||||||
|
COM1A0 = 6;
|
||||||
|
COM1B1 = 5;
|
||||||
|
COM1B0 = 4;
|
||||||
|
COM1C1 = 3;
|
||||||
|
COM1C0 = 2;
|
||||||
|
WGM11 = 1;
|
||||||
|
WGM10 = 0;
|
||||||
|
|
||||||
|
COM3A1 = 7;
|
||||||
|
COM3A0 = 6;
|
||||||
|
COM3B1 = 5;
|
||||||
|
COM3B0 = 4;
|
||||||
|
COM3C1 = 3;
|
||||||
|
COM3C0 = 2;
|
||||||
|
WGM31 = 1;
|
||||||
|
WGM30 = 0;
|
||||||
|
|
||||||
|
ICNC = 7;
|
||||||
|
ICES = 6;
|
||||||
|
WGMB3 = 4;
|
||||||
|
WGMB2 = 3;
|
||||||
|
CSB2 = 2;
|
||||||
|
CSB1 = 1;
|
||||||
|
CSB0 = 0;
|
||||||
|
|
||||||
|
ICNC1 = 7;
|
||||||
|
ICES1 = 6;
|
||||||
|
WGM13 = 4;
|
||||||
|
WGM12 = 3;
|
||||||
|
CS12 = 2;
|
||||||
|
CS11 = 1;
|
||||||
|
CS10 = 0;
|
||||||
|
|
||||||
|
ICNC3 = 7;
|
||||||
|
ICES3 = 6;
|
||||||
|
WGM33 = 4;
|
||||||
|
WGM32 = 3;
|
||||||
|
CS32 = 2;
|
||||||
|
CS31 = 1;
|
||||||
|
CS30 = 0;
|
||||||
|
|
||||||
|
FOCA = 7;
|
||||||
|
FOCB = 6;
|
||||||
|
FOCC = 5;
|
||||||
|
|
||||||
|
FOC3A = 7;
|
||||||
|
FOC3B = 6;
|
||||||
|
FOC3C = 5;
|
||||||
|
|
||||||
|
FOC1A = 7;
|
||||||
|
FOC1B = 6;
|
||||||
|
FOC1C = 5;
|
||||||
|
|
||||||
|
IDRD = 7;
|
||||||
|
OCDR7 = 7;
|
||||||
|
OCDR6 = 6;
|
||||||
|
OCDR5 = 5;
|
||||||
|
OCDR4 = 4;
|
||||||
|
OCDR3 = 3;
|
||||||
|
OCDR2 = 2;
|
||||||
|
OCDR1 = 1;
|
||||||
|
OCDR0 = 0;
|
||||||
|
|
||||||
|
WDCE = 4;
|
||||||
|
WDE = 3;
|
||||||
|
WDP2 = 2;
|
||||||
|
WDP1 = 1;
|
||||||
|
WDP0 = 0;
|
||||||
|
|
||||||
|
TSM = 7;
|
||||||
|
ACME = 3;
|
||||||
|
PUD = 2;
|
||||||
|
PSR0 = 1;
|
||||||
|
PSR321 = 0;
|
||||||
|
|
||||||
|
SPIF = 7;
|
||||||
|
WCOL = 6;
|
||||||
|
SPI2X = 0;
|
||||||
|
|
||||||
|
SPIE = 7;
|
||||||
|
SPE = 6;
|
||||||
|
DORD = 5;
|
||||||
|
MSTR = 4;
|
||||||
|
CPOL = 3;
|
||||||
|
CPHA = 2;
|
||||||
|
SPR1 = 1;
|
||||||
|
SPR0 = 0;
|
||||||
|
|
||||||
|
UMSEL = 6;
|
||||||
|
UPM1 = 5;
|
||||||
|
UPM0 = 4;
|
||||||
|
USBS = 3;
|
||||||
|
UCSZ1 = 2;
|
||||||
|
UCSZ0 = 1;
|
||||||
|
UCPOL = 0;
|
||||||
|
|
||||||
|
UMSEL1 = 6;
|
||||||
|
UPM11 = 5;
|
||||||
|
UPM10 = 4;
|
||||||
|
USBS1 = 3;
|
||||||
|
UCSZ11 = 2;
|
||||||
|
UCSZ10 = 1;
|
||||||
|
UCPOL1 = 0;
|
||||||
|
|
||||||
|
UMSEL0 = 6;
|
||||||
|
UPM01 = 5;
|
||||||
|
UPM00 = 4;
|
||||||
|
USBS0 = 3;
|
||||||
|
UCSZ01 = 2;
|
||||||
|
UCSZ00 = 1;
|
||||||
|
UCPOL0 = 0;
|
||||||
|
|
||||||
|
RXC = 7;
|
||||||
|
TXC = 6;
|
||||||
|
UDRE = 5;
|
||||||
|
FE = 4;
|
||||||
|
DOR = 3;
|
||||||
|
UPE = 2;
|
||||||
|
U2X = 1;
|
||||||
|
MPCM = 0;
|
||||||
|
|
||||||
|
RXC1 = 7;
|
||||||
|
TXC1 = 6;
|
||||||
|
UDRE1 = 5;
|
||||||
|
FE1 = 4;
|
||||||
|
DOR1 = 3;
|
||||||
|
UPE1 = 2;
|
||||||
|
U2X1 = 1;
|
||||||
|
MPCM1 = 0;
|
||||||
|
|
||||||
|
RXC0 = 7;
|
||||||
|
TXC0 = 6;
|
||||||
|
UDRE0 = 5;
|
||||||
|
FE0 = 4;
|
||||||
|
DOR0 = 3;
|
||||||
|
UPE0 = 2;
|
||||||
|
U2X0 = 1;
|
||||||
|
MPCM0 = 0;
|
||||||
|
|
||||||
|
RXCIE = 7;
|
||||||
|
TXCIE = 6;
|
||||||
|
UDRIE = 5;
|
||||||
|
RXEN = 4;
|
||||||
|
TXEN = 3;
|
||||||
|
UCSZ = 2;
|
||||||
|
UCSZ2 = 2;
|
||||||
|
RXB8 = 1;
|
||||||
|
TXB8 = 0;
|
||||||
|
|
||||||
|
RXCIE1 = 7;
|
||||||
|
TXCIE1 = 6;
|
||||||
|
UDRIE1 = 5;
|
||||||
|
RXEN1 = 4;
|
||||||
|
TXEN1 = 3;
|
||||||
|
UCSZ12 = 2;
|
||||||
|
RXB81 = 1;
|
||||||
|
TXB81 = 0;
|
||||||
|
|
||||||
|
RXCIE0 = 7;
|
||||||
|
TXCIE0 = 6;
|
||||||
|
UDRIE0 = 5;
|
||||||
|
RXEN0 = 4;
|
||||||
|
TXEN0 = 3;
|
||||||
|
UCSZ02 = 2;
|
||||||
|
RXB80 = 1;
|
||||||
|
TXB80 = 0;
|
||||||
|
|
||||||
|
ACD = 7;
|
||||||
|
ACBG = 6;
|
||||||
|
ACO = 5;
|
||||||
|
ACI = 4;
|
||||||
|
ACIE = 3;
|
||||||
|
ACIC = 2;
|
||||||
|
ACIS1 = 1;
|
||||||
|
ACIS0 = 0;
|
||||||
|
|
||||||
|
ADEN = 7;
|
||||||
|
ADSC = 6;
|
||||||
|
ADFR = 5;
|
||||||
|
ADIF = 4;
|
||||||
|
ADIE = 3;
|
||||||
|
ADPS2 = 2;
|
||||||
|
ADPS1 = 1;
|
||||||
|
ADPS0 = 0;
|
||||||
|
|
||||||
|
REFS1 = 7;
|
||||||
|
REFS0 = 6;
|
||||||
|
ADLAR = 5;
|
||||||
|
MUX4 = 4;
|
||||||
|
MUX3 = 3;
|
||||||
|
MUX2 = 2;
|
||||||
|
MUX1 = 1;
|
||||||
|
MUX0 = 0;
|
||||||
|
|
||||||
{$define DOCALL:=call}
|
{$define DOCALL:=call}
|
||||||
{$define DOJMP:=jmp}
|
{$define DOJMP:=jmp}
|
||||||
@ -32,54 +530,91 @@ unit atmega128;
|
|||||||
_bss_end: record end; external name '_bss_end';
|
_bss_end: record end; external name '_bss_end';
|
||||||
_stack_top: record end; external name '_stack_top';
|
_stack_top: record end; external name '_stack_top';
|
||||||
|
|
||||||
|
Int00Handler,
|
||||||
|
Int01Handler,
|
||||||
|
Int02Handler,
|
||||||
|
Int03Handler,
|
||||||
|
Int04Handler,
|
||||||
|
Int05Handler,
|
||||||
|
Int06Handler,
|
||||||
|
Int07Handler,
|
||||||
|
Int08Handler,
|
||||||
|
Int09Handler,
|
||||||
|
Int10Handler,
|
||||||
|
Int11Handler,
|
||||||
|
Int12Handler,
|
||||||
|
Int13Handler,
|
||||||
|
Int14Handler,
|
||||||
|
Int15Handler,
|
||||||
|
Int16Handler,
|
||||||
|
Int17Handler,
|
||||||
|
Int18Handler,
|
||||||
|
Int19Handler,
|
||||||
|
Int20Handler,
|
||||||
|
Int21Handler,
|
||||||
|
Int22Handler,
|
||||||
|
Int23Handler,
|
||||||
|
Int24Handler,
|
||||||
|
Int25Handler,
|
||||||
|
Int26Handler,
|
||||||
|
Int27Handler,
|
||||||
|
Int28Handler,
|
||||||
|
Int29Handler,
|
||||||
|
Int30Handler,
|
||||||
|
Int31Handler,
|
||||||
|
Int32Handler,
|
||||||
|
Int33Handler,
|
||||||
|
Int34Handler : Pointer = Default_IRQ_handler;
|
||||||
|
|
||||||
|
procedure Default_IRQ_handler; assembler; nostackframe; public name '_Default_IRQ_handler';
|
||||||
|
asm
|
||||||
|
.Lloop:
|
||||||
|
b .Lloop
|
||||||
|
end;
|
||||||
|
|
||||||
procedure _FPC_start; assembler; nostackframe;
|
procedure _FPC_start; assembler; nostackframe;
|
||||||
label
|
label
|
||||||
_start;
|
_start;
|
||||||
asm
|
asm
|
||||||
// code derived from phillips appnote 10254
|
|
||||||
.init
|
.init
|
||||||
.align 16
|
|
||||||
.globl _start
|
.globl _start
|
||||||
{ b _start
|
// .org 0x00
|
||||||
b .LUndefined_Addr // Undefined Instruction vector
|
rjmp _start
|
||||||
b .LSWI_Addr // Software Interrupt vector
|
rjump Int00Handler
|
||||||
b .LPrefetch_Addr // Prefetch abort vector
|
rjump Int01Handler
|
||||||
b .LAbort_Addr // Data abort vector
|
rjump Int02Handler
|
||||||
nop // reserved
|
rjump Int03Handler
|
||||||
b .LIRQ_Addr // Interrupt Request (IRQ) vector
|
rjump Int04Handler
|
||||||
b .LFIQ_Addr // Fast interrupt request (FIQ) vector
|
rjump Int05Handler
|
||||||
|
rjump Int06Handler
|
||||||
.LUndefined_Addr:
|
rjump Int07Handler
|
||||||
ldr r0,.L1
|
rjump Int08Handler
|
||||||
ldr pc,[r0]
|
rjump Int09Handler
|
||||||
.LSWI_Addr:
|
rjump Int10Handler
|
||||||
ldr r0,.L2
|
rjump Int11Handler
|
||||||
ldr pc,[r0]
|
rjump Int12Handler
|
||||||
.LPrefetch_Addr:
|
rjump Int13Handler
|
||||||
ldr r0,.L3
|
rjump Int14Handler
|
||||||
ldr pc,[r0]
|
rjump Int15Handler
|
||||||
.LAbort_Addr:
|
rjump Int16Handler
|
||||||
ldr r0,.L4
|
rjump Int17Handler
|
||||||
ldr pc,[r0]
|
rjump Int18Handler
|
||||||
.LIRQ_Addr:
|
rjump Int19Handler
|
||||||
ldr r0,.L5
|
rjump Int20Handler
|
||||||
ldr pc,[r0]
|
rjump Int21Handler
|
||||||
.LFIQ_Addr:
|
rjump Int22Handler
|
||||||
ldr r0,.L5
|
rjump Int23Handler
|
||||||
ldr pc,[r0]
|
rjump Int24Handler
|
||||||
.L1:
|
rjump Int25Handler
|
||||||
.long Undefined_Handler
|
rjump Int26Handler
|
||||||
.L2:
|
rjump Int27Handler
|
||||||
.long SWI_Handler
|
rjump Int28Handler
|
||||||
.L3:
|
rjump Int29Handler
|
||||||
.long Prefetch_Handler
|
rjump Int30Handler
|
||||||
.L4:
|
rjump Int31Handler
|
||||||
.long Abort_Handler
|
rjump Int32Handler
|
||||||
.L5:
|
rjump Int33Handler
|
||||||
.long IRQ_Handler
|
rjump Int34Handler
|
||||||
.L6:
|
|
||||||
.long FIQ_Handler
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
all ATMEL MCUs use the same startup code, the details are
|
all ATMEL MCUs use the same startup code, the details are
|
||||||
governed by defines
|
governed by defines
|
||||||
@ -88,3 +623,4 @@ unit atmega128;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user