mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-06 23:38:58 +02:00
+ ATmega48/ATmega88 support
git-svn-id: trunk@30937 -
This commit is contained in:
parent
aadcf9f6bc
commit
0cd521fc8b
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -8300,6 +8300,7 @@ rtl/embedded/arm/stm32f10x_xl.pp svneol=native#text/pascal
|
||||
rtl/embedded/arm/stm32f429.pp svneol=native#text/pascal
|
||||
rtl/embedded/arm/xmc4500.pp svneol=native#text/pascal
|
||||
rtl/embedded/avr/atmega128.pp svneol=native#text/plain
|
||||
rtl/embedded/avr/atmega48fam.pp svneol=native#text/plain
|
||||
rtl/embedded/avr/atmega8.pp svneol=native#text/plain
|
||||
rtl/embedded/avr/attinyx4.pp svneol=native#text/plain
|
||||
rtl/embedded/avr/avrcommon.inc svneol=native#text/plain
|
||||
|
@ -62,10 +62,12 @@ Type
|
||||
ct_attiny44,
|
||||
ct_attiny84,
|
||||
|
||||
ct_atmega48,
|
||||
ct_atmega88,
|
||||
|
||||
ct_atmega8,
|
||||
ct_atmega16,
|
||||
ct_atmega32,
|
||||
ct_atmega48,
|
||||
ct_atmega64,
|
||||
ct_atmega128
|
||||
);
|
||||
@ -167,6 +169,28 @@ Const
|
||||
eeprombase:0;
|
||||
eepromsize:512
|
||||
),
|
||||
|
||||
(
|
||||
controllertypestr:'ATMEGA48';
|
||||
controllerunitstr:'ATMEGA48FAM';
|
||||
flashbase:0;
|
||||
flashsize:4*1024;
|
||||
srambase:0;
|
||||
sramsize:512;
|
||||
eeprombase:0;
|
||||
eepromsize:256;
|
||||
),
|
||||
(
|
||||
controllertypestr:'ATMEGA88';
|
||||
controllerunitstr:'ATMEGA48FAM';
|
||||
flashbase:0;
|
||||
flashsize:8*1024;
|
||||
srambase:0;
|
||||
sramsize:1024;
|
||||
eeprombase:0;
|
||||
eepromsize:512;
|
||||
),
|
||||
|
||||
(
|
||||
controllertypestr:'ATMEGA8';
|
||||
controllerunitstr:'ATMEGA8';
|
||||
@ -198,16 +222,6 @@ Const
|
||||
eepromsize:512
|
||||
),
|
||||
(
|
||||
controllertypestr:'ATMEGA48';
|
||||
controllerunitstr:'ATMEGA48';
|
||||
flashbase:0;
|
||||
flashsize:$1000;
|
||||
srambase:0;
|
||||
sramsize:512;
|
||||
eeprombase:0;
|
||||
eepromsize:256;
|
||||
),
|
||||
(
|
||||
controllertypestr:'ATMEGA64';
|
||||
controllerunitstr:'ATMEGA64';
|
||||
flashbase:0;
|
||||
|
@ -1,8 +1,8 @@
|
||||
#
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2015-03-17 rev 30250]
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2015-05-20 rev 30890]
|
||||
#
|
||||
default: all
|
||||
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos aarch64-darwin
|
||||
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos aarch64-linux aarch64-darwin
|
||||
BSDs = freebsd netbsd openbsd darwin dragonfly
|
||||
UNIXs = linux $(BSDs) solaris qnx haiku aix
|
||||
LIMIT83fs = go32v2 os2 emx watcom msdos
|
||||
@ -369,7 +369,7 @@ CPU_UNITS=allwinner_a20
|
||||
endif
|
||||
endif
|
||||
ifeq ($(ARCH),avr)
|
||||
CPU_UNITS=atmega128 atmega8 avrsim attinyx4
|
||||
CPU_UNITS=atmega128 atmega8 avrsim attinyx4 atmega48fam
|
||||
endif
|
||||
ifeq ($(ARCH),i386)
|
||||
CPU_SPECIFIC_COMMON_UNITS=sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo
|
||||
@ -617,6 +617,9 @@ endif
|
||||
ifeq ($(FULL_TARGET),i8086-msdos)
|
||||
override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 strings heapmgr consoleio $(CPU_SPECIFIC_COMMON_UNITS) dos ctypes charset cpall sysconst
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),aarch64-linux)
|
||||
override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 strings heapmgr consoleio $(CPU_SPECIFIC_COMMON_UNITS) dos ctypes charset cpall sysconst
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),aarch64-darwin)
|
||||
override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 strings heapmgr consoleio $(CPU_SPECIFIC_COMMON_UNITS) dos ctypes charset cpall sysconst
|
||||
endif
|
||||
@ -854,6 +857,9 @@ endif
|
||||
ifeq ($(FULL_TARGET),i8086-msdos)
|
||||
override TARGET_LOADERS+=$(LOADERS)
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),aarch64-linux)
|
||||
override TARGET_LOADERS+=$(LOADERS)
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),aarch64-darwin)
|
||||
override TARGET_LOADERS+=$(LOADERS)
|
||||
endif
|
||||
@ -1092,6 +1098,9 @@ endif
|
||||
ifeq ($(FULL_TARGET),i8086-msdos)
|
||||
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),aarch64-linux)
|
||||
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),aarch64-darwin)
|
||||
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
|
||||
endif
|
||||
@ -1329,6 +1338,9 @@ endif
|
||||
ifeq ($(FULL_TARGET),i8086-msdos)
|
||||
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),aarch64-linux)
|
||||
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),aarch64-darwin)
|
||||
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
|
||||
endif
|
||||
@ -1727,6 +1739,10 @@ STATICLIBPREFIX=
|
||||
STATICLIBEXT=.a
|
||||
SHORTSUFFIX=d16
|
||||
endif
|
||||
ifeq ($(OS_TARGET),embedded)
|
||||
EXEEXT=.bin
|
||||
SHORTSUFFIX=emb
|
||||
endif
|
||||
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
|
||||
FPCMADE=fpcmade.$(SHORTSUFFIX)
|
||||
ZIPSUFFIX=$(SHORTSUFFIX)
|
||||
|
@ -84,7 +84,7 @@ endif
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),avr)
|
||||
CPU_UNITS=atmega128 atmega8 avrsim attinyx4
|
||||
CPU_UNITS=atmega128 atmega8 avrsim attinyx4 atmega48fam
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),i386)
|
||||
|
667
rtl/embedded/avr/atmega48fam.pp
Normal file
667
rtl/embedded/avr/atmega48fam.pp
Normal file
@ -0,0 +1,667 @@
|
||||
{******************************************************************************
|
||||
Register definitions and startup code for ATMEL ATmega48/88
|
||||
|
||||
******************************************************************************}
|
||||
unit atmega48fam;
|
||||
|
||||
{$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
|
||||
|
||||
{$define RELBRANCHES}
|
||||
|
||||
{$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
|
||||
|
||||
rjmp _start
|
||||
rjmp Int00Handler
|
||||
rjmp Int01Handler
|
||||
rjmp Int02Handler
|
||||
rjmp Int03Handler
|
||||
rjmp Int04Handler
|
||||
rjmp Int05Handler
|
||||
rjmp Int06Handler
|
||||
rjmp Int07Handler
|
||||
rjmp Int08Handler
|
||||
rjmp Int09Handler
|
||||
rjmp Int10Handler
|
||||
rjmp Int11Handler
|
||||
rjmp Int12Handler
|
||||
rjmp Int13Handler
|
||||
rjmp Int14Handler
|
||||
rjmp Int15Handler
|
||||
rjmp Int16Handler
|
||||
rjmp Int17Handler
|
||||
rjmp Int18Handler
|
||||
rjmp Int19Handler
|
||||
rjmp Int20Handler
|
||||
rjmp Int21Handler
|
||||
rjmp Int22Handler
|
||||
rjmp Int23Handler
|
||||
rjmp Int24Handler
|
||||
rjmp Int25Handler
|
||||
|
||||
{
|
||||
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
|
||||
.weak Int25Handler
|
||||
|
||||
.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
|
||||
.set Int25Handler, Default_IRQ_handler
|
||||
end;
|
||||
|
||||
end.
|
Loading…
Reference in New Issue
Block a user