Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

                ifndef  __regavrinc     ; avoid multiple inclusion
__regavrinc     equ     1

                save
                listing off   ; kein Listing ueber diesen File

;****************************************************************************
;*                                                                          *
;*   AS 1.42 - File REGAVR.INC                                              *
;*                                                                          *
;*   Sinn : contains SFR and Bit Definitionen for AVR Processors            *
;*                                                                          *
;****************************************************************************

;----------------------------------------------------------------------------
; Bits with the name as given in the datasheets contain the plain bit
; position within the register; with the prefix _bit_..., they hold
; register and bit position

avrbit          macro   {intlabel},reg,pos
__label__       equ     pos
                ifndef  _NO_AVR_BITSYMBOLS
_bit___label__   bit     reg.pos
                endif
                endm

;----------------------------------------------------------------------------
; include proper CPU-specific register definitions

                switch  MOMCPUNAME
                case    "AT90S1200"
                  include "avr/reg1200.inc"

                case    "AT90S2313"
                  include "avr/reg2313.inc"

                case    "AT90S2323","AT90S2343"
                  include "avr/reg2323.inc"

                case    "AT90S2333"
                  include "avr/reg2333.inc"

                case    "AT90S4414"
                  include "avr/reg4414.inc"

                case    "AT90S4433"
                  include "avr/reg4433.inc"

                case    "AT90S4434"
                  include "avr/reg4434.inc"

                case    "AT90S8515"
                  include "avr/reg8515.inc"

                case    "AT90C8534"
                  include "avr/reg8534.inc"

                case    "AT90S8535"
                  include "avr/reg8535.inc"

                case    "AT43USB355"
                  include "avr/regu355.inc"

                case    "AT90USB646"
                  include "avr/regu646.inc"

                case    "AT90USB647"
                  include "avr/regu647.inc"

                case    "AT90USB1286"
                  include "avr/regu1286.inc"

                case    "AT90USB1287"
                  include "avr/regu1287.inc"

                case    "ATTINY13"
                  include "avr/regtn13.inc"

                case    "ATTINY13A"
                  include "avr/regtn13a.inc"

                case    "ATTINY26"
                  include "avr/regtn26.inc"

                case    "ATTINY2313","ATTINY2313A"
                  include "avr/regt2313.inc"

                case    "ATTINY4313"
                  include "avr/regt4313.inc"

                case    "ATTINY24","ATTINY24A"
                  include "avr/regtn24.inc"

                case    "ATTINY44","ATTINY44A"
                  include "avr/regtn44.inc"

                case    "ATTINY84","ATTINY84A"
                  include "avr/regtn84.inc"

                case    "ATTINY25"
                  include "avr/regtn25.inc"

                case    "ATTINY45"
                  include "avr/regtn45.inc"

                case    "ATTINY85"
                  include "avr/regtn85.inc"

                case    "ATTINY261","ATTINY261A"
                  include "avr/regtn261.inc"

                case    "ATTINY461","ATTINY461A"
                  include "avr/regtn461.inc"

                case    "ATTINY861","ATTINY861A"
                  include "avr/regtn861.inc"

                case    "ATTINY48"
                  include "avr/regtn48.inc"

                case    "ATTINY88"
                  include "avr/regtn88.inc"

                case    "ATTINY43U"
                  include "avr/regtn43u.inc"

                case    "ATTINY441"
                  include "avr/regtn441.inc"

                case    "ATTINY841"
                  include "avr/regtn841.inc"

                case    "ATTINY828"
                  include "avr/regtn828.inc"

                case    "ATTINY1634"
                  include "avr/regtn1634.inc"

                case    "ATTINY87"
                  include "avr/regtn87.inc"

                case    "ATTINY167"
                  include "avr/regtn167.inc"

                case    "ATTINY4"
                  include "avr/regtn4.inc"

                case    "ATTINY5"
                  include "avr/regtn5.inc"

                case    "ATTINY9"
                  include "avr/regtn9.inc"

                case    "ATTINY10"
                  include "avr/regtn10.inc"

                case    "ATTINY20"
                  include "avr/regtn20.inc"

                case    "ATTINY40"
                  include "avr/regtn40.inc"

                case    "ATTINY102"
                  include "avr/regtn102.inc"

                case    "ATTINY104"
                  include "avr/regtn104.inc"

                case    "ATTINY28"
                  include "avr/regtn28.inc"

                case    "ATTINY11"
                  include "avr/regtn11.inc"

                case    "ATTINY12"
                  include "avr/regtn12.inc"

                case    "ATTINY15"
                  include "avr/regtn15.inc"

                case    "ATMEGA48"
                  include "avr/regm48.inc"

                case    "ATMEGA8"
                  include "avr/regm8.inc"

                case    "ATMEGA8515"
                  include "avr/regm8515.inc"

                case    "ATMEGA8535"
                  include "avr/regm8535.inc"

                case    "ATMEGA88"
                  include "avr/regm88.inc"

                case    "ATMEGA8U2"
                  include "avr/regm8u2.inc"

                case    "ATMEGA16"
                  include "avr/regm16.inc"

                case    "ATMEGA161"
                  include "avr/regm161.inc"

                case    "ATMEGA162"
                  include "avr/regm162.inc"

                case    "ATMEGA163"
                  include "avr/regm163.inc"

                case    "ATMEGA164"
                  include "avr/regm164.inc"

                case    "ATMEGA165"
                  include "avr/regm165.inc"

                case    "ATMEGA168"
                  include "avr/regm168.inc"

                case    "ATMEGA169"
                  include "avr/regm169.inc"

                case    "ATMEGA16U2"
                  include "avr/regm16u2.inc"

                case    "ATMEGA16U4"
                  include "avr/regm16u4.inc"

                case    "ATMEGA32"
                  include "avr/regm32.inc"

                case    "ATMEGA323"
                  include "avr/regm323.inc"

                case    "ATMEGA324"
                  include "avr/regm324.inc"

                case    "ATMEGA325"
                  include "avr/regm325.inc"

                case    "ATMEGA3250"
                  include "avr/regm3250.inc"

                case    "ATMEGA328"
                  include "avr/regm328.inc"

                case    "ATMEGA329"
                  include "avr/regm329.inc"

                case    "ATMEGA3290"
                  include "avr/regm3290.inc"

                case    "ATMEGA32U2"
                  include "avr/regm32u2.inc"

                case    "ATMEGA32U4"
                  include "avr/regm32u4.inc"

                case    "ATMEGA32U6"
                  include "avr/regm32u6.inc"

                case    "ATMEGA406"
                  include "avr/regm406.inc"

                case    "ATMEGA64"
                  include "avr/regm64.inc"

                case    "ATMEGA640"
                  include "avr/regm640.inc"

                case    "ATMEGA644"
                  include "avr/regm644.inc"

                case    "ATMEGA644RFR2"
                  include "avr/regm644rfr2.inc"

                case    "ATMEGA645"
                  include "avr/regm645.inc"

                case    "ATMEGA6450"
                  include "avr/regm6450.inc"

                case    "ATMEGA649"
                  include "avr/regm649.inc"

                case    "ATMEGA6490"
                  include "avr/regm6490.inc"

                case    "ATMEGA103"
                  include "avr/regm103.inc"

                case    "ATMEGA128"
                  include "avr/regm128.inc"

                case    "ATMEGA1280"
                  include "avr/regm1280.inc"

                case    "ATMEGA1281"
                  include "avr/regm1281.inc"

                case    "ATMEGA1284"
                  include "avr/regm1284.inc"

                case    "ATMEGA1284RFR2"
                  include "avr/reg1284rfr2.inc"

                case    "ATMEGA2560"
                  include "avr/regm2560.inc"

                case    "ATMEGA2561"
                  include "avr/regm2561.inc"

                case    "ATMEGA2564RFR2"
                  include "avr/reg2564rfr2.inc"

                elsecase
                  error  "wrong processor type set: only AT90S1200, AT90S2313, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90C8534, AT90S8535,"
                  error  "AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90USB355,"
                  error  "ATTINY13(A), ATTINY26, ATTINY2313(A), ATTINY4313, ATTINY24(A), ATTINY44(A), ATTINY84(A), ATTINY25, ATTINY45, ATTINY85,"
                  error  "ATTINY261(A), ATTINY461(A), ATTINY861(A), ATTINY48, ATTINY88, ATTINY43U, ATTINY441, ATTINY841, ATTINY828, ATTINY1634,"
                  error  "ATTINY87, ATTINY167, ATTINY4, ATTINY5, ATTINY9, ATTINY10, ATTINY20, ATTINY40, ATTINY102, ATTINY104, ATTINY28,"
                  error  "ATTINY11, ATTINY12, ATTINY15,"
                  error  "ATMEGA48, ATMEGA8, ATMEGA8515, ATMEGA8535, ATMEGA88, ATMEGA8U2, ATMEGA16U2, ATMEGA16U4, ATMEGA32U2, ATMEGA32U4, ATMEGA32U6,"
                  error  "ATMEGA16, ATMEGA161, ATMEGA162, ATMEGA164, ATMEGA165, ATMEGA168, ATMEGA169, ATMEGA32, ATMEGA323, ATMEGA324, ATMEGA325, ATMEGA3250, ATMEGA328, ATMEGA329, ATMEGA3290,"
                  error  "ATMEGA406, ATMEGA64, ATMEGA640, ATMEGA644, ATMEGA644RFR2, ATMEGA645, ATMEGA6450, ATMEGA649, ATMEGA6490, ATMEGA103, ATMEGA128, ATMEGA1280, ATMEGA1281, ATMEGA1284, ATMEGA1284RFR2,"
                  fatal  "ATMEGA2560, ATMEGA2561 or ATMEGA2564RFR2 allowed!"
                endcase

                if      MOMPASS=1
                 message "Atmel-AVR-SFR-Definitionen (C) 2017 Alfred Arnold"
                endif

;----------------------------------------------------------------------------
; Helper Macros

defreg          macro   newreg,refreg,offset
                switch  symtype(refreg)
                case    7
newreg          port    refreg+offset
                case    2
newreg          sfr     refreg+offset
                endcase
                endm

                ; TODO: How to rework this to AVRBIT?

__deducebit     macro   dest,src
                ifdef   src
dest              equ    src
                endif
                endm

;----------------------------------------------------------------------------
; Constant Memory Addresses

E2START         equ     0                ; start address internal EEPROM
FLASHSTART      label   0                ; start address internal Flash

;----------------------------------------------------------------------------
; Constant Vectors

RESET_vect      label   0               ; Reset Entry

;----------------------------------------------------------------------------
; CPU Core

SREG            port    0x3f            ; Statusregister:
C               avrbit  SREG,0          ;  Carry
Z               avrbit  SREG,1          ;  Ergebnis Null
N               avrbit  SREG,2          ;  Ergebnis negativ
V               avrbit  SREG,3          ;  Zweierkomplement-Ueberlauf
S               avrbit  SREG,4          ;  Vorzeichen
H               avrbit  SREG,5          ;  Halfcarry
T               avrbit  SREG,6          ;  Bitspeicher
I               avrbit  SREG,7          ;  globale Interruptsperre

; size of stack pointer depends on size of internal data space
; (if present at all)

                if      RAMEND>=RAMSTART
SPL              port    0x3d           ; Stapelzeiger (LSB)
                 if      RAMEND>=256
SPH               port    0x3e          ;              (MSB)
                 endif
                endif

                if FLASHEND>=65536
RAMPZ            port    0x3b
RAMPZ0           avrbit  RAMPZ,0
                endif
                if FLASHEND>=131072
EIND             port    0x3c
EIND0            equ     0
RAMPZ1           avrbit  RAMPZ,1
                endif

;----------------------------------------------------------------------------
; Deduce remaining GPIO registers

                ifndef  __PORTPREFIX
__PORTPREFIX     equ    "P"
                endif

                ifdef   PINA
                 ifndef  __PORTA_BITS
__PORTA_BITS      equ     0xff
                 endif
                 if __PORTA_BITS & 1
PINA0             avrbit PINA,0
                 endif
                 if __PORTA_BITS & 2
PINA1             avrbit PINA,1
                 endif
                 if __PORTA_BITS & 4
PINA2             avrbit PINA,2
                 endif
                 if __PORTA_BITS & 8
PINA3             avrbit PINA,3
                 endif
                 if __PORTA_BITS & 16
PINA4             avrbit PINA,4
                 endif
                 if __PORTA_BITS & 32
PINA5             avrbit PINA,5
                 endif
                 if __PORTA_BITS & 64
PINA6             avrbit PINA,6
                 endif
                 if __PORTA_BITS & 128
PINA7             avrbit PINA,7
                 endif
                 ifndef  PACR
                  defreg         DDRA,PINA,1
                  if __PORTA_BITS & 1
DDA0               avrbit DDRA,0
                  endif
                  if __PORTA_BITS & 2
DDA1               avrbit DDRA,1
                  endif
                  if __PORTA_BITS & 4
DDA2               avrbit DDRA,2
                  endif
                  if __PORTA_BITS & 8
DDA3               avrbit DDRA,3
                  endif
                  if __PORTA_BITS & 16
DDA4               avrbit DDRA,4
                  endif
                  if __PORTA_BITS & 32
DDA5               avrbit DDRA,5
                  endif
                  if __PORTA_BITS & 64
DDA6               avrbit DDRA,6
                  endif
                  if __PORTA_BITS & 128
DDA7               avrbit DDRA,7
                  endif
                 endif
                 defreg          PORTA,PINA,2
                 if __PORTA_BITS & 1
{__PORTPREFIX}A0  avrbit PORTA,0
                 endif
                 if __PORTA_BITS & 2
{__PORTPREFIX}A1  avrbit PORTA,1
                 endif
                 if __PORTA_BITS & 4
{__PORTPREFIX}A2  avrbit PORTA,2
                 endif
                 if __PORTA_BITS & 8
{__PORTPREFIX}A3  avrbit PORTA,3
                 endif
                 if __PORTA_BITS & 16
{__PORTPREFIX}A4  avrbit PORTA,4
                 endif
                 if __PORTA_BITS & 32
{__PORTPREFIX}A5  avrbit PORTA,5
                endif
                 if __PORTA_BITS & 64
{__PORTPREFIX}A6  avrbit PORTA,6
                 endif
                 if __PORTA_BITS & 128
{__PORTPREFIX}A7  avrbit PORTA,7
                 endif
                endif

                ifdef   PINB
                 ifndef  __PORTB_BITS
__PORTB_BITS      equ     0xff
                 endif
                 if __PORTB_BITS & 1
PINB0             avrbit PINB,0
                 endif
                 if __PORTB_BITS & 2
PINB1             avrbit PINB,1
                 endif
                 if __PORTB_BITS & 4
PINB2             avrbit PINB,2
                 endif
                 if __PORTB_BITS & 8
PINB3             avrbit PINB,3
                 endif
                 if __PORTB_BITS & 16
PINB4             avrbit PINB,4
                 endif
                 if __PORTB_BITS & 32
PINB5             avrbit PINB,5
                 endif
                 if __PORTB_BITS & 64
PINB6             avrbit PINB,6
                 endif
                 if __PORTB_BITS & 128
PINB7             avrbit PINB,7
                 endif
                 ifndef   PINB_inponly
                  defreg         DDRB,PINB,1
                  defreg         PORTB,PINB,2
                  if __PORTB_BITS & 1
DDB0               avrbit DDRB,0
{__PORTPREFIX}B0   avrbit PORTB,0
                  endif
                  if __PORTB_BITS & 2
DDB1               avrbit DDRB,1
{__PORTPREFIX}B1   avrbit PORTB,1
                  endif
                  if __PORTB_BITS & 4
DDB2               avrbit DDRB,2
{__PORTPREFIX}B2   avrbit PORTB,2
                  endif
                  if __PORTB_BITS & 8
DDB3               avrbit DDRB,3
{__PORTPREFIX}B3   avrbit PORTB,3
                  endif
                  if __PORTB_BITS & 16
DDB4               avrbit DDRB,4
{__PORTPREFIX}B4   avrbit PORTB,4
                  endif
                  if __PORTB_BITS & 32
DDB5               avrbit DDRB,5
{__PORTPREFIX}B5   avrbit PORTB,5
                  endif
                  if __PORTB_BITS & 64
DDB6               avrbit DDRB,6
{__PORTPREFIX}B6   avrbit PORTB,6
                  endif
                  if __PORTB_BITS & 128
DDB7               avrbit DDRB,7
{__PORTPREFIX}B7   avrbit PORTB,7
                  endif
                 endif
                endif

                ifdef   PINC
                 ifndef  __PORTC_BITS
__PORTC_BITS      equ     0xff
                 endif
                 defreg  DDRC,PINC,1
                 defreg  PORTC,PINC,2
                 if      __PORTC_BITS&1
PINC0             avrbit PINC,0
DDC0              avrbit DDRC,0
{__PORTPREFIX}C0  avrbit PORTC,0
                 endif
                 if      __PORTC_BITS&2
PINC1             avrbit PINC,1
DDC1              avrbit DDRC,1
{__PORTPREFIX}C1  avrbit PORTC,1
                 endif
                 if      __PORTC_BITS&4
PINC2             avrbit PINC,2
DDC2              avrbit DDRC,2
{__PORTPREFIX}C2  avrbit PORTC,2
                 endif
                 if      __PORTC_BITS&8
PINC3             avrbit PINC,3
DDC3              avrbit DDRC,3
{__PORTPREFIX}C3  avrbit PORTC,3
                 endif
                 if      __PORTC_BITS&16
PINC4             avrbit PINC,4
DDC4              avrbit DDRC,4
{__PORTPREFIX}C4  avrbit PORTC,4
                 endif
                 if      __PORTC_BITS&32
PINC5             avrbit PINC,5
DDC5              avrbit DDRC,5
{__PORTPREFIX}C5  avrbit PORTC,5
                 endif
                 if      __PORTC_BITS&64
PINC6             avrbit PINC,6
DDC6              avrbit DDRC,6
{__PORTPREFIX}C6  avrbit PORTC,6
                 endif
                 if      __PORTC_BITS&128
PINC7             avrbit PINC,7
DDC7              avrbit DDRC,7
{__PORTPREFIX}C7  avrbit PORTC,7
                 endif
                endif

                ifdef   PIND
                 ifndef  __PORTD_BITS
__PORTD_BITS      equ     0xff
                 endif
                 defreg  DDRD,PIND,1
                 defreg  PORTD,PIND,2
                 if __PORTD_BITS & 1
PIND0             avrbit PIND,0
DDD0              avrbit DDRD,0
{__PORTPREFIX}D0  avrbit PORTD,0
                 endif
                 if __PORTD_BITS & 3
PIND1             avrbit PIND,1
DDD1              avrbit DDRD,1
{__PORTPREFIX}D1  avrbit PORTD,1
                 endif
                 if __PORTD_BITS & 4
PIND2             avrbit PIND,2
DDD2              avrbit DDRD,2
{__PORTPREFIX}D2  avrbit PORTD,2
                 endif
                 if __PORTD_BITS & 8
PIND3             avrbit PIND,3
DDD3              avrbit DDRD,3
{__PORTPREFIX}D3  avrbit PORTD,3
                 endif
                 if __PORTD_BITS & 16
PIND4             avrbit PIND,4
DDD4              avrbit DDRD,4
{__PORTPREFIX}D4  avrbit PORTD,4
                 endif
                 if __PORTD_BITS & 32
PIND5             avrbit PIND,5
DDD5              avrbit DDRD,5
{__PORTPREFIX}D5  avrbit PORTD,5
                 endif
                 if __PORTD_BITS & 64
PIND6             avrbit PIND,6
DDD6              avrbit DDRD,6
{__PORTPREFIX}D6  avrbit PORTD,6
                 endif
                 if __PORTD_BITS & 128
PIND7             avrbit PIND,7
DDD7              avrbit DDRD,7
{__PORTPREFIX}D7  avrbit PORTD,7
                 endif
                endif

                ifdef   PINE
                 ifndef  __PORTE_BITS
__PORTE_BITS      equ     0xff
                 endif
                 defreg  DDRE,PINE,1
                 defreg  PORTE,PINE,2
                 if      __PORTE_BITS&1
PINE0             avrbit PINE,0
DDE0              avrbit DDRE,0
{__PORTPREFIX}E0  avrbit PORTE,0
                 endif
                 if      __PORTE_BITS&2
PINE1             avrbit PINE,1
DDE1              avrbit DDRE,1
{__PORTPREFIX}E1  avrbit PORTE,1
                 endif
                 if      __PORTE_BITS&4
PINE2             avrbit PINE,2
DDE2              avrbit DDRE,2
{__PORTPREFIX}E2  avrbit PORTE,2
                 endif
                 if      __PORTE_BITS&8
PINE3             avrbit PINE,3
DDE3              avrbit DDRE,3
{__PORTPREFIX}E3  avrbit PORTE,3
                 endif
                 if      __PORTE_BITS&16
PINE4             avrbit PINE,4
DDE4              avrbit DDRE,4
{__PORTPREFIX}E4  avrbit PORTE,4
                 endif
                 if      __PORTE_BITS&32
PINE5             avrbit PINE,5
DDE5              avrbit DDRE,5
{__PORTPREFIX}E5  avrbit PORTE,5
                 endif
                 if      __PORTE_BITS&64
PINE6             avrbit PINE,6
DDE6              avrbit DDRE,6
{__PORTPREFIX}E6  avrbit PORTE,6
                 endif
                 if      __PORTE_BITS&128
PINF7             avrbit PINE,7
DDE7              avrbit DDRE,7
{__PORTPREFIX}E7  avrbit PORTE,7
                 endif
                endif

                ifdef   PINF
                 ifndef  __PORTF_BITS
__PORTF_BITS      equ     0xff
                 endif
                 ifndef   PINF_inponly
                  ifndef DDRF
                   defreg   DDRF,PINF,1
                  endif
                  ifndef PORTF
                   defreg   PORTF,PINF,2
                  endif
                  if     __PORTF_BITS&1
DDF0               avrbit DDRF,0
{__PORTPREFIX}F0   avrbit PORTF,0
                  endif
                  if     __PORTF_BITS&2
DDF1               avrbit DDRF,1
{__PORTPREFIX}F1   avrbit PORTF,1
                  endif
                  if     __PORTF_BITS&4
DDF2               avrbit DDRF,2
{__PORTPREFIX}F2   avrbit PORTF,2
                  endif
                  if     __PORTF_BITS&8
DDF3               avrbit DDRF,3
{__PORTPREFIX}F3   avrbit PORTF,3
                  endif
                  if     __PORTF_BITS&16
DDF4               avrbit DDRF,4
{__PORTPREFIX}F4   avrbit PORTF,4
                  endif
                  if     __PORTF_BITS&32
DDF5               avrbit DDRF,5
{__PORTPREFIX}F5   avrbit PORTF,5
                  endif
                  if     __PORTF_BITS&64
DDF6               avrbit DDRF,6
{__PORTPREFIX}F6   avrbit PORTF,6
                  endif
                  if     __PORTF_BITS&128
DDF7               avrbit DDRF,7
{__PORTPREFIX}F7   avrbit PORTF,7
                  endif
PINF_inponly      equ      0
                 endif
                endif

                ifdef   PING
                 ifndef  __PORTG_BITS
__PORTG_BITS      equ     0xff
                 endif
                 defreg  DDRG,PING,1
DDG0             avrbit  DDRG,0
DDG1             avrbit  DDRG,1
DDG2             avrbit  DDRG,2
DDG3             avrbit  DDRG,3
DDG4             avrbit  DDRG,4
DDG5             avrbit  DDRG,5
DDG6             avrbit  DDRG,6
DDG7             avrbit  DDRG,7
                 defreg  PORTG,PING,2
{__PORTPREFIX}G0 avrbit  PORTG,0
{__PORTPREFIX}G1 avrbit  PORTG,1
{__PORTPREFIX}G2 avrbit  PORTG,2
{__PORTPREFIX}G3 avrbit  PORTG,3
{__PORTPREFIX}G4 avrbit  PORTG,4
{__PORTPREFIX}G5 avrbit  PORTG,5
{__PORTPREFIX}G6 avrbit  PORTG,6
{__PORTPREFIX}G7 avrbit  PORTG,7
                endif

                ifdef   PINH
                 ifndef  __PORTH_BITS
__PORTH_BITS      equ     0xff
                 endif
                 defreg  DDRH,PINH,1
DDH0             avrbit  DDRH,0
DDH1             avrbit  DDRH,1
DDH2             avrbit  DDRH,2
DDH3             avrbit  DDRH,3
DDH4             avrbit  DDRH,4
DDH5             avrbit  DDRH,5
DDH6             avrbit  DDRH,6
DDH7             avrbit  DDRH,7
                 defreg  PORTH,PINH,2
{__PORTPREFIX}H0 avrbit  PORTH,0
{__PORTPREFIX}H1 avrbit  PORTH,1
{__PORTPREFIX}H2 avrbit  PORTH,2
{__PORTPREFIX}H3 avrbit  PORTH,3
{__PORTPREFIX}H4 avrbit  PORTH,4
{__PORTPREFIX}H5 avrbit  PORTH,5
{__PORTPREFIX}H6 avrbit  PORTH,6
{__PORTPREFIX}H7 avrbit  PORTH,7
                endif

                ifdef   PINJ
                 ifndef  __PORTJ_BITS
__PORTJ_BITS      equ     0xff
                 endif
                 defreg  DDRJ,PINJ,1
DDJ0             avrbit  DDRJ,0
DDJ1             avrbit  DDRJ,1
DDJ2             avrbit  DDRJ,2
DDJ3             avrbit  DDRJ,3
DDJ4             avrbit  DDRJ,4
DDJ5             avrbit  DDRJ,5
DDJ6             avrbit  DDRJ,6
DDJ7             avrbit  DDRJ,7
                 defreg  PORTJ,PINJ,2
{__PORTPREFIX}J0 avrbit  PORTJ,0
{__PORTPREFIX}J1 avrbit  PORTJ,1
{__PORTPREFIX}J2 avrbit  PORTJ,2
{__PORTPREFIX}J3 avrbit  PORTJ,3
{__PORTPREFIX}J4 avrbit  PORTJ,4
{__PORTPREFIX}J5 avrbit  PORTJ,5
{__PORTPREFIX}J6 avrbit  PORTJ,6
{__PORTPREFIX}J7 avrbit  PORTJ,7
                endif

                ifdef   PINK
                 ifndef  __PORTK_BITS
__PORTK_BITS      equ     0xff
                 endif
                 defreg  DDRK,PINK,1
DDK0             avrbit  DDRK,0
DDK1             avrbit  DDRK,1
DDK2             avrbit  DDRK,2
DDK3             avrbit  DDRK,3
DDK4             avrbit  DDRK,4
DDK5             avrbit  DDRK,5
DDK6             avrbit  DDRK,6
DDK7             avrbit  DDRK,7
                 defreg  PORTK,PINK,2
{__PORTPREFIX}K0 avrbit  PORTK,0
{__PORTPREFIX}K1 avrbit  PORTK,1
{__PORTPREFIX}K2 avrbit  PORTK,2
{__PORTPREFIX}K3 avrbit  PORTK,3
{__PORTPREFIX}K4 avrbit  PORTK,4
{__PORTPREFIX}K5 avrbit  PORTK,5
{__PORTPREFIX}K6 avrbit  PORTK,6
{__PORTPREFIX}K7 avrbit  PORTK,7
                endif

                ifdef   PINL
                 defreg  DDRL,PINL,1
DDL0             avrbit  DDRL,0
DDL1             avrbit  DDRL,1
DDL2             avrbit  DDRL,2
DDL3             avrbit  DDRL,3
DDL4             avrbit  DDRL,4
DDL5             avrbit  DDRL,5
DDL6             avrbit  DDRL,6
DDL7             avrbit  DDRL,7
                 defreg  PORTL,PINL,2
{__PORTPREFIX}L0 avrbit  PORTL,0
{__PORTPREFIX}L1 avrbit  PORTL,1
{__PORTPREFIX}L2 avrbit  PORTL,2
{__PORTPREFIX}L3 avrbit  PORTL,3
{__PORTPREFIX}L4 avrbit  PORTL,4
{__PORTPREFIX}L5 avrbit  PORTL,5
{__PORTPREFIX}L6 avrbit  PORTL,6
{__PORTPREFIX}L7 avrbit  PORTL,7
                endif

                ifdef    PCMSK0
                ifndef   PCINT0
PCINT0           avrbit   PCMSK0,0
PCINT1           avrbit   PCMSK0,1
PCINT2           avrbit   PCMSK0,2
PCINT3           avrbit   PCMSK0,3
PCINT4           avrbit   PCMSK0,4
PCINT5           avrbit   PCMSK0,5
PCINT6           avrbit   PCMSK0,6
PCINT7           avrbit   PCMSK0,7
                endif
                endif
                ifdef    PCMSK1
                ifndef   PCINT8
PCINT8           avrbit   PCMSK1,0
PCINT9           avrbit   PCMSK1,1
PCINT10          avrbit   PCMSK1,2
PCINT11          avrbit   PCMSK1,3
PCINT12          avrbit   PCMSK1,4
PCINT13          avrbit   PCMSK1,5
PCINT14          avrbit   PCMSK1,6
PCINT15          avrbit   PCMSK1,7
                endif
                endif
                ifdef    PCMSK2
                ifndef   PCINT16
PCINT16          avrbit   PCMSK2,0
PCINT17          avrbit   PCMSK2,1
PCINT18          avrbit   PCMSK2,2
PCINT19          avrbit   PCMSK2,3
PCINT20          avrbit   PCMSK2,4
PCINT21          avrbit   PCMSK2,5
PCINT22          avrbit   PCMSK2,6
PCINT23          avrbit   PCMSK2,7
                endif
                endif
                ifdef   PCMSK3
                ifndef  PCINT16
PCINT24          avrbit   PCMSK3,0
PCINT25          avrbit   PCMSK3,1
PCINT26          avrbit   PCMSK3,2
PCINT27          avrbit   PCMSK3,3
PCINT28          avrbit   PCMSK3,4
PCINT29          avrbit   PCMSK3,5
PCINT30          avrbit   PCMSK3,6
PCINT31          avrbit   PCMSK3,7
                endif
                endif

                ifdef PCICR
                 ifdef PCMSK0
PCIE0             avrbit        PCICR,0
                 endif
                 ifdef PCMSK1
PCIE1             avrbit        PCICR,1
                 endif
                 ifdef PCMSK2
PCIE2             avrbit        PCICR,2
                 endif
                 ifdef PCMSK3
PCIE3             avrbit        PCICR,3
                 endif
                endif

                ifdef PCIFR
                 ifdef PCMSK0
PCIF0             avrbit        PCIFR,0
                 endif
                 ifdef PCMSK1
PCIF1             avrbit        PCIFR,1
                 endif
                 ifdef PCMSK2
PCIF2             avrbit        PCIFR,2
                 endif
                 ifdef PCMSK3
PCIF3             avrbit        PCIFR,3
                 endif
                endif

;----------------------------------------------------------------------------
; Timer

                ; deduce interrupt status from interrupt enable bits

                __deducebit TOV0,TOIE0
                __deducebit OCF0,OCIE0
                __deducebit OCF0A,OCIE0A
                __deducebit OCF0B,OCIE0B

                __deducebit TOV1,TOIE1
                __deducebit OCF1A,OCIE1A
                __deducebit OCF1B,OCIE1B
                __deducebit OCF1C,OCIE1C
                __deducebit ICF1,TICIE1

                __deducebit TOV2,TOIE2
                __deducebit OCF2,OCIE2
                __deducebit OCF2A,OCIE2A
                __deducebit OCF2B,OCIE2B
                __deducebit ICF2,TICIE2

                __deducebit TOV3,TOIE3
                __deducebit OCF3,OCIE3
                __deducebit OCF3A,OCIE3A
                __deducebit OCF3B,OCIE3B
                __deducebit OCF3C,OCIE3C
                __deducebit ICF3,TICIE3

                __deducebit TOV4,TOIE4
                __deducebit OCF4,OCIE4
                __deducebit OCF4A,OCIE4A
                __deducebit OCF4B,OCIE4B
                __deducebit OCF4C,OCIE4C
                __deducebit ICF4,TICIE4

                __deducebit TOV5,TOIE5
                __deducebit OCF5,OCIE5
                __deducebit OCF5A,OCIE5A
                __deducebit OCF5B,OCIE5B
                __deducebit OCF5C,OCIE5C
                __deducebit ICF5,TICIE5

;----------------------------------------------------------------------------

                restore                 ; wieder erlauben

                endif                   ; __regavrinc