MezData-Logo 102 Creative Commons License Lösungen Button :AVR: Include Dateien

AT90S2313

Assembler [Quellcode] C [Quellcode]
;***** THIS IS A MACHINE GENERATED FILE - DO NOT EDIT ********************
;***** Created: 2009-11-03 14:40 ******* Source: AT90S2313.xml ***********
;*************************************************************************
;* 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
;* 
;* Number            : AVR000
;* File Name         : "2313def.inc"
;* Title             : Register/Bit Definitions for the AT90S2313
;* Date              : 2009-11-03
;* Version           : 2.35
;* Support E-mail    : avr@atmel.com
;* Target MCU        : AT90S2313
;* 
;* DESCRIPTION
;* When including this file in the assembly program file, all I/O register 
;* names and I/O register bit names appearing in the data book can be used.
;* In addition, the six registers forming the three data pointers X, Y and 
;* Z have been assigned names XL - ZH. Highest RAM address for Internal 
;* SRAM is also defined 
;* 
;* The Register names are represented by their hexadecimal address.
;* 
;* The Register Bit names are represented by their bit number (0-7).
;* 
;* Please observe the difference in using the bit names with instructions
;* such as "sbr"/"cbr" (set/clear bit in register) and "sbrs"/"sbrc"
;* (skip if bit in register set/cleared). The following example illustrates
;* this:
;* 
;* in    r16,PORTB             ;read PORTB latch
;* sbr   r16,(1<<PB6)+(1<<PB5) ;set PB6 and PB5 (use masks, not bit#)
;* out   PORTB,r16             ;output to PORTB
;* 
;* in    r16,TIFR              ;read the Timer Interrupt Flag Register
;* sbrc  r16,TOV0              ;test the overflow flag (use bit#)
;* rjmp  TOV0_is_set           ;jump if set
;* ...                         ;otherwise do something else
;*************************************************************************

#ifndef _2313DEF_INC_
#define _2313DEF_INC_

#pragma partinc 0

; ***** SPECIFY DEVICE ***************************************************
.device AT90S2313
#pragma AVRPART ADMIN PART_NAME AT90S2313
.equ    SIGNATURE_000    = 0x1e
.equ    SIGNATURE_001    = 0x91
.equ    SIGNATURE_002    = 0x01

#pragma AVRPART CORE CORE_VERSION V1

; ***** I/O REGISTER DEFINITIONS *****************************************
; NOTE:
; Definitions marked "MEMORY MAPPED"are extended I/O ports
; and cannot be used with IN/OUT instructions
.equ    SREG    = 0x3f
.equ    SPL    = 0x3d
.equ    GIMSK    = 0x3b
.equ    GIFR    = 0x3a
.equ    TIMSK    = 0x39
.equ    TIFR    = 0x38
.equ    MCUCR    = 0x35
.equ    TCCR0    = 0x33
.equ    TCNT0    = 0x32
.equ    TCCR1A    = 0x2f
.equ    TCCR1B    = 0x2e
.equ    TCNT1L    = 0x2c
.equ    TCNT1H    = 0x2d
.equ    OCR1AL    = 0x2a
.equ    OCR1AH    = 0x2b
.equ    ICR1L    = 0x24
.equ    ICR1H    = 0x25
.equ    WDTCR    = 0x21
.equ    EEAR    = 0x1e
.equ    EEDR    = 0x1d
.equ    EECR    = 0x1c
.equ    PORTB    = 0x18
.equ    DDRB    = 0x17
.equ    PINB    = 0x16
.equ    PORTD    = 0x12
.equ    DDRD    = 0x11
.equ    PIND    = 0x10
.equ    UDR    = 0x0c
.equ    USR    = 0x0b
.equ    UCR    = 0x0a
.equ    UBRR    = 0x09
.equ    ACSR    = 0x08

; ***** BIT DEFINITIONS **************************************************

; ***** PORTB ************************
; PORTB - Port B Data Register
.equ    PORTB0    = 0    ; Port B Data Register bit 0
.equ    PB0    = 0    ; For compatibility
.equ    PORTB1    = 1    ; Port B Data Register bit 1
.equ    PB1    = 1    ; For compatibility
.equ    PORTB2    = 2    ; Port B Data Register bit 2
.equ    PB2    = 2    ; For compatibility
.equ    PORTB3    = 3    ; Port B Data Register bit 3
.equ    PB3    = 3    ; For compatibility
.equ    PORTB4    = 4    ; Port B Data Register bit 4
.equ    PB4    = 4    ; For compatibility
.equ    PORTB5    = 5    ; Port B Data Register bit 5
.equ    PB5    = 5    ; For compatibility
.equ    PORTB6    = 6    ; Port B Data Register bit 6
.equ    PB6    = 6    ; For compatibility
.equ    PORTB7    = 7    ; Port B Data Register bit 7
.equ    PB7    = 7    ; For compatibility

; DDRB - Port B Data Direction Register
.equ    DDB0    = 0    ; Port B Data Direction Register bit 0
.equ    DDB1    = 1    ; Port B Data Direction Register bit 1
.equ    DDB2    = 2    ; Port B Data Direction Register bit 2
.equ    DDB3    = 3    ; Port B Data Direction Register bit 3
.equ    DDB4    = 4    ; Port B Data Direction Register bit 4
.equ    DDB5    = 5    ; Port B Data Direction Register bit 5
.equ    DDB6    = 6    ; Port B Data Direction Register bit 6
.equ    DDB7    = 7    ; Port B Data Direction Register bit 7

; PINB - Port B Input Pins
.equ    PINB0    = 0    ; Port B Input Pins bit 0
.equ    PINB1    = 1    ; Port B Input Pins bit 1
.equ    PINB2    = 2    ; Port B Input Pins bit 2
.equ    PINB3    = 3    ; Port B Input Pins bit 3
.equ    PINB4    = 4    ; Port B Input Pins bit 4
.equ    PINB5    = 5    ; Port B Input Pins bit 5
.equ    PINB6    = 6    ; Port B Input Pins bit 6
.equ    PINB7    = 7    ; Port B Input Pins bit 7

; ***** TIMER_COUNTER_0 **************
; TIMSK - Timer/Counter Interrupt Mask Register
.equ    TOIE0    = 1    ; Timer/Counter0 Overflow Interrupt Enable

; TIFR - Timer/Counter Interrupt Flag register
.equ    TOV0    = 1    ; Timer/Counter0 Overflow Flag

; TCCR0 - Timer/Counter0 Control Register
.equ    CS00    = 0    ; Clock Select0 bit 0
.equ    CS01    = 1    ; Clock Select0 bit 1
.equ    CS02    = 2    ; Clock Select0 bit 2

; TCNT0 - Timer Counter 0
.equ    TCNT00    = 0    ; Timer Counter 0 bit 0
.equ    TCNT01    = 1    ; Timer Counter 0 bit 1
.equ    TCNT02    = 2    ; Timer Counter 0 bit 2
.equ    TCNT03    = 3    ; Timer Counter 0 bit 3
.equ    TCNT04    = 4    ; Timer Counter 0 bit 4
.equ    TCNT05    = 5    ; Timer Counter 0 bit 5
.equ    TCNT06    = 6    ; Timer Counter 0 bit 6
.equ    TCNT07    = 7    ; Timer Counter 0 bit 7

; ***** TIMER_COUNTER_1 **************
; TIMSK - Timer/Counter Interrupt Mask Register
.equ    TICIE1    = 3    ; Timer/Counter1 Input Capture Interrupt Enable
.equ    OCIE1A    = 6    ; Timer/Counter1 Output CompareA Match Interrupt Enable
.equ    TOIE1    = 7    ; Timer/Counter1 Overflow Interrupt Enable

; TIFR - Timer/Counter Interrupt Flag register
.equ    ICF1    = 3    ; Input Capture Flag 1
.equ    OCF1A    = 6    ; Output Compare Flag 1A
.equ    TOV1    = 7    ; Timer/Counter1 Overflow Flag

; TCCR1A - Timer/Counter1 Control Register A
.equ    PWM10    = 0    ; Pulse Width Modulator Select Bit 0
.equ    PWM11    = 1    ; Pulse Width Modulator Select Bit 1
.equ    COM1A0    = 6    ; Comparet Ouput Mode 1A, bit 0
.equ    COM1A1    = 7    ; Compare Output Mode 1A, bit 1

; TCCR1B - Timer/Counter1 Control Register B
.equ    CS10    = 0    ; Clock Select bit 0
.equ    CS11    = 1    ; Clock Select 1 bit 1
.equ    CS12    = 2    ; Clock Select1 bit 2
.equ    CTC1    = 3    ; Clear Timer/Counter1 on Compare Match
.equ    ICES1    = 6    ; Input Capture 1 Edge Select
.equ    ICNC1    = 7    ; Input Capture 1 Noise Canceler

; ***** WATCHDOG *********************
; WDTCR - Watchdog Timer Control Register
.equ    WDP0    = 0    ; Watch Dog Timer Prescaler bit 0
.equ    WDP1    = 1    ; Watch Dog Timer Prescaler bit 1
.equ    WDP2    = 2    ; Watch Dog Timer Prescaler bit 2
.equ    WDE    = 3    ; Watch Dog Enable
.equ    WDTOE    = 4    ; RW
.equ    WDDE    = WDTOE    ; For compatibility

; ***** EXTERNAL_INTERRUPT ***********
; GIMSK - General Interrupt Mask Register
.equ    INT0    = 6    ; External Interrupt Request 0 Enable
.equ    INT1    = 7    ; External Interrupt Request 1 Enable

; GIFR - General Interrupt Flag register
.equ    INTF0    = 6    ; External Interrupt Flag 0
.equ    INTF1    = 7    ; External Interrupt Flag 1

; ***** UART *************************
; UDR - UART I/O Data Register
.equ    UDR0    = 0    ; UART I/O Data Register bit 0
.equ    UDR1    = 1    ; UART I/O Data Register bit 1
.equ    UDR2    = 2    ; UART I/O Data Register bit 2
.equ    UDR3    = 3    ; UART I/O Data Register bit 3
.equ    UDR4    = 4    ; UART I/O Data Register bit 4
.equ    UDR5    = 5    ; UART I/O Data Register bit 5
.equ    UDR6    = 6    ; UART I/O Data Register bit 6
.equ    UDR7    = 7    ; UART I/O Data Register bit 7

; USR - UART Status Register
.equ    DOR    = 3    ; Data overRun
.equ    FE    = 4    ; Framing Error
.equ    UDRE    = 5    ; UART Data Register Empty
.equ    TXC    = 6    ; UART Transmit Complete
.equ    RXC    = 7    ; UART Receive Complete

; UCR - UART Control Register
.equ    TXB8    = 0    ; Transmit Data Bit 8
.equ    RXB8    = 1    ; Receive Data Bit 8
.equ    CHR9    = 2    ; 9-bit Characters
.equ    TXEN    = 3    ; Transmitter Enable
.equ    RXEN    = 4    ; Receiver Enable
.equ    UDRIE    = 5    ; UART Data Register Empty Interrupt Enable
.equ    TXCIE    = 6    ; TX Complete Interrupt Enable
.equ    RXCIE    = 7    ; RX Complete Interrupt Enable

; UBRR - UART BAUD Rate Register
.equ    UBRR0    = 0    ; UART Baud Rate Register bit 0
.equ    UBRR1    = 1    ; UART Baud Rate Register bit 1
.equ    UBRR2    = 2    ; UART Baud Rate Register bit 2
.equ    UBRR3    = 3    ; UART Baud Rate Register bit 3
.equ    UBRR4    = 4    ; UART Baud Rate Register bit 4
.equ    UBRR5    = 5    ; UART Baud Rate Register bit 5
.equ    UBRR6    = 6    ; UART Baud Rate Register bit 6
.equ    UBRR7    = 7    ; UART Baud Rate Register bit 7

; ***** ANALOG_COMPARATOR ************
; ACSR - Analog Comparator Control And Status Register
.equ    ACIS0    = 0    ; Analog Comparator Interrupt Mode Select bit 0
.equ    ACIS1    = 1    ; Analog Comparator Interrupt Mode Select bit 1
.equ    ACIC    = 2    ; Analog Comparator Input Capture Enable
.equ    ACIE    = 3    ; Analog Comparator Interrupt Enable
.equ    ACI    = 4    ; Analog Comparator Interrupt Flag
.equ    ACO    = 5    ; Analog Comparator Output
.equ    ACD    = 7    ; Analog Comparator Disable

; ***** CPU **************************
; SREG - Status Register
.equ    SREG_C    = 0    ; Carry Flag
.equ    SREG_Z    = 1    ; Zero Flag
.equ    SREG_N    = 2    ; Negative Flag
.equ    SREG_V    = 3    ; Two's Complement Overflow Flag
.equ    SREG_S    = 4    ; Sign Bit
.equ    SREG_H    = 5    ; Half Carry Flag
.equ    SREG_T    = 6    ; Bit Copy Storage
.equ    SREG_I    = 7    ; Global Interrupt Enable

; SPL - Stack Pointer Low
.equ    SP0    = 0    ; Stack pointer bit 0
.equ    SP1    = 1    ; Stack pointer bit 1
.equ    SP2    = 2    ; Stack pointer bit 2
.equ    SP3    = 3    ; Stack pointer bit 3
.equ    SP4    = 4    ; Stack pointer bit 4
.equ    SP5    = 5    ; Stack pointer bit 5
.equ    SP6    = 6    ; Stack pointer bit 6
.equ    SP7    = 7    ; Stack pointer bit 7

; MCUCR - MCU Control Register
.equ    ISC00    = 0    ; Interrupt Sense Control 0 bit 0
.equ    ISC01    = 1    ; Interrupt Sense Control 0 bit 1
.equ    ISC10    = 2    ; Interrupt Sense Control 1 bit 0
.equ    ISC11    = 3    ; Interrupt Sense Control 1 bit 1
.equ    SM    = 4    ; Sleep Mode
.equ    SE    = 5    ; Sleep Enable

; ***** PORTD ************************
; PORTD - Data Register, Port D
.equ    PORTD0    = 0    ; 
.equ    PD0    = 0    ; For compatibility
.equ    PORTD1    = 1    ; 
.equ    PD1    = 1    ; For compatibility
.equ    PORTD2    = 2    ; 
.equ    PD2    = 2    ; For compatibility
.equ    PORTD3    = 3    ; 
.equ    PD3    = 3    ; For compatibility
.equ    PORTD4    = 4    ; 
.equ    PD4    = 4    ; For compatibility
.equ    PORTD5    = 5    ; 
.equ    PD5    = 5    ; For compatibility
.equ    PORTD6    = 6    ; 
.equ    PD6    = 6    ; For compatibility

; DDRD - Data Direction Register, Port D
.equ    DDD0    = 0    ; 
.equ    DDD1    = 1    ; 
.equ    DDD2    = 2    ; 
.equ    DDD3    = 3    ; 
.equ    DDD4    = 4    ; 
.equ    DDD5    = 5    ; 
.equ    DDD6    = 6    ; 

; PIND - Input Pins, Port D
.equ    PIND0    = 0    ; 
.equ    PIND1    = 1    ; 
.equ    PIND2    = 2    ; 
.equ    PIND3    = 3    ; 
.equ    PIND4    = 4    ; 
.equ    PIND5    = 5    ; 
.equ    PIND6    = 6    ; 

; ***** EEPROM ***********************
; EEAR - EEPROM Read/Write Access
.equ    EEARL    = EEAR    ; For compatibility
.equ    EEAR0    = 0    ; EEPROM Read/Write Access bit 0
.equ    EEAR1    = 1    ; EEPROM Read/Write Access bit 1
.equ    EEAR2    = 2    ; EEPROM Read/Write Access bit 2
.equ    EEAR3    = 3    ; EEPROM Read/Write Access bit 3
.equ    EEAR4    = 4    ; EEPROM Read/Write Access bit 4
.equ    EEAR5    = 5    ; EEPROM Read/Write Access bit 5
.equ    EEAR6    = 6    ; EEPROM Read/Write Access bit 6

; EEDR - EEPROM Data Register
.equ    EEDR0    = 0    ; EEPROM Data Register bit 0
.equ    EEDR1    = 1    ; EEPROM Data Register bit 1
.equ    EEDR2    = 2    ; EEPROM Data Register bit 2
.equ    EEDR3    = 3    ; EEPROM Data Register bit 3
.equ    EEDR4    = 4    ; EEPROM Data Register bit 4
.equ    EEDR5    = 5    ; EEPROM Data Register bit 5
.equ    EEDR6    = 6    ; EEPROM Data Register bit 6
.equ    EEDR7    = 7    ; EEPROM Data Register bit 7

; EECR - EEPROM Control Register
.equ    EERE    = 0    ; EEPROM Read Enable
.equ    EEWE    = 1    ; EEPROM Write Enable
.equ    EEMWE    = 2    ; EEPROM Master Write Enable

; ***** LOCKSBITS ********************************************************
.equ    LB1    = 0    ; Lockbit
.equ    LB2    = 1    ; Lockbit

; ***** FUSES ************************************************************
; LOW fuse bits

; ***** CPU REGISTER DEFINITIONS *****************************************
.def    XH    = r27
.def    XL    = r26
.def    YH    = r29
.def    YL    = r28
.def    ZH    = r31
.def    ZL    = r30

; ***** DATA MEMORY DECLARATIONS *****************************************
.equ    FLASHEND    = 0x03ff    ; Note: Word address
.equ    IOEND    = 0x003f
.equ    SRAM_START    = 0x0060
.equ    SRAM_SIZE    = 128
.equ    RAMEND    = 0x00df
.equ    XRAMEND    = 0x0000
.equ    E2END    = 0x007f
.equ    EEPROMEND    = 0x007f
.equ    EEADRBITS    = 7
#pragma AVRPART MEMORY PROG_FLASH 2048
#pragma AVRPART MEMORY EEPROM 128
#pragma AVRPART MEMORY INT_SRAM SIZE 128
#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x60

; ***** INTERRUPT VECTORS ************************************************
.equ    INT0addr    = 0x0001    ; External Interrupt Request 0
.equ    INT1addr    = 0x0002    ; External Interrupt Request 1
.equ    ICP1addr    = 0x0003    ; Timer/Counter1 Capture Event
.equ    OC1addr    = 0x0004    ; Timer/Counter1 Compare Match
.equ    OVF1addr    = 0x0005    ; Timer/Counter1 Overflow
.equ    OVF0addr    = 0x0006    ; Timer/Counter0 Overflow
.equ    URXCaddr    = 0x0007    ; UART, Rx Complete
.equ    UDREaddr    = 0x0008    ; UART Data Register Empty
.equ    UTXCaddr    = 0x0009    ; UART, Tx Complete
.equ    ACIaddr    = 0x000a    ; Analog Comparator

.equ    INT_VECTORS_SIZE    = 11    ; size in words

#pragma AVRPART CORE INSTRUCTIONS_NOT_SUPPORTED break

#endif  /* _2313DEF_INC_ */

; ***** END OF FILE ******************************************************
/* Copyright (c) 2002, Marek Michalkiewicz
   All rights reserved.

   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:

   * Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.

   * Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in
     the documentation and/or other materials provided with the
     distribution.

   * Neither the name of the copyright holders nor the names of
     contributors may be used to endorse or promote products derived
     from this software without specific prior written permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  POSSIBILITY OF SUCH DAMAGE. */

/* $Id: io2313.h,v 1.10.2.4 2009/02/11 18:05:22 arcanum Exp $ */

/* avr/io2313.h - definitions for AT90S2313 */

#ifndef _AVR_IO2313_H_
#define _AVR_IO2313_H_ 1

/* This file should only be included from <avr/io.h>, never directly. */

#ifndef _AVR_IO_H_
#  error "Include <avr/io.h> instead of this file."
#endif

#ifndef _AVR_IOXXX_H_
#  define _AVR_IOXXX_H_ "io2313.h"
#else
#  error "Attempt to include more than one <avr/ioXXX.h> file."
#endif 

/* I/O registers */

/* Analog Comparator Control and Status Register */
#define ACSR    _SFR_IO8(0x08)

/* UART Baud Rate Register */
#define UBRR    _SFR_IO8(0x09)

/* UART Control Register */
#define UCR    _SFR_IO8(0x0A)

/* UART Status Register */
#define USR    _SFR_IO8(0x0B)

/* UART I/O Data Register */
#define UDR    _SFR_IO8(0x0C)

/* Input Pins, Port D */
#define PIND    _SFR_IO8(0x10)

/* Data Direction Register, Port D */
#define DDRD    _SFR_IO8(0x11)

/* Data Register, Port D */
#define PORTD    _SFR_IO8(0x12)

/* Input Pins, Port B */
#define PINB    _SFR_IO8(0x16)

/* Data Direction Register, Port B */
#define DDRB    _SFR_IO8(0x17)

/* Data Register, Port B */
#define PORTB    _SFR_IO8(0x18)

/* EEPROM Control Register */
#define EECR    _SFR_IO8(0x1C)

/* EEPROM Data Register */
#define EEDR    _SFR_IO8(0x1D)

/* EEPROM Address Register */
#define EEAR    _SFR_IO8(0x1E)
#define EEARL    _SFR_IO8(0x1E)

/* Watchdog Timer Control Register */
#define WDTCR    _SFR_IO8(0x21)

/* T/C 1 Input Capture Register */
#define ICR1    _SFR_IO16(0x24)
#define ICR1L    _SFR_IO8(0x24)
#define ICR1H    _SFR_IO8(0x25)

/* Output Compare Register 1 */
#define OCR1    _SFR_IO16(0x2A)
#define OCR1L    _SFR_IO8(0x2A)
#define OCR1H    _SFR_IO8(0x2B)
#define OCR1A    _SFR_IO16(0x2A)
#define OCR1AL    _SFR_IO8(0x2A)
#define OCR1AH    _SFR_IO8(0x2B)

/* Timer/Counter 1 */
#define TCNT1    _SFR_IO16(0x2C)
#define TCNT1L    _SFR_IO8(0x2C)
#define TCNT1H    _SFR_IO8(0x2D)

/* Timer/Counter 1 Control and Status Register */
#define TCCR1B    _SFR_IO8(0x2E)

/* Timer/Counter 1 Control Register */
#define TCCR1A    _SFR_IO8(0x2F)

/* Timer/Counter 0 */
#define TCNT0    _SFR_IO8(0x32)

/* Timer/Counter 0 Control Register */
#define TCCR0    _SFR_IO8(0x33)

/* MCU general Control Register */
#define MCUCR    _SFR_IO8(0x35)

/* Timer/Counter Interrupt Flag register */
#define TIFR    _SFR_IO8(0x38)

/* Timer/Counter Interrupt MaSK register */
#define TIMSK    _SFR_IO8(0x39)

/* General Interrupt Flag Register */
#define GIFR    _SFR_IO8(0x3A)

/* General Interrupt MaSK register */
#define GIMSK    _SFR_IO8(0x3B)

/* 0x3C..0x3D SP */

/* 0x3F SREG */

/* Interrupt vectors */

/* External Interrupt Request 0 */
#define INT0_vect            _VECTOR(1)
#define SIG_INTERRUPT0            _VECTOR(1)

/* External Interrupt Request 1 */
#define INT1_vect            _VECTOR(2)
#define SIG_INTERRUPT1            _VECTOR(2)

/* Timer/Counter1 Capture Event */
#define TIMER1_CAPT1_vect        _VECTOR(3)
#define SIG_INPUT_CAPTURE1        _VECTOR(3)

/* Timer/Counter1 Compare Match */
#define TIMER1_COMP1_vect        _VECTOR(4)
#define SIG_OUTPUT_COMPARE1A        _VECTOR(4)

/* Timer/Counter1 Overflow */
#define TIMER1_OVF1_vect        _VECTOR(5)
#define SIG_OVERFLOW1            _VECTOR(5)

/* Timer/Counter0 Overflow */
#define TIMER0_OVF0_vect        _VECTOR(6)
#define SIG_OVERFLOW0            _VECTOR(6)

/* UART, Rx Complete */
#define UART_RX_vect            _VECTOR(7)
#define SIG_UART_RECV            _VECTOR(7)

/* UART Data Register Empty */
#define UART_UDRE_vect            _VECTOR(8)
#define SIG_UART_DATA            _VECTOR(8)

/* UART, Tx Complete */
#define UART_TX_vect            _VECTOR(9)
#define SIG_UART_TRANS            _VECTOR(9)

/* Analog Comparator */
#define ANA_COMP_vect            _VECTOR(10)
#define SIG_COMPARATOR            _VECTOR(10)

#define _VECTORS_SIZE 22

/*
 *  The Register Bit names are represented by their bit number (0-7).
 */     
 
/* General Interrupt MaSK register */
#define    INT1    7
#define    INT0    6
 
/* General Interrupt Flag Register */
#define    INTF1   7
#define    INTF0   6
 
/* Timer/Counter Interrupt MaSK register */                 
#define    TOIE1   7
#define    OCIE1A  6
#define    TICIE   3 /* old name */ 
#define    TICIE1  3
#define    TOIE0   1
 
/* Timer/Counter Interrupt Flag register */                   
#define    TOV1    7
#define    OCF1A   6
#define    ICF1    3
#define    TOV0    1
 
/* MCU general Control Register */ 
#define    SE      5
#define    SM      4
#define    ISC11   3
#define    ISC10   2
#define    ISC01   1
#define    ISC00   0
 
/* Timer/Counter 0 Control Register */
#define    CS02    2
#define    CS01    1
#define    CS00    0
 
/* Timer/Counter 1 Control Register */
#define    COM1A1  7
#define    COM1A0  6
#define    PWM11   1
#define    PWM10   0
 
/* Timer/Counter 1 Control and Status Register */
#define    ICNC1   7
#define    ICES1   6
#define    CTC1    3
#define    CS12    2
#define    CS11    1
#define    CS10    0
                        
/* Watchdog Timer Control Register */
#define    WDTOE   4
#define    WDE     3
#define    WDP2    2
#define    WDP1    1
#define    WDP0    0
 
/* EEPROM Control Register */
#define    EEMWE   2
#define    EEWE    1
#define    EERE    0
 
/* Data Register, Port B */  
#define    PB7     7
#define    PB6     6
#define    PB5     5
#define    PB4     4
#define    PB3     3
#define    PB2     2
#define    PB1     1
#define    PB0     0
 
/* Data Direction Register, Port B */
#define    DDB7    7
#define    DDB6    6
#define    DDB5    5
#define    DDB4    4
#define    DDB3    3
#define    DDB2    2
#define    DDB1    1
#define    DDB0    0
 
/* Input Pins, Port B */
#define    PINB7   7
#define    PINB6   6
#define    PINB5   5
#define    PINB4   4
#define    PINB3   3
#define    PINB2   2
#define    PINB1   1
#define    PINB0   0
 
/* Data Register, Port D */
#define    PD6     6
#define    PD5     5
#define    PD4     4
#define    PD3     3
#define    PD2     2
#define    PD1     1
#define    PD0     0
 
/* Data Direction Register, Port D */
#define    DDD6    6
#define    DDD5    5
#define    DDD4    4
#define    DDD3    3
#define    DDD2    2
#define    DDD1    1
#define    DDD0    0
 
/* Input Pins, Port D */
#define    PIND6   6
#define    PIND5   5
#define    PIND4   4
#define    PIND3   3
#define    PIND2   2
#define    PIND1   1
#define    PIND0   0
 
/* UART Status Register */
#define    RXC     7
#define    TXC     6
#define    UDRE    5
#define    FE      4
#define    DOR     3
 
/* UART Control Register */
#define    RXCIE   7
#define    TXCIE   6
#define    UDRIE   5
#define    RXEN    4
#define    TXEN    3
#define    CHR9    2
#define    RXB8    1
#define    TXB8    0
       
/* Analog Comparator Control and Status Register */ 
#define    ACD     7
#define    ACO     5
#define    ACI     4
#define    ACIE    3
#define    ACIC    2
#define    ACIS1   1
#define    ACIS0   0

/* EEPROM Control Register */
#define    EERIE   3
#define    EEMWE   2
#define    EEWE    1
#define    EERE    0
       
/* Constants */ 
#define    RAMEND     0xDF
#define    XRAMEND    RAMEND
#define    E2END      0x7F
#define    E2PAGESIZE 0
#define    FLASHEND   0x07FF


/* Fuses */
#define FUSE_MEMORY_SIZE 1

/* Low Fuse Byte */
#define FUSE_FSTRT (unsigned char)~_BV(0)
#define FUSE_SPIEN (unsigned char)~_BV(5)
#define LFUSE_DEFAULT (0xFF)

/* Lock Bits */
#define __LOCK_BITS_EXIST

/* Signature */
#define SIGNATURE_0 0x1E
#define SIGNATURE_1 0x91
#define SIGNATURE_2 0x01

#endif  /* _AVR_IO2313_H_ */

ATmega8

Assembler [Quellcode] C [Quellcode]
;***** THIS IS A MACHINE GENERATED FILE - DO NOT EDIT ********************
;***** Created: 2009-11-03 14:40 ******* Source: ATmega8.xml *************
;*************************************************************************
;* 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
;* 
;* Number            : AVR000
;* File Name         : "m8def.inc"
;* Title             : Register/Bit Definitions for the ATmega8
;* Date              : 2009-11-03
;* Version           : 2.35
;* Support E-mail    : avr@atmel.com
;* Target MCU        : ATmega8
;* 
;* DESCRIPTION
;* When including this file in the assembly program file, all I/O register 
;* names and I/O register bit names appearing in the data book can be used.
;* In addition, the six registers forming the three data pointers X, Y and 
;* Z have been assigned names XL - ZH. Highest RAM address for Internal 
;* SRAM is also defined 
;* 
;* The Register names are represented by their hexadecimal address.
;* 
;* The Register Bit names are represented by their bit number (0-7).
;* 
;* Please observe the difference in using the bit names with instructions
;* such as "sbr"/"cbr" (set/clear bit in register) and "sbrs"/"sbrc"
;* (skip if bit in register set/cleared). The following example illustrates
;* this:
;* 
;* in    r16,PORTB             ;read PORTB latch
;* sbr   r16,(1<<PB6)+(1<<PB5) ;set PB6 and PB5 (use masks, not bit#)
;* out   PORTB,r16             ;output to PORTB
;* 
;* in    r16,TIFR              ;read the Timer Interrupt Flag Register
;* sbrc  r16,TOV0              ;test the overflow flag (use bit#)
;* rjmp  TOV0_is_set           ;jump if set
;* ...                         ;otherwise do something else
;*************************************************************************

#ifndef _M8DEF_INC_
#define _M8DEF_INC_

#pragma partinc 0

; ***** SPECIFY DEVICE ***************************************************
.device ATmega8
#pragma AVRPART ADMIN PART_NAME ATmega8
.equ    SIGNATURE_000    = 0x1e
.equ    SIGNATURE_001    = 0x93
.equ    SIGNATURE_002    = 0x07

#pragma AVRPART CORE CORE_VERSION V2E

; ***** I/O REGISTER DEFINITIONS *****************************************
; NOTE:
; Definitions marked "MEMORY MAPPED"are extended I/O ports
; and cannot be used with IN/OUT instructions
.equ    SREG    = 0x3f
.equ    SPL    = 0x3d
.equ    SPH    = 0x3e
.equ    GICR    = 0x3b
.equ    GIFR    = 0x3a
.equ    TIMSK    = 0x39
.equ    TIFR    = 0x38
.equ    SPMCR    = 0x37
.equ    TWCR    = 0x36
.equ    MCUCR    = 0x35
.equ    MCUCSR    = 0x34
.equ    TCCR0    = 0x33
.equ    TCNT0    = 0x32
.equ    OSCCAL    = 0x31
.equ    SFIOR    = 0x30
.equ    TCCR1A    = 0x2f
.equ    TCCR1B    = 0x2e
.equ    TCNT1L    = 0x2c
.equ    TCNT1H    = 0x2d
.equ    OCR1AL    = 0x2a
.equ    OCR1AH    = 0x2b
.equ    OCR1BL    = 0x28
.equ    OCR1BH    = 0x29
.equ    ICR1L    = 0x26
.equ    ICR1H    = 0x27
.equ    TCCR2    = 0x25
.equ    TCNT2    = 0x24
.equ    OCR2    = 0x23
.equ    ASSR    = 0x22
.equ    WDTCR    = 0x21
.equ    UBRRH    = 0x20
.equ    UCSRC    = 0x20
.equ    EEARL    = 0x1e
.equ    EEARH    = 0x1f
.equ    EEDR    = 0x1d
.equ    EECR    = 0x1c
.equ    PORTB    = 0x18
.equ    DDRB    = 0x17
.equ    PINB    = 0x16
.equ    PORTC    = 0x15
.equ    DDRC    = 0x14
.equ    PINC    = 0x13
.equ    PORTD    = 0x12
.equ    DDRD    = 0x11
.equ    PIND    = 0x10
.equ    SPDR    = 0x0f
.equ    SPSR    = 0x0e
.equ    SPCR    = 0x0d
.equ    UDR    = 0x0c
.equ    UCSRA    = 0x0b
.equ    UCSRB    = 0x0a
.equ    UBRRL    = 0x09
.equ    ACSR    = 0x08
.equ    ADMUX    = 0x07
.equ    ADCSRA    = 0x06
.equ    ADCL    = 0x04
.equ    ADCH    = 0x05
.equ    TWDR    = 0x03
.equ    TWAR    = 0x02
.equ    TWSR    = 0x01
.equ    TWBR    = 0x00

; ***** BIT DEFINITIONS **************************************************

; ***** ANALOG_COMPARATOR ************
; SFIOR - Special Function IO Register
.equ    ACME    = 3    ; Analog Comparator Multiplexer Enable

; ACSR - Analog Comparator Control And Status Register
.equ    ACIS0    = 0    ; Analog Comparator Interrupt Mode Select bit 0
.equ    ACIS1    = 1    ; Analog Comparator Interrupt Mode Select bit 1
.equ    ACIC    = 2    ; Analog Comparator Input Capture Enable
.equ    ACIE    = 3    ; Analog Comparator Interrupt Enable
.equ    ACI    = 4    ; Analog Comparator Interrupt Flag
.equ    ACO    = 5    ; Analog Compare Output
.equ    ACBG    = 6    ; Analog Comparator Bandgap Select
.equ    ACD    = 7    ; Analog Comparator Disable

; ***** SPI **************************
; SPDR - SPI Data Register
.equ    SPDR0    = 0    ; SPI Data Register bit 0
.equ    SPDR1    = 1    ; SPI Data Register bit 1
.equ    SPDR2    = 2    ; SPI Data Register bit 2
.equ    SPDR3    = 3    ; SPI Data Register bit 3
.equ    SPDR4    = 4    ; SPI Data Register bit 4
.equ    SPDR5    = 5    ; SPI Data Register bit 5
.equ    SPDR6    = 6    ; SPI Data Register bit 6
.equ    SPDR7    = 7    ; SPI Data Register bit 7

; SPSR - SPI Status Register
.equ    SPI2X    = 0    ; Double SPI Speed Bit
.equ    WCOL    = 6    ; Write Collision Flag
.equ    SPIF    = 7    ; SPI Interrupt Flag

; SPCR - SPI Control Register
.equ    SPR0    = 0    ; SPI Clock Rate Select 0
.equ    SPR1    = 1    ; SPI Clock Rate Select 1
.equ    CPHA    = 2    ; Clock Phase
.equ    CPOL    = 3    ; Clock polarity
.equ    MSTR    = 4    ; Master/Slave Select
.equ    DORD    = 5    ; Data Order
.equ    SPE    = 6    ; SPI Enable
.equ    SPIE    = 7    ; SPI Interrupt Enable

; ***** EXTERNAL_INTERRUPT ***********
; GICR - General Interrupt Control Register
.equ    GIMSK    = GICR    ; For compatibility
.equ    IVCE    = 0    ; Interrupt Vector Change Enable
.equ    IVSEL    = 1    ; Interrupt Vector Select
.equ    INT0    = 6    ; External Interrupt Request 0 Enable
.equ    INT1    = 7    ; External Interrupt Request 1 Enable

; GIFR - General Interrupt Flag Register
.equ    INTF0    = 6    ; External Interrupt Flag 0
.equ    INTF1    = 7    ; External Interrupt Flag 1

; MCUCR - MCU Control Register
.equ    ISC00    = 0    ; Interrupt Sense Control 0 Bit 0
.equ    ISC01    = 1    ; Interrupt Sense Control 0 Bit 1
.equ    ISC10    = 2    ; Interrupt Sense Control 1 Bit 0
.equ    ISC11    = 3    ; Interrupt Sense Control 1 Bit 1

; ***** TIMER_COUNTER_0 **************
; TIMSK - Timer/Counter Interrupt Mask Register
.equ    TOIE0    = 0    ; Timer/Counter0 Overflow Interrupt Enable

; TIFR - Timer/Counter Interrupt Flag register
.equ    TOV0    = 0    ; Timer/Counter0 Overflow Flag

; TCCR0 - Timer/Counter0 Control Register
.equ    CS00    = 0    ; Clock Select0 bit 0
.equ    CS01    = 1    ; Clock Select0 bit 1
.equ    CS02    = 2    ; Clock Select0 bit 2

; TCNT0 - Timer Counter 0
.equ    TCNT00    = 0    ; Timer Counter 0 bit 0
.equ    TCNT01    = 1    ; Timer Counter 0 bit 1
.equ    TCNT02    = 2    ; Timer Counter 0 bit 2
.equ    TCNT03    = 3    ; Timer Counter 0 bit 3
.equ    TCNT04    = 4    ; Timer Counter 0 bit 4
.equ    TCNT05    = 5    ; Timer Counter 0 bit 5
.equ    TCNT06    = 6    ; Timer Counter 0 bit 6
.equ    TCNT07    = 7    ; Timer Counter 0 bit 7

; ***** TIMER_COUNTER_1 **************
; TIMSK - Timer/Counter Interrupt Mask Register
.equ    TOIE1    = 2    ; Timer/Counter1 Overflow Interrupt Enable
.equ    OCIE1B    = 3    ; Timer/Counter1 Output CompareB Match Interrupt Enable
.equ    OCIE1A    = 4    ; Timer/Counter1 Output CompareA Match Interrupt Enable
.equ    TICIE1    = 5    ; Timer/Counter1 Input Capture Interrupt Enable

; TIFR - Timer/Counter Interrupt Flag register
.equ    TOV1    = 2    ; Timer/Counter1 Overflow Flag
.equ    OCF1B    = 3    ; Output Compare Flag 1B
.equ    OCF1A    = 4    ; Output Compare Flag 1A
.equ    ICF1    = 5    ; Input Capture Flag 1

; TCCR1A - Timer/Counter1 Control Register A
.equ    WGM10    = 0    ; Waveform Generation Mode
.equ    PWM10    = WGM10    ; For compatibility
.equ    WGM11    = 1    ; Waveform Generation Mode
.equ    PWM11    = WGM11    ; For compatibility
.equ    FOC1B    = 2    ; Force Output Compare 1B
.equ    FOC1A    = 3    ; Force Output Compare 1A
.equ    COM1B0    = 4    ; Compare Output Mode 1B, bit 0
.equ    COM1B1    = 5    ; Compare Output Mode 1B, bit 1
.equ    COM1A0    = 6    ; Compare Ouput Mode 1A, bit 0
.equ    COM1A1    = 7    ; Compare Output Mode 1A, bit 1

; TCCR1B - Timer/Counter1 Control Register B
.equ    CS10    = 0    ; Prescaler source of Timer/Counter 1
.equ    CS11    = 1    ; Prescaler source of Timer/Counter 1
.equ    CS12    = 2    ; Prescaler source of Timer/Counter 1
.equ    WGM12    = 3    ; Waveform Generation Mode
.equ    CTC10    = WGM12    ; For compatibility
.equ    CTC1    = WGM12    ; For compatibility
.equ    WGM13    = 4    ; Waveform Generation Mode
.equ    CTC11    = WGM13    ; For compatibility
.equ    ICES1    = 6    ; Input Capture 1 Edge Select
.equ    ICNC1    = 7    ; Input Capture 1 Noise Canceler

; ***** TIMER_COUNTER_2 **************
; TIMSK - Timer/Counter Interrupt Mask register
.equ    TOIE2    = 6    ; Timer/Counter2 Overflow Interrupt Enable
.equ    OCIE2    = 7    ; Timer/Counter2 Output Compare Match Interrupt Enable

; TIFR - Timer/Counter Interrupt Flag Register
.equ    TOV2    = 6    ; Timer/Counter2 Overflow Flag
.equ    OCF2    = 7    ; Output Compare Flag 2

; TCCR2 - Timer/Counter2 Control Register
.equ    CS20    = 0    ; Clock Select bit 0
.equ    CS21    = 1    ; Clock Select bit 1
.equ    CS22    = 2    ; Clock Select bit 2
.equ    WGM21    = 3    ; Waveform Generation Mode
.equ    CTC2    = WGM21    ; For compatibility
.equ    COM20    = 4    ; Compare Output Mode bit 0
.equ    COM21    = 5    ; Compare Output Mode bit 1
.equ    WGM20    = 6    ; Waveform Genration Mode
.equ    PWM2    = WGM20    ; For compatibility
.equ    FOC2    = 7    ; Force Output Compare

; TCNT2 - Timer/Counter2
.equ    TCNT2_0    = 0    ; Timer/Counter 2 bit 0
.equ    TCNT2_1    = 1    ; Timer/Counter 2 bit 1
.equ    TCNT2_2    = 2    ; Timer/Counter 2 bit 2
.equ    TCNT2_3    = 3    ; Timer/Counter 2 bit 3
.equ    TCNT2_4    = 4    ; Timer/Counter 2 bit 4
.equ    TCNT2_5    = 5    ; Timer/Counter 2 bit 5
.equ    TCNT2_6    = 6    ; Timer/Counter 2 bit 6
.equ    TCNT2_7    = 7    ; Timer/Counter 2 bit 7

; OCR2 - Timer/Counter2 Output Compare Register
.equ    OCR2_0    = 0    ; Timer/Counter2 Output Compare Register Bit 0
.equ    OCR2_1    = 1    ; Timer/Counter2 Output Compare Register Bit 1
.equ    OCR2_2    = 2    ; Timer/Counter2 Output Compare Register Bit 2
.equ    OCR2_3    = 3    ; Timer/Counter2 Output Compare Register Bit 3
.equ    OCR2_4    = 4    ; Timer/Counter2 Output Compare Register Bit 4
.equ    OCR2_5    = 5    ; Timer/Counter2 Output Compare Register Bit 5
.equ    OCR2_6    = 6    ; Timer/Counter2 Output Compare Register Bit 6
.equ    OCR2_7    = 7    ; Timer/Counter2 Output Compare Register Bit 7

; ASSR - Asynchronous Status Register
.equ    TCR2UB    = 0    ; Timer/counter Control Register2 Update Busy
.equ    OCR2UB    = 1    ; Output Compare Register2 Update Busy
.equ    TCN2UB    = 2    ; Timer/Counter2 Update Busy
.equ    AS2    = 3    ; Asynchronous Timer/counter2

; SFIOR - Special Function IO Register
.equ    PSR2    = 1    ; Prescaler Reset Timer/Counter2

; ***** USART ************************
; UDR - USART I/O Data Register
.equ    UDR0    = 0    ; USART I/O Data Register bit 0
.equ    UDR1    = 1    ; USART I/O Data Register bit 1
.equ    UDR2    = 2    ; USART I/O Data Register bit 2
.equ    UDR3    = 3    ; USART I/O Data Register bit 3
.equ    UDR4    = 4    ; USART I/O Data Register bit 4
.equ    UDR5    = 5    ; USART I/O Data Register bit 5
.equ    UDR6    = 6    ; USART I/O Data Register bit 6
.equ    UDR7    = 7    ; USART I/O Data Register bit 7

; UCSRA - USART Control and Status Register A
.equ    USR    = UCSRA    ; For compatibility
.equ    MPCM    = 0    ; Multi-processor Communication Mode
.equ    U2X    = 1    ; Double the USART transmission speed
.equ    UPE    = 2    ; Parity Error
.equ    PE    = UPE    ; For compatibility
.equ    DOR    = 3    ; Data overRun
.equ    FE    = 4    ; Framing Error
.equ    UDRE    = 5    ; USART Data Register Empty
.equ    TXC    = 6    ; USART Transmitt Complete
.equ    RXC    = 7    ; USART Receive Complete

; UCSRB - USART Control and Status Register B
.equ    UCR    = UCSRB    ; For compatibility
.equ    TXB8    = 0    ; Transmit Data Bit 8
.equ    RXB8    = 1    ; Receive Data Bit 8
.equ    UCSZ2    = 2    ; Character Size
.equ    CHR9    = UCSZ2    ; For compatibility
.equ    TXEN    = 3    ; Transmitter Enable
.equ    RXEN    = 4    ; Receiver Enable
.equ    UDRIE    = 5    ; USART Data register Empty Interrupt Enable
.equ    TXCIE    = 6    ; TX Complete Interrupt Enable
.equ    RXCIE    = 7    ; RX Complete Interrupt Enable

; UCSRC - USART Control and Status Register C
.equ    UCPOL    = 0    ; Clock Polarity
.equ    UCSZ0    = 1    ; Character Size
.equ    UCSZ1    = 2    ; Character Size
.equ    USBS    = 3    ; Stop Bit Select
.equ    UPM0    = 4    ; Parity Mode Bit 0
.equ    UPM1    = 5    ; Parity Mode Bit 1
.equ    UMSEL    = 6    ; USART Mode Select
.equ    URSEL    = 7    ; Register Select

.equ    UBRRHI    = UBRRH    ; For compatibility

; ***** TWI **************************
; TWBR - TWI Bit Rate register
.equ    I2BR    = TWBR    ; For compatibility
.equ    TWBR0    = 0    ; 
.equ    TWBR1    = 1    ; 
.equ    TWBR2    = 2    ; 
.equ    TWBR3    = 3    ; 
.equ    TWBR4    = 4    ; 
.equ    TWBR5    = 5    ; 
.equ    TWBR6    = 6    ; 
.equ    TWBR7    = 7    ; 

; TWCR - TWI Control Register
.equ    I2CR    = TWCR    ; For compatibility
.equ    TWIE    = 0    ; TWI Interrupt Enable
.equ    I2IE    = TWIE    ; For compatibility
.equ    TWEN    = 2    ; TWI Enable Bit
.equ    I2EN    = TWEN    ; For compatibility
.equ    ENI2C    = TWEN    ; For compatibility
.equ    TWWC    = 3    ; TWI Write Collition Flag
.equ    I2WC    = TWWC    ; For compatibility
.equ    TWSTO    = 4    ; TWI Stop Condition Bit
.equ    I2STO    = TWSTO    ; For compatibility
.equ    TWSTA    = 5    ; TWI Start Condition Bit
.equ    I2STA    = TWSTA    ; For compatibility
.equ    TWEA    = 6    ; TWI Enable Acknowledge Bit
.equ    I2EA    = TWEA    ; For compatibility
.equ    TWINT    = 7    ; TWI Interrupt Flag
.equ    I2INT    = TWINT    ; For compatibility

; TWSR - TWI Status Register
.equ    I2SR    = TWSR    ; For compatibility
.equ    TWPS0    = 0    ; TWI Prescaler
.equ    TWS0    = TWPS0    ; For compatibility
.equ    I2GCE    = TWPS0    ; For compatibility
.equ    TWPS1    = 1    ; TWI Prescaler
.equ    TWS1    = TWPS1    ; For compatibility
.equ    TWS3    = 3    ; TWI Status
.equ    I2S3    = TWS3    ; For compatibility
.equ    TWS4    = 4    ; TWI Status
.equ    I2S4    = TWS4    ; For compatibility
.equ    TWS5    = 5    ; TWI Status
.equ    I2S5    = TWS5    ; For compatibility
.equ    TWS6    = 6    ; TWI Status
.equ    I2S6    = TWS6    ; For compatibility
.equ    TWS7    = 7    ; TWI Status
.equ    I2S7    = TWS7    ; For compatibility

; TWDR - TWI Data register
.equ    I2DR    = TWDR    ; For compatibility
.equ    TWD0    = 0    ; TWI Data Register Bit 0
.equ    TWD1    = 1    ; TWI Data Register Bit 1
.equ    TWD2    = 2    ; TWI Data Register Bit 2
.equ    TWD3    = 3    ; TWI Data Register Bit 3
.equ    TWD4    = 4    ; TWI Data Register Bit 4
.equ    TWD5    = 5    ; TWI Data Register Bit 5
.equ    TWD6    = 6    ; TWI Data Register Bit 6
.equ    TWD7    = 7    ; TWI Data Register Bit 7

; TWAR - TWI (Slave) Address register
.equ    I2AR    = TWAR    ; For compatibility
.equ    TWGCE    = 0    ; TWI General Call Recognition Enable Bit
.equ    TWA0    = 1    ; TWI (Slave) Address register Bit 0
.equ    TWA1    = 2    ; TWI (Slave) Address register Bit 1
.equ    TWA2    = 3    ; TWI (Slave) Address register Bit 2
.equ    TWA3    = 4    ; TWI (Slave) Address register Bit 3
.equ    TWA4    = 5    ; TWI (Slave) Address register Bit 4
.equ    TWA5    = 6    ; TWI (Slave) Address register Bit 5
.equ    TWA6    = 7    ; TWI (Slave) Address register Bit 6

; ***** WATCHDOG *********************
; WDTCR - Watchdog Timer Control Register
.equ    WDTCSR    = WDTCR    ; For compatibility
.equ    WDP0    = 0    ; Watch Dog Timer Prescaler bit 0
.equ    WDP1    = 1    ; Watch Dog Timer Prescaler bit 1
.equ    WDP2    = 2    ; Watch Dog Timer Prescaler bit 2
.equ    WDE    = 3    ; Watch Dog Enable
.equ    WDCE    = 4    ; Watchdog Change Enable
.equ    WDTOE    = WDCE    ; For compatibility

; ***** PORTB ************************
; PORTB - Port B Data Register
.equ    PORTB0    = 0    ; Port B Data Register bit 0
.equ    PB0    = 0    ; For compatibility
.equ    PORTB1    = 1    ; Port B Data Register bit 1
.equ    PB1    = 1    ; For compatibility
.equ    PORTB2    = 2    ; Port B Data Register bit 2
.equ    PB2    = 2    ; For compatibility
.equ    PORTB3    = 3    ; Port B Data Register bit 3
.equ    PB3    = 3    ; For compatibility
.equ    PORTB4    = 4    ; Port B Data Register bit 4
.equ    PB4    = 4    ; For compatibility
.equ    PORTB5    = 5    ; Port B Data Register bit 5
.equ    PB5    = 5    ; For compatibility
.equ    PORTB6    = 6    ; Port B Data Register bit 6
.equ    PB6    = 6    ; For compatibility
.equ    PORTB7    = 7    ; Port B Data Register bit 7
.equ    PB7    = 7    ; For compatibility

; DDRB - Port B Data Direction Register
.equ    DDB0    = 0    ; Port B Data Direction Register bit 0
.equ    DDB1    = 1    ; Port B Data Direction Register bit 1
.equ    DDB2    = 2    ; Port B Data Direction Register bit 2
.equ    DDB3    = 3    ; Port B Data Direction Register bit 3
.equ    DDB4    = 4    ; Port B Data Direction Register bit 4
.equ    DDB5    = 5    ; Port B Data Direction Register bit 5
.equ    DDB6    = 6    ; Port B Data Direction Register bit 6
.equ    DDB7    = 7    ; Port B Data Direction Register bit 7

; PINB - Port B Input Pins
.equ    PINB0    = 0    ; Port B Input Pins bit 0
.equ    PINB1    = 1    ; Port B Input Pins bit 1
.equ    PINB2    = 2    ; Port B Input Pins bit 2
.equ    PINB3    = 3    ; Port B Input Pins bit 3
.equ    PINB4    = 4    ; Port B Input Pins bit 4
.equ    PINB5    = 5    ; Port B Input Pins bit 5
.equ    PINB6    = 6    ; Port B Input Pins bit 6
.equ    PINB7    = 7    ; Port B Input Pins bit 7

; ***** PORTC ************************
; PORTC - Port C Data Register
.equ    PORTC0    = 0    ; Port C Data Register bit 0
.equ    PC0    = 0    ; For compatibility
.equ    PORTC1    = 1    ; Port C Data Register bit 1
.equ    PC1    = 1    ; For compatibility
.equ    PORTC2    = 2    ; Port C Data Register bit 2
.equ    PC2    = 2    ; For compatibility
.equ    PORTC3    = 3    ; Port C Data Register bit 3
.equ    PC3    = 3    ; For compatibility
.equ    PORTC4    = 4    ; Port C Data Register bit 4
.equ    PC4    = 4    ; For compatibility
.equ    PORTC5    = 5    ; Port C Data Register bit 5
.equ    PC5    = 5    ; For compatibility
.equ    PORTC6    = 6    ; Port C Data Register bit 6
.equ    PC6    = 6    ; For compatibility

; DDRC - Port C Data Direction Register
.equ    DDC0    = 0    ; Port C Data Direction Register bit 0
.equ    DDC1    = 1    ; Port C Data Direction Register bit 1
.equ    DDC2    = 2    ; Port C Data Direction Register bit 2
.equ    DDC3    = 3    ; Port C Data Direction Register bit 3
.equ    DDC4    = 4    ; Port C Data Direction Register bit 4
.equ    DDC5    = 5    ; Port C Data Direction Register bit 5
.equ    DDC6    = 6    ; Port C Data Direction Register bit 6

; PINC - Port C Input Pins
.equ    PINC0    = 0    ; Port C Input Pins bit 0
.equ    PINC1    = 1    ; Port C Input Pins bit 1
.equ    PINC2    = 2    ; Port C Input Pins bit 2
.equ    PINC3    = 3    ; Port C Input Pins bit 3
.equ    PINC4    = 4    ; Port C Input Pins bit 4
.equ    PINC5    = 5    ; Port C Input Pins bit 5
.equ    PINC6    = 6    ; Port C Input Pins bit 6

; ***** PORTD ************************
; PORTD - Port D Data Register
.equ    PORTD0    = 0    ; Port D Data Register bit 0
.equ    PD0    = 0    ; For compatibility
.equ    PORTD1    = 1    ; Port D Data Register bit 1
.equ    PD1    = 1    ; For compatibility
.equ    PORTD2    = 2    ; Port D Data Register bit 2
.equ    PD2    = 2    ; For compatibility
.equ    PORTD3    = 3    ; Port D Data Register bit 3
.equ    PD3    = 3    ; For compatibility
.equ    PORTD4    = 4    ; Port D Data Register bit 4
.equ    PD4    = 4    ; For compatibility
.equ    PORTD5    = 5    ; Port D Data Register bit 5
.equ    PD5    = 5    ; For compatibility
.equ    PORTD6    = 6    ; Port D Data Register bit 6
.equ    PD6    = 6    ; For compatibility
.equ    PORTD7    = 7    ; Port D Data Register bit 7
.equ    PD7    = 7    ; For compatibility

; DDRD - Port D Data Direction Register
.equ    DDD0    = 0    ; Port D Data Direction Register bit 0
.equ    DDD1    = 1    ; Port D Data Direction Register bit 1
.equ    DDD2    = 2    ; Port D Data Direction Register bit 2
.equ    DDD3    = 3    ; Port D Data Direction Register bit 3
.equ    DDD4    = 4    ; Port D Data Direction Register bit 4
.equ    DDD5    = 5    ; Port D Data Direction Register bit 5
.equ    DDD6    = 6    ; Port D Data Direction Register bit 6
.equ    DDD7    = 7    ; Port D Data Direction Register bit 7

; PIND - Port D Input Pins
.equ    PIND0    = 0    ; Port D Input Pins bit 0
.equ    PIND1    = 1    ; Port D Input Pins bit 1
.equ    PIND2    = 2    ; Port D Input Pins bit 2
.equ    PIND3    = 3    ; Port D Input Pins bit 3
.equ    PIND4    = 4    ; Port D Input Pins bit 4
.equ    PIND5    = 5    ; Port D Input Pins bit 5
.equ    PIND6    = 6    ; Port D Input Pins bit 6
.equ    PIND7    = 7    ; Port D Input Pins bit 7

; ***** EEPROM ***********************
; EEDR - EEPROM Data Register
.equ    EEDR0    = 0    ; EEPROM Data Register bit 0
.equ    EEDR1    = 1    ; EEPROM Data Register bit 1
.equ    EEDR2    = 2    ; EEPROM Data Register bit 2
.equ    EEDR3    = 3    ; EEPROM Data Register bit 3
.equ    EEDR4    = 4    ; EEPROM Data Register bit 4
.equ    EEDR5    = 5    ; EEPROM Data Register bit 5
.equ    EEDR6    = 6    ; EEPROM Data Register bit 6
.equ    EEDR7    = 7    ; EEPROM Data Register bit 7

; EECR - EEPROM Control Register
.equ    EERE    = 0    ; EEPROM Read Enable
.equ    EEWE    = 1    ; EEPROM Write Enable
.equ    EEMWE    = 2    ; EEPROM Master Write Enable
.equ    EEWEE    = EEMWE    ; For compatibility
.equ    EERIE    = 3    ; EEPROM Ready Interrupt Enable

; ***** CPU **************************
; SREG - Status Register
.equ    SREG_C    = 0    ; Carry Flag
.equ    SREG_Z    = 1    ; Zero Flag
.equ    SREG_N    = 2    ; Negative Flag
.equ    SREG_V    = 3    ; Two's Complement Overflow Flag
.equ    SREG_S    = 4    ; Sign Bit
.equ    SREG_H    = 5    ; Half Carry Flag
.equ    SREG_T    = 6    ; Bit Copy Storage
.equ    SREG_I    = 7    ; Global Interrupt Enable

; MCUCR - MCU Control Register
;.equ    ISC00    = 0    ; Interrupt Sense Control 0 Bit 0
;.equ    ISC01    = 1    ; Interrupt Sense Control 0 Bit 1
;.equ    ISC10    = 2    ; Interrupt Sense Control 1 Bit 0
;.equ    ISC11    = 3    ; Interrupt Sense Control 1 Bit 1
.equ    SM0    = 4    ; Sleep Mode Select
.equ    SM1    = 5    ; Sleep Mode Select
.equ    SM2    = 6    ; Sleep Mode Select
.equ    SE    = 7    ; Sleep Enable

; MCUCSR - MCU Control And Status Register
.equ    MCUSR    = MCUCSR    ; For compatibility
.equ    PORF    = 0    ; Power-on reset flag
.equ    EXTRF    = 1    ; External Reset Flag
.equ    BORF    = 2    ; Brown-out Reset Flag
.equ    WDRF    = 3    ; Watchdog Reset Flag

; OSCCAL - Oscillator Calibration Value
.equ    CAL0    = 0    ; Oscillator Calibration Value Bit0
.equ    CAL1    = 1    ; Oscillator Calibration Value Bit1
.equ    CAL2    = 2    ; Oscillator Calibration Value Bit2
.equ    CAL3    = 3    ; Oscillator Calibration Value Bit3
.equ    CAL4    = 4    ; Oscillator Calibration Value Bit4
.equ    CAL5    = 5    ; Oscillator Calibration Value Bit5
.equ    CAL6    = 6    ; Oscillator Calibration Value Bit6
.equ    CAL7    = 7    ; Oscillator Calibration Value Bit7

; SPMCR - Store Program Memory Control Register
.equ    SPMEN    = 0    ; Store Program Memory Enable
.equ    PGERS    = 1    ; Page Erase
.equ    PGWRT    = 2    ; Page Write
.equ    BLBSET    = 3    ; Boot Lock Bit Set
.equ    RWWSRE    = 4    ; Read-While-Write Section Read Enable
.equ    RWWSB    = 6    ; Read-While-Write Section Busy
.equ    SPMIE    = 7    ; SPM Interrupt Enable

; SFIOR - Special Function IO Register
.equ    PSR10    = 0    ; Prescaler Reset Timer/Counter1 and Timer/Counter0
.equ    PUD    = 2    ; Pull-up Disable
.equ    ADHSM    = 4    ; ADC High Speed Mode

; ***** AD_CONVERTER *****************
; ADMUX - The ADC multiplexer Selection Register
.equ    MUX0    = 0    ; Analog Channel and Gain Selection Bits
.equ    MUX1    = 1    ; Analog Channel and Gain Selection Bits
.equ    MUX2    = 2    ; Analog Channel and Gain Selection Bits
.equ    MUX3    = 3    ; Analog Channel and Gain Selection Bits
.equ    ADLAR    = 5    ; Left Adjust Result
.equ    REFS0    = 6    ; Reference Selection Bit 0
.equ    REFS1    = 7    ; Reference Selection Bit 1

; ADCSRA - The ADC Control and Status register
.equ    ADCSR    = ADCSRA    ; For compatibility
.equ    ADPS0    = 0    ; ADC  Prescaler Select Bits
.equ    ADPS1    = 1    ; ADC  Prescaler Select Bits
.equ    ADPS2    = 2    ; ADC  Prescaler Select Bits
.equ    ADIE    = 3    ; ADC Interrupt Enable
.equ    ADIF    = 4    ; ADC Interrupt Flag
.equ    ADFR    = 5    ; ADC  Free Running Select
.equ    ADSC    = 6    ; ADC Start Conversion
.equ    ADEN    = 7    ; ADC Enable

; ***** LOCKSBITS ********************************************************
.equ    LB1    = 0    ; Lock bit
.equ    LB2    = 1    ; Lock bit
.equ    BLB01    = 2    ; Boot Lock bit
.equ    BLB02    = 3    ; Boot Lock bit
.equ    BLB11    = 4    ; Boot lock bit
.equ    BLB12    = 5    ; Boot lock bit

; ***** FUSES ************************************************************
; LOW fuse bits
.equ    CKSEL0    = 0    ; Select Clock Source
.equ    CKSEL1    = 1    ; Select Clock Source
.equ    CKSEL2    = 2    ; Select Clock Source
.equ    CKSEL3    = 3    ; Select Clock Source
.equ    SUT0    = 4    ; Select start-up time
.equ    SUT1    = 5    ; Select start-up time
.equ    BODEN    = 6    ; Brown out detector enable
.equ    BODLEVEL    = 7    ; Brown out detector trigger level

; HIGH fuse bits
.equ    BOOTRST    = 0    ; Select Reset Vector
.equ    BOOTSZ0    = 1    ; Select Boot Size
.equ    BOOTSZ1    = 2    ; Select Boot Size
.equ    EESAVE    = 3    ; EEPROM memory is preserved through chip erase
.equ    CKOPT    = 4    ; Oscillator Options
.equ    SPIEN    = 5    ; Enable Serial programming and Data Downloading
.equ    WTDON    = 6    ; Enable watchdog
.equ    RSTDISBL    = 7    ; Disable reset

; ***** CPU REGISTER DEFINITIONS *****************************************
.def    XH    = r27
.def    XL    = r26
.def    YH    = r29
.def    YL    = r28
.def    ZH    = r31
.def    ZL    = r30

; ***** DATA MEMORY DECLARATIONS *****************************************
.equ    FLASHEND    = 0x0fff    ; Note: Word address
.equ    IOEND    = 0x003f
.equ    SRAM_START    = 0x0060
.equ    SRAM_SIZE    = 1024
.equ    RAMEND    = 0x045f
.equ    XRAMEND    = 0x0000
.equ    E2END    = 0x01ff
.equ    EEPROMEND    = 0x01ff
.equ    EEADRBITS    = 9
#pragma AVRPART MEMORY PROG_FLASH 8192
#pragma AVRPART MEMORY EEPROM 512
#pragma AVRPART MEMORY INT_SRAM SIZE 1024
#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x60

; ***** BOOTLOADER DECLARATIONS ******************************************
.equ    NRWW_START_ADDR    = 0xc00
.equ    NRWW_STOP_ADDR    = 0xfff
.equ    RWW_START_ADDR    = 0x0
.equ    RWW_STOP_ADDR    = 0xbff
.equ    PAGESIZE    = 32
.equ    FIRSTBOOTSTART    = 0xf80
.equ    SECONDBOOTSTART    = 0xf00
.equ    THIRDBOOTSTART    = 0xe00
.equ    FOURTHBOOTSTART    = 0xc00
.equ    SMALLBOOTSTART    = FIRSTBOOTSTART
.equ    LARGEBOOTSTART    = FOURTHBOOTSTART

; ***** INTERRUPT VECTORS ************************************************
.equ    INT0addr    = 0x0001    ; External Interrupt Request 0
.equ    INT1addr    = 0x0002    ; External Interrupt Request 1
.equ    OC2addr    = 0x0003    ; Timer/Counter2 Compare Match
.equ    OVF2addr    = 0x0004    ; Timer/Counter2 Overflow
.equ    ICP1addr    = 0x0005    ; Timer/Counter1 Capture Event
.equ    OC1Aaddr    = 0x0006    ; Timer/Counter1 Compare Match A
.equ    OC1Baddr    = 0x0007    ; Timer/Counter1 Compare Match B
.equ    OVF1addr    = 0x0008    ; Timer/Counter1 Overflow
.equ    OVF0addr    = 0x0009    ; Timer/Counter0 Overflow
.equ    SPIaddr    = 0x000a    ; Serial Transfer Complete
.equ    URXCaddr    = 0x000b    ; USART, Rx Complete
.equ    UDREaddr    = 0x000c    ; USART Data Register Empty
.equ    UTXCaddr    = 0x000d    ; USART, Tx Complete
.equ    ADCCaddr    = 0x000e    ; ADC Conversion Complete
.equ    ERDYaddr    = 0x000f    ; EEPROM Ready
.equ    ACIaddr    = 0x0010    ; Analog Comparator
.equ    TWIaddr    = 0x0011    ; 2-wire Serial Interface
.equ    SPMRaddr    = 0x0012    ; Store Program Memory Ready

.equ    INT_VECTORS_SIZE    = 19    ; size in words

#pragma AVRPART CORE INSTRUCTIONS_NOT_SUPPORTED break

#endif  /* _M8DEF_INC_ */

; ***** END OF FILE ******************************************************
/* Copyright (c) 2002, Marek Michalkiewicz
   All rights reserved.

   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:

   * Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.

   * Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in
     the documentation and/or other materials provided with the
     distribution.

   * Neither the name of the copyright holders nor the names of
     contributors may be used to endorse or promote products derived
     from this software without specific prior written permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  POSSIBILITY OF SUCH DAMAGE. */

/* $Id: iom8.h,v 1.14.2.7 2009/02/11 18:05:30 arcanum Exp $ */

/* avr/iom8.h - definitions for ATmega8 */

#ifndef _AVR_IOM8_H_
#define _AVR_IOM8_H_ 1

/* This file should only be included from <avr/io.h>, never directly. */

#ifndef _AVR_IO_H_
#  error "Include <avr/io.h> instead of this file."
#endif

#ifndef _AVR_IOXXX_H_
#  define _AVR_IOXXX_H_ "iom8.h"
#else
#  error "Attempt to include more than one <avr/ioXXX.h> file."
#endif 

/* I/O registers */

/* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */
#define TWBR    _SFR_IO8(0x00)
#define TWSR    _SFR_IO8(0x01)
#define TWAR    _SFR_IO8(0x02)
#define TWDR    _SFR_IO8(0x03)

/* ADC */
#define ADCW    _SFR_IO16(0x04)
#ifndef __ASSEMBLER__
#define ADC    _SFR_IO16(0x04)
#endif
#define ADCL    _SFR_IO8(0x04)
#define ADCH    _SFR_IO8(0x05)
#define ADCSR    _SFR_IO8(0x06)
#define ADCSRA    _SFR_IO8(0x06)  /* Changed in 2486H-AVR-09/02 */
#define ADMUX    _SFR_IO8(0x07)

/* analog comparator */
#define ACSR    _SFR_IO8(0x08)

/* USART */
#define UBRRL    _SFR_IO8(0x09)
#define UCSRB    _SFR_IO8(0x0A)
#define UCSRA    _SFR_IO8(0x0B)
#define UDR    _SFR_IO8(0x0C)

/* SPI */
#define SPCR    _SFR_IO8(0x0D)
#define SPSR    _SFR_IO8(0x0E)
#define SPDR    _SFR_IO8(0x0F)

/* Port D */
#define PIND    _SFR_IO8(0x10)
#define DDRD    _SFR_IO8(0x11)
#define PORTD    _SFR_IO8(0x12)

/* Port C */
#define PINC    _SFR_IO8(0x13)
#define DDRC    _SFR_IO8(0x14)
#define PORTC    _SFR_IO8(0x15)

/* Port B */
#define PINB    _SFR_IO8(0x16)
#define DDRB    _SFR_IO8(0x17)
#define PORTB    _SFR_IO8(0x18)

/* EEPROM Control Register */
#define EECR    _SFR_IO8(0x1C)

/* EEPROM Data Register */
#define EEDR    _SFR_IO8(0x1D)

/* EEPROM Address Register */
#define EEAR    _SFR_IO16(0x1E)
#define EEARL    _SFR_IO8(0x1E)
#define EEARH    _SFR_IO8(0x1F)

#define UCSRC    _SFR_IO8(0x20)
#define UBRRH    _SFR_IO8(0x20)

#define WDTCR    _SFR_IO8(0x21)
#define ASSR    _SFR_IO8(0x22)

/* Timer 2 */
#define OCR2    _SFR_IO8(0x23)
#define TCNT2    _SFR_IO8(0x24)
#define TCCR2    _SFR_IO8(0x25)

/* Timer 1 */
#define ICR1    _SFR_IO16(0x26)
#define ICR1L    _SFR_IO8(0x26)
#define ICR1H    _SFR_IO8(0x27)
#define OCR1B    _SFR_IO16(0x28)
#define OCR1BL    _SFR_IO8(0x28)
#define OCR1BH    _SFR_IO8(0x29)
#define OCR1A    _SFR_IO16(0x2A)
#define OCR1AL    _SFR_IO8(0x2A)
#define OCR1AH    _SFR_IO8(0x2B)
#define TCNT1    _SFR_IO16(0x2C)
#define TCNT1L    _SFR_IO8(0x2C)
#define TCNT1H    _SFR_IO8(0x2D)
#define TCCR1B    _SFR_IO8(0x2E)
#define TCCR1A    _SFR_IO8(0x2F)

#define SFIOR    _SFR_IO8(0x30)

#define OSCCAL    _SFR_IO8(0x31)

/* Timer 0 */
#define TCNT0    _SFR_IO8(0x32)
#define TCCR0    _SFR_IO8(0x33)

#define MCUCSR    _SFR_IO8(0x34)
#define MCUSR   _SFR_IO8(0x34)  /* Defined as an alias for MCUCSR. */

#define MCUCR    _SFR_IO8(0x35)

#define TWCR    _SFR_IO8(0x36)

#define SPMCR    _SFR_IO8(0x37)

#define TIFR    _SFR_IO8(0x38)
#define TIMSK    _SFR_IO8(0x39)

#define GIFR    _SFR_IO8(0x3A)
#define GIMSK    _SFR_IO8(0x3B)
#define GICR    _SFR_IO8(0x3B)   /* Changed in 2486H-AVR-09/02 */

/* 0x3C reserved (OCR0?) */

/* 0x3D..0x3E SP */

/* 0x3F SREG */

/* Interrupt vectors */

/* External Interrupt Request 0 */
#define INT0_vect            _VECTOR(1)
#define SIG_INTERRUPT0            _VECTOR(1)

/* External Interrupt Request 1 */
#define INT1_vect            _VECTOR(2)
#define SIG_INTERRUPT1            _VECTOR(2)

/* Timer/Counter2 Compare Match */
#define TIMER2_COMP_vect        _VECTOR(3)
#define SIG_OUTPUT_COMPARE2        _VECTOR(3)

/* Timer/Counter2 Overflow */
#define TIMER2_OVF_vect            _VECTOR(4)
#define SIG_OVERFLOW2            _VECTOR(4)

/* Timer/Counter1 Capture Event */
#define TIMER1_CAPT_vect        _VECTOR(5)
#define SIG_INPUT_CAPTURE1        _VECTOR(5)

/* Timer/Counter1 Compare Match A */
#define TIMER1_COMPA_vect        _VECTOR(6)
#define SIG_OUTPUT_COMPARE1A        _VECTOR(6)

/* Timer/Counter1 Compare Match B */
#define TIMER1_COMPB_vect        _VECTOR(7)
#define SIG_OUTPUT_COMPARE1B        _VECTOR(7)

/* Timer/Counter1 Overflow */
#define TIMER1_OVF_vect            _VECTOR(8)
#define SIG_OVERFLOW1            _VECTOR(8)

/* Timer/Counter0 Overflow */
#define TIMER0_OVF_vect            _VECTOR(9)
#define SIG_OVERFLOW0            _VECTOR(9)

/* Serial Transfer Complete */
#define SPI_STC_vect            _VECTOR(10)
#define SIG_SPI                _VECTOR(10)

/* USART, Rx Complete */
#define USART_RXC_vect            _VECTOR(11)
#define SIG_UART_RECV            _VECTOR(11)

/* USART Data Register Empty */
#define USART_UDRE_vect            _VECTOR(12)
#define SIG_UART_DATA            _VECTOR(12)

/* USART, Tx Complete */
#define USART_TXC_vect            _VECTOR(13)
#define SIG_UART_TRANS            _VECTOR(13)

/* ADC Conversion Complete */
#define ADC_vect            _VECTOR(14)
#define SIG_ADC                _VECTOR(14)

/* EEPROM Ready */
#define EE_RDY_vect            _VECTOR(15)
#define SIG_EEPROM_READY        _VECTOR(15)

/* Analog Comparator */
#define ANA_COMP_vect            _VECTOR(16)
#define SIG_COMPARATOR            _VECTOR(16)

/* 2-wire Serial Interface */
#define TWI_vect            _VECTOR(17)
#define SIG_2WIRE_SERIAL        _VECTOR(17)

/* Store Program Memory Ready */
#define SPM_RDY_vect            _VECTOR(18)
#define SIG_SPM_READY            _VECTOR(18)

#define _VECTORS_SIZE 38

/* Bit numbers */

/* GIMSK / GICR */
#define INT1    7
#define INT0    6
#define IVSEL    1
#define IVCE    0

/* GIFR */
#define INTF1    7
#define INTF0    6

/* TIMSK */
#define OCIE2    7
#define TOIE2    6
#define TICIE1    5
#define OCIE1A    4
#define OCIE1B    3
#define TOIE1    2
/* bit 1 reserved (OCIE0?) */
#define TOIE0    0

/* TIFR */
#define OCF2    7
#define TOV2    6
#define ICF1    5
#define OCF1A    4
#define OCF1B    3
#define TOV1    2
/* bit 1 reserved (OCF0?) */
#define TOV0    0

/* SPMCR */
#define SPMIE    7
#define RWWSB    6
/* bit 5 reserved */
#define RWWSRE    4
#define BLBSET    3
#define PGWRT    2
#define PGERS    1
#define SPMEN    0

/* TWCR */
#define TWINT    7
#define TWEA    6
#define TWSTA    5
#define TWSTO    4
#define TWWC    3
#define TWEN    2
/* bit 1 reserved (TWI_TST?) */
#define TWIE    0

/* TWAR */
#define TWA6    7
#define TWA5    6
#define TWA4    5
#define TWA3    4
#define TWA2    3
#define TWA1    2
#define TWA0    1
#define TWGCE    0

/* TWSR */
#define TWS7    7
#define TWS6    6
#define TWS5    5
#define TWS4    4
#define TWS3    3
/* bit 2 reserved */
#define TWPS1    1
#define TWPS0    0

/* MCUCR */
#define SE    7
#define SM2    6
#define SM1    5
#define SM0    4
#define ISC11    3
#define ISC10    2
#define ISC01    1
#define ISC00    0

/* MCUCSR */
/* bits 7-4 reserved */
#define WDRF    3
#define BORF    2
#define EXTRF    1
#define PORF    0

/* 
   The ADHSM bit has been removed from all documentation, 
   as being not needed at all since the comparator has proven 
   to be fast enough even without feeding it more power.
*/

/* SFIOR */
/* bits 7-5 reserved */
#define ACME    3
#define PUD    2
#define PSR2    1
#define PSR10    0

/* TCCR0 */
/* bits 7-3 reserved */
#define CS02    2
#define CS01    1
#define CS00    0

/* TCCR2 */
#define FOC2    7
#define WGM20    6
#define COM21    5
#define COM20    4
#define WGM21    3
#define CS22    2
#define CS21    1
#define CS20    0

/* ASSR */
/* bits 7-4 reserved */
#define AS2    3
#define TCN2UB    2
#define OCR2UB    1
#define TCR2UB    0

/* TCCR1A */
#define COM1A1    7
#define COM1A0    6
#define COM1B1    5
#define COM1B0    4
#define FOC1A    3
#define FOC1B    2
#define WGM11    1
#define WGM10    0

/* TCCR1B */
#define ICNC1    7
#define ICES1    6
/* bit 5 reserved */
#define WGM13    4
#define WGM12    3
#define CS12    2
#define CS11    1
#define CS10    0

/* WDTCR */
/* bits 7-5 reserved */
#define WDCE    4
#define WDE    3
#define WDP2    2
#define WDP1    1
#define WDP0    0

/* UBRRH */
#define URSEL    7

/* UCSRC */
#define URSEL    7
#define UMSEL    6
#define UPM1    5
#define UPM0    4
#define USBS    3
#define UCSZ1    2
#define UCSZ0    1
#define UCPOL    0

/* PORTB */
#define PB7    7
#define PB6    6
#define PB5    5
#define PB4    4
#define PB3    3
#define PB2    2
#define PB1    1
#define PB0    0

/* DDRB */
#define DDB7    7
#define DDB6    6
#define DDB5    5
#define DDB4    4
#define DDB3    3
#define DDB2    2
#define DDB1    1
#define DDB0    0

/* PINB */
#define PINB7    7
#define PINB6    6
#define PINB5    5
#define PINB4    4
#define PINB3    3
#define PINB2    2
#define PINB1    1
#define PINB0    0

/* PORTC */
#define PC6     6
#define PC5     5
#define PC4     4
#define PC3     3
#define PC2     2
#define PC1     1
#define PC0     0

/* DDRC */
#define DDC6    6
#define DDC5    5
#define DDC4    4
#define DDC3    3
#define DDC2    2
#define DDC1    1
#define DDC0    0

/* PINC */
#define PINC6    6
#define PINC5    5
#define PINC4    4
#define PINC3    3
#define PINC2    2
#define PINC1    1
#define PINC0    0

/* PORTD */
#define PD7     7
#define PD6     6
#define PD5     5
#define PD4     4
#define PD3     3
#define PD2     2
#define PD1     1
#define PD0     0

/* DDRD */
#define DDD7    7
#define DDD6    6
#define DDD5    5
#define DDD4    4
#define DDD3    3
#define DDD2    2
#define DDD1    1
#define DDD0    0

/* PIND */
#define PIND7    7
#define PIND6    6
#define PIND5    5
#define PIND4    4
#define PIND3    3
#define PIND2    2
#define PIND1    1
#define PIND0    0

/* SPSR */
#define SPIF    7
#define WCOL    6
#define SPI2X    0

/* SPCR */
#define SPIE    7
#define SPE    6
#define DORD    5
#define MSTR    4
#define CPOL    3
#define CPHA    2
#define SPR1    1
#define SPR0    0

/* UCSRA */
#define RXC    7
#define TXC    6
#define UDRE    5
#define FE    4
#define DOR    3
#define PE    2
#define U2X    1
#define MPCM    0

/* UCSRB */
#define RXCIE    7
#define TXCIE    6
#define UDRIE    5
#define RXEN    4
#define    TXEN    3
#define UCSZ2    2
#define RXB8    1
#define TXB8    0

/* ACSR */
#define ACD    7
#define ACBG    6
#define ACO    5
#define ACI    4
#define ACIE    3
#define ACIC    2
#define ACIS1    1
#define ACIS0    0

/* ADCSR / ADCSRA */
#define ADEN    7
#define ADSC    6
#define ADFR    5
#define ADIF    4
#define ADIE    3
#define ADPS2    2
#define ADPS1    1
#define ADPS0    0

/* ADMUX */
#define REFS1    7
#define REFS0    6
#define ADLAR    5
/* bit 4 reserved */
#define MUX3    3
#define MUX2    2
#define MUX1    1
#define MUX0    0

/* EEPROM Control Register */
#define EERIE   3
#define EEMWE   2
#define EEWE    1
#define EERE    0

/* Constants */
#define SPM_PAGESIZE 64
#define RAMEND         0x45F
#define XRAMEND         RAMEND
#define E2END         0x1FF
#define E2PAGESIZE   4
#define FLASHEND     0x1FFF

/* Fuses */

#define FUSE_MEMORY_SIZE 2

/* Low Fuse Byte */
#define FUSE_CKSEL0      (unsigned char)~_BV(0)
#define FUSE_CKSEL1      (unsigned char)~_BV(1)
#define FUSE_CKSEL2      (unsigned char)~_BV(2)
#define FUSE_CKSEL3      (unsigned char)~_BV(3)
#define FUSE_SUT0        (unsigned char)~_BV(4)
#define FUSE_SUT1        (unsigned char)~_BV(5)
#define FUSE_BODEN       (unsigned char)~_BV(6)
#define FUSE_BODLEVEL    (unsigned char)~_BV(7)
#define LFUSE_DEFAULT (FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1)

/* High Fuse Byte */
#define FUSE_BOOTRST     (unsigned char)~_BV(0)
#define FUSE_BOOTSZ0     (unsigned char)~_BV(1)
#define FUSE_BOOTSZ1     (unsigned char)~_BV(2)
#define FUSE_EESAVE      (unsigned char)~_BV(3)
#define FUSE_CKOPT       (unsigned char)~_BV(4)
#define FUSE_SPIEN       (unsigned char)~_BV(5)
#define FUSE_WDTON       (unsigned char)~_BV(6)
#define FUSE_RSTDISBL    (unsigned char)~_BV(7)
#define HFUSE_DEFAULT (FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0)

/* Lock Bits */
#define __LOCK_BITS_EXIST
#define __BOOT_LOCK_BITS_0_EXIST
#define __BOOT_LOCK_BITS_1_EXIST 

/* Signature */
#define SIGNATURE_0 0x1E
#define SIGNATURE_1 0x93
#define SIGNATURE_2 0x07

#endif /* _AVR_IOM8_H_ */

ATmega16

Assembler [Quellcode] C [Quellcode]
;***** THIS IS A MACHINE GENERATED FILE - DO NOT EDIT ********************
;***** Created: 2009-11-03 14:40 ******* Source: ATmega16.xml ************
;*************************************************************************
;* 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
;* 
;* Number            : AVR000
;* File Name         : "m16def.inc"
;* Title             : Register/Bit Definitions for the ATmega16
;* Date              : 2009-11-03
;* Version           : 2.35
;* Support E-mail    : avr@atmel.com
;* Target MCU        : ATmega16
;* 
;* DESCRIPTION
;* When including this file in the assembly program file, all I/O register 
;* names and I/O register bit names appearing in the data book can be used.
;* In addition, the six registers forming the three data pointers X, Y and 
;* Z have been assigned names XL - ZH. Highest RAM address for Internal 
;* SRAM is also defined 
;* 
;* The Register names are represented by their hexadecimal address.
;* 
;* The Register Bit names are represented by their bit number (0-7).
;* 
;* Please observe the difference in using the bit names with instructions
;* such as "sbr"/"cbr" (set/clear bit in register) and "sbrs"/"sbrc"
;* (skip if bit in register set/cleared). The following example illustrates
;* this:
;* 
;* in    r16,PORTB             ;read PORTB latch
;* sbr   r16,(1<<PB6)+(1<<PB5) ;set PB6 and PB5 (use masks, not bit#)
;* out   PORTB,r16             ;output to PORTB
;* 
;* in    r16,TIFR              ;read the Timer Interrupt Flag Register
;* sbrc  r16,TOV0              ;test the overflow flag (use bit#)
;* rjmp  TOV0_is_set           ;jump if set
;* ...                         ;otherwise do something else
;*************************************************************************

#ifndef _M16DEF_INC_
#define _M16DEF_INC_

#pragma partinc 0

; ***** SPECIFY DEVICE ***************************************************
.device ATmega16
#pragma AVRPART ADMIN PART_NAME ATmega16
.equ    SIGNATURE_000    = 0x1e
.equ    SIGNATURE_001    = 0x94
.equ    SIGNATURE_002    = 0x03

#pragma AVRPART CORE CORE_VERSION V2E

; ***** I/O REGISTER DEFINITIONS *****************************************
; NOTE:
; Definitions marked "MEMORY MAPPED"are extended I/O ports
; and cannot be used with IN/OUT instructions
.equ    SREG    = 0x3f
.equ    SPL    = 0x3d
.equ    SPH    = 0x3e
.equ    OCR0    = 0x3c
.equ    GICR    = 0x3b
.equ    GIFR    = 0x3a
.equ    TIMSK    = 0x39
.equ    TIFR    = 0x38
.equ    SPMCSR    = 0x37
.equ    TWCR    = 0x36
.equ    MCUCR    = 0x35
.equ    MCUCSR    = 0x34
.equ    TCCR0    = 0x33
.equ    TCNT0    = 0x32
.equ    OSCCAL    = 0x31
.equ    OCDR    = 0x31
.equ    SFIOR    = 0x30
.equ    TCCR1A    = 0x2f
.equ    TCCR1B    = 0x2e
.equ    TCNT1L    = 0x2c
.equ    TCNT1H    = 0x2d
.equ    OCR1AL    = 0x2a
.equ    OCR1AH    = 0x2b
.equ    OCR1BL    = 0x28
.equ    OCR1BH    = 0x29
.equ    ICR1L    = 0x26
.equ    ICR1H    = 0x27
.equ    TCCR2    = 0x25
.equ    TCNT2    = 0x24
.equ    OCR2    = 0x23
.equ    ASSR    = 0x22
.equ    WDTCR    = 0x21
.equ    UBRRH    = 0x20
.equ    UCSRC    = 0x20
.equ    EEARL    = 0x1e
.equ    EEARH    = 0x1f
.equ    EEDR    = 0x1d
.equ    EECR    = 0x1c
.equ    PORTA    = 0x1b
.equ    DDRA    = 0x1a
.equ    PINA    = 0x19
.equ    PORTB    = 0x18
.equ    DDRB    = 0x17
.equ    PINB    = 0x16
.equ    PORTC    = 0x15
.equ    DDRC    = 0x14
.equ    PINC    = 0x13
.equ    PORTD    = 0x12
.equ    DDRD    = 0x11
.equ    PIND    = 0x10
.equ    SPDR    = 0x0f
.equ    SPSR    = 0x0e
.equ    SPCR    = 0x0d
.equ    UDR    = 0x0c
.equ    UCSRA    = 0x0b
.equ    UCSRB    = 0x0a
.equ    UBRRL    = 0x09
.equ    ACSR    = 0x08
.equ    ADMUX    = 0x07
.equ    ADCSRA    = 0x06
.equ    ADCH    = 0x05
.equ    ADCL    = 0x04
.equ    TWDR    = 0x03
.equ    TWAR    = 0x02
.equ    TWSR    = 0x01
.equ    TWBR    = 0x00

; ***** BIT DEFINITIONS **************************************************

; ***** TIMER_COUNTER_0 **************
; TCCR0 - Timer/Counter Control Register
.equ    CS00    = 0    ; Clock Select 1
.equ    CS01    = 1    ; Clock Select 1
.equ    CS02    = 2    ; Clock Select 2
.equ    WGM01    = 3    ; Waveform Generation Mode 1
.equ    CTC0    = WGM01    ; For compatibility
.equ    COM00    = 4    ; Compare match Output Mode 0
.equ    COM01    = 5    ; Compare Match Output Mode 1
.equ    WGM00    = 6    ; Waveform Generation Mode 0
.equ    PWM0    = WGM00    ; For compatibility
.equ    FOC0    = 7    ; Force Output Compare

; TCNT0 - Timer/Counter Register
.equ    TCNT0_0    = 0    ; 
.equ    TCNT0_1    = 1    ; 
.equ    TCNT0_2    = 2    ; 
.equ    TCNT0_3    = 3    ; 
.equ    TCNT0_4    = 4    ; 
.equ    TCNT0_5    = 5    ; 
.equ    TCNT0_6    = 6    ; 
.equ    TCNT0_7    = 7    ; 

; OCR0 - Output Compare Register
.equ    OCR0_0    = 0    ; 
.equ    OCR0_1    = 1    ; 
.equ    OCR0_2    = 2    ; 
.equ    OCR0_3    = 3    ; 
.equ    OCR0_4    = 4    ; 
.equ    OCR0_5    = 5    ; 
.equ    OCR0_6    = 6    ; 
.equ    OCR0_7    = 7    ; 

; TIMSK - Timer/Counter Interrupt Mask Register
.equ    TOIE0    = 0    ; Timer/Counter0 Overflow Interrupt Enable
.equ    OCIE0    = 1    ; Timer/Counter0 Output Compare Match Interrupt register

; TIFR - Timer/Counter Interrupt Flag register
.equ    TOV0    = 0    ; Timer/Counter0 Overflow Flag
.equ    OCF0    = 1    ; Output Compare Flag 0

; SFIOR - Special Function IO Register
.equ    PSR10    = 0    ; Prescaler Reset Timer/Counter1 and Timer/Counter0

; ***** TIMER_COUNTER_1 **************
; TIMSK - Timer/Counter Interrupt Mask Register
.equ    TOIE1    = 2    ; Timer/Counter1 Overflow Interrupt Enable
.equ    OCIE1B    = 3    ; Timer/Counter1 Output CompareB Match Interrupt Enable
.equ    OCIE1A    = 4    ; Timer/Counter1 Output CompareA Match Interrupt Enable
.equ    TICIE1    = 5    ; Timer/Counter1 Input Capture Interrupt Enable

; TIFR - Timer/Counter Interrupt Flag register
.equ    TOV1    = 2    ; Timer/Counter1 Overflow Flag
.equ    OCF1B    = 3    ; Output Compare Flag 1B
.equ    OCF1A    = 4    ; Output Compare Flag 1A
.equ    ICF1    = 5    ; Input Capture Flag 1

; TCCR1A - Timer/Counter1 Control Register A
.equ    WGM10    = 0    ; Waveform Generation Mode
.equ    PWM10    = WGM10    ; For compatibility
.equ    WGM11    = 1    ; Waveform Generation Mode
.equ    PWM11    = WGM11    ; For compatibility
.equ    FOC1B    = 2    ; Force Output Compare 1B
.equ    FOC1A    = 3    ; Force Output Compare 1A
.equ    COM1B0    = 4    ; Compare Output Mode 1B, bit 0
.equ    COM1B1    = 5    ; Compare Output Mode 1B, bit 1
.equ    COM1A0    = 6    ; Compare Ouput Mode 1A, bit 0
.equ    COM1A1    = 7    ; Compare Output Mode 1A, bit 1

; TCCR1B - Timer/Counter1 Control Register B
.equ    CS10    = 0    ; Prescaler source of Timer/Counter 1
.equ    CS11    = 1    ; Prescaler source of Timer/Counter 1
.equ    CS12    = 2    ; Prescaler source of Timer/Counter 1
.equ    WGM12    = 3    ; Waveform Generation Mode
.equ    CTC10    = WGM12    ; For compatibility
.equ    CTC1    = WGM12    ; For compatibility
.equ    WGM13    = 4    ; Waveform Generation Mode
.equ    CTC11    = WGM13    ; For compatibility
.equ    ICES1    = 6    ; Input Capture 1 Edge Select
.equ    ICNC1    = 7    ; Input Capture 1 Noise Canceler

; ***** EXTERNAL_INTERRUPT ***********
; GICR - General Interrupt Control Register
.equ    GIMSK    = GICR    ; For compatibility
.equ    IVCE    = 0    ; Interrupt Vector Change Enable
.equ    IVSEL    = 1    ; Interrupt Vector Select
.equ    INT2    = 5    ; External Interrupt Request 2 Enable
.equ    INT0    = 6    ; External Interrupt Request 0 Enable
.equ    INT1    = 7    ; External Interrupt Request 1 Enable

; GIFR - General Interrupt Flag Register
.equ    INTF2    = 5    ; External Interrupt Flag 2
.equ    INTF0    = 6    ; External Interrupt Flag 0
.equ    INTF1    = 7    ; External Interrupt Flag 1

; MCUCR - General Interrupt Control Register
.equ    ISC00    = 0    ; Interrupt Sense Control 0 Bit 0
.equ    ISC01    = 1    ; Interrupt Sense Control 0 Bit 1
.equ    ISC10    = 2    ; Interrupt Sense Control 1 Bit 0
.equ    ISC11    = 3    ; Interrupt Sense Control 1 Bit 1

; MCUCSR - MCU Control And Status Register
.equ    ISC2    = 6    ; Interrupt Sense Control 2

; ***** EEPROM ***********************
; EEDR - EEPROM Data Register
.equ    EEDR0    = 0    ; EEPROM Data Register bit 0
.equ    EEDR1    = 1    ; EEPROM Data Register bit 1
.equ    EEDR2    = 2    ; EEPROM Data Register bit 2
.equ    EEDR3    = 3    ; EEPROM Data Register bit 3
.equ    EEDR4    = 4    ; EEPROM Data Register bit 4
.equ    EEDR5    = 5    ; EEPROM Data Register bit 5
.equ    EEDR6    = 6    ; EEPROM Data Register bit 6
.equ    EEDR7    = 7    ; EEPROM Data Register bit 7

; EECR - EEPROM Control Register
.equ    EERE    = 0    ; EEPROM Read Enable
.equ    EEWE    = 1    ; EEPROM Write Enable
.equ    EEMWE    = 2    ; EEPROM Master Write Enable
.equ    EEWEE    = EEMWE    ; For compatibility
.equ    EERIE    = 3    ; EEPROM Ready Interrupt Enable

; ***** CPU **************************
; SREG - Status Register
.equ    SREG_C    = 0    ; Carry Flag
.equ    SREG_Z    = 1    ; Zero Flag
.equ    SREG_N    = 2    ; Negative Flag
.equ    SREG_V    = 3    ; Two's Complement Overflow Flag
.equ    SREG_S    = 4    ; Sign Bit
.equ    SREG_H    = 5    ; Half Carry Flag
.equ    SREG_T    = 6    ; Bit Copy Storage
.equ    SREG_I    = 7    ; Global Interrupt Enable

; MCUCR - MCU Control Register
;.equ    ISC00    = 0    ; Interrupt Sense Control 0 Bit 0
;.equ    ISC01    = 1    ; Interrupt Sense Control 0 Bit 1
;.equ    ISC10    = 2    ; Interrupt Sense Control 1 Bit 0
;.equ    ISC11    = 3    ; Interrupt Sense Control 1 Bit 1
.equ    SM0    = 4    ; Sleep Mode Select
.equ    SM1    = 5    ; Sleep Mode Select
.equ    SE    = 6    ; Sleep Enable
.equ    SM2    = 7    ; Sleep Mode Select

; MCUCSR - MCU Control And Status Register
.equ    MCUSR    = MCUCSR    ; For compatibility
.equ    PORF    = 0    ; Power-on reset flag
.equ    EXTRF    = 1    ; External Reset Flag
.equ    EXTREF    = EXTRF    ; For compatibility
.equ    BORF    = 2    ; Brown-out Reset Flag
.equ    WDRF    = 3    ; Watchdog Reset Flag
.equ    JTRF    = 4    ; JTAG Reset Flag
.equ    JTD    = 7    ; JTAG Interface Disable

; OSCCAL - Oscillator Calibration Value
.equ    CAL0    = 0    ; Oscillator Calibration Value Bit0
.equ    CAL1    = 1    ; Oscillator Calibration Value Bit1
.equ    CAL2    = 2    ; Oscillator Calibration Value Bit2
.equ    CAL3    = 3    ; Oscillator Calibration Value Bit3
.equ    CAL4    = 4    ; Oscillator Calibration Value Bit4
.equ    CAL5    = 5    ; Oscillator Calibration Value Bit5
.equ    CAL6    = 6    ; Oscillator Calibration Value Bit6
.equ    CAL7    = 7    ; Oscillator Calibration Value Bit7

; SFIOR - Special function I/O register
;.equ    PSR10    = 0    ; Prescaler reset
.equ    PSR2    = 1    ; Prescaler reset
.equ    PUD    = 2    ; Pull-up Disable

; ***** TIMER_COUNTER_2 **************
; TIMSK - Timer/Counter Interrupt Mask register
.equ    TOIE2    = 6    ; Timer/Counter2 Overflow Interrupt Enable
.equ    OCIE2    = 7    ; Timer/Counter2 Output Compare Match Interrupt Enable

; TIFR - Timer/Counter Interrupt Flag Register
.equ    TOV2    = 6    ; Timer/Counter2 Overflow Flag
.equ    OCF2    = 7    ; Output Compare Flag 2

; TCCR2 - Timer/Counter2 Control Register
.equ    CS20    = 0    ; Clock Select bit 0
.equ    CS21    = 1    ; Clock Select bit 1
.equ    CS22    = 2    ; Clock Select bit 2
.equ    WGM21    = 3    ; Waveform Generation Mode
.equ    CTC2    = WGM21    ; For compatibility
.equ    COM20    = 4    ; Compare Output Mode bit 0
.equ    COM21    = 5    ; Compare Output Mode bit 1
.equ    WGM20    = 6    ; Waveform Genration Mode
.equ    PWM2    = WGM20    ; For compatibility
.equ    FOC2    = 7    ; Force Output Compare

; TCNT2 - Timer/Counter2
.equ    TCNT2_0    = 0    ; Timer/Counter 2 bit 0
.equ    TCNT2_1    = 1    ; Timer/Counter 2 bit 1
.equ    TCNT2_2    = 2    ; Timer/Counter 2 bit 2
.equ    TCNT2_3    = 3    ; Timer/Counter 2 bit 3
.equ    TCNT2_4    = 4    ; Timer/Counter 2 bit 4
.equ    TCNT2_5    = 5    ; Timer/Counter 2 bit 5
.equ    TCNT2_6    = 6    ; Timer/Counter 2 bit 6
.equ    TCNT2_7    = 7    ; Timer/Counter 2 bit 7

; OCR2 - Timer/Counter2 Output Compare Register
.equ    OCR2_0    = 0    ; Timer/Counter2 Output Compare Register Bit 0
.equ    OCR2_1    = 1    ; Timer/Counter2 Output Compare Register Bit 1
.equ    OCR2_2    = 2    ; Timer/Counter2 Output Compare Register Bit 2
.equ    OCR2_3    = 3    ; Timer/Counter2 Output Compare Register Bit 3
.equ    OCR2_4    = 4    ; Timer/Counter2 Output Compare Register Bit 4
.equ    OCR2_5    = 5    ; Timer/Counter2 Output Compare Register Bit 5
.equ    OCR2_6    = 6    ; Timer/Counter2 Output Compare Register Bit 6
.equ    OCR2_7    = 7    ; Timer/Counter2 Output Compare Register Bit 7

; ASSR - Asynchronous Status Register
.equ    TCR2UB    = 0    ; Timer/counter Control Register2 Update Busy
.equ    OCR2UB    = 1    ; Output Compare Register2 Update Busy
.equ    TCN2UB    = 2    ; Timer/Counter2 Update Busy
.equ    AS2    = 3    ; Asynchronous Timer/counter2

; SFIOR - Special Function IO Register
;.equ    PSR2    = 1    ; Prescaler Reset Timer/Counter2

; ***** SPI **************************
; SPDR - SPI Data Register
.equ    SPDR0    = 0    ; SPI Data Register bit 0
.equ    SPDR1    = 1    ; SPI Data Register bit 1
.equ    SPDR2    = 2    ; SPI Data Register bit 2
.equ    SPDR3    = 3    ; SPI Data Register bit 3
.equ    SPDR4    = 4    ; SPI Data Register bit 4
.equ    SPDR5    = 5    ; SPI Data Register bit 5
.equ    SPDR6    = 6    ; SPI Data Register bit 6
.equ    SPDR7    = 7    ; SPI Data Register bit 7

; SPSR - SPI Status Register
.equ    SPI2X    = 0    ; Double SPI Speed Bit
.equ    WCOL    = 6    ; Write Collision Flag
.equ    SPIF    = 7    ; SPI Interrupt Flag

; SPCR - SPI Control Register
.equ    SPR0    = 0    ; SPI Clock Rate Select 0
.equ    SPR1    = 1    ; SPI Clock Rate Select 1
.equ    CPHA    = 2    ; Clock Phase
.equ    CPOL    = 3    ; Clock polarity
.equ    MSTR    = 4    ; Master/Slave Select
.equ    DORD    = 5    ; Data Order
.equ    SPE    = 6    ; SPI Enable
.equ    SPIE    = 7    ; SPI Interrupt Enable

; ***** USART ************************
; UDR - USART I/O Data Register
.equ    UDR0    = 0    ; USART I/O Data Register bit 0
.equ    UDR1    = 1    ; USART I/O Data Register bit 1
.equ    UDR2    = 2    ; USART I/O Data Register bit 2
.equ    UDR3    = 3    ; USART I/O Data Register bit 3
.equ    UDR4    = 4    ; USART I/O Data Register bit 4
.equ    UDR5    = 5    ; USART I/O Data Register bit 5
.equ    UDR6    = 6    ; USART I/O Data Register bit 6
.equ    UDR7    = 7    ; USART I/O Data Register bit 7

; UCSRA - USART Control and Status Register A
.equ    USR    = UCSRA    ; For compatibility
.equ    MPCM    = 0    ; Multi-processor Communication Mode
.equ    U2X    = 1    ; Double the USART transmission speed
.equ    UPE    = 2    ; Parity Error
.equ    PE    = UPE    ; For compatibility
.equ    DOR    = 3    ; Data overRun
.equ    FE    = 4    ; Framing Error
.equ    UDRE    = 5    ; USART Data Register Empty
.equ    TXC    = 6    ; USART Transmitt Complete
.equ    RXC    = 7    ; USART Receive Complete

; UCSRB - USART Control and Status Register B
.equ    UCR    = UCSRB    ; For compatibility
.equ    TXB8    = 0    ; Transmit Data Bit 8
.equ    RXB8    = 1    ; Receive Data Bit 8
.equ    UCSZ2    = 2    ; Character Size
.equ    CHR9    = UCSZ2    ; For compatibility
.equ    TXEN    = 3    ; Transmitter Enable
.equ    RXEN    = 4    ; Receiver Enable
.equ    UDRIE    = 5    ; USART Data register Empty Interrupt Enable
.equ    TXCIE    = 6    ; TX Complete Interrupt Enable
.equ    RXCIE    = 7    ; RX Complete Interrupt Enable

; UCSRC - USART Control and Status Register C
.equ    UCPOL    = 0    ; Clock Polarity
.equ    UCSZ0    = 1    ; Character Size
.equ    UCSZ1    = 2    ; Character Size
.equ    USBS    = 3    ; Stop Bit Select
.equ    UPM0    = 4    ; Parity Mode Bit 0
.equ    UPM1    = 5    ; Parity Mode Bit 1
.equ    UMSEL    = 6    ; USART Mode Select
.equ    URSEL    = 7    ; Register Select

.equ    UBRRHI    = UBRRH    ; For compatibility

; ***** TWI **************************
; TWBR - TWI Bit Rate register
.equ    I2BR    = TWBR    ; For compatibility
.equ    TWBR0    = 0    ; 
.equ    TWBR1    = 1    ; 
.equ    TWBR2    = 2    ; 
.equ    TWBR3    = 3    ; 
.equ    TWBR4    = 4    ; 
.equ    TWBR5    = 5    ; 
.equ    TWBR6    = 6    ; 
.equ    TWBR7    = 7    ; 

; TWCR - TWI Control Register
.equ    I2CR    = TWCR    ; For compatibility
.equ    TWIE    = 0    ; TWI Interrupt Enable
.equ    I2IE    = TWIE    ; For compatibility
.equ    TWEN    = 2    ; TWI Enable Bit
.equ    I2EN    = TWEN    ; For compatibility
.equ    ENI2C    = TWEN    ; For compatibility
.equ    TWWC    = 3    ; TWI Write Collition Flag
.equ    I2WC    = TWWC    ; For compatibility
.equ    TWSTO    = 4    ; TWI Stop Condition Bit
.equ    I2STO    = TWSTO    ; For compatibility
.equ    TWSTA    = 5    ; TWI Start Condition Bit
.equ    I2STA    = TWSTA    ; For compatibility
.equ    TWEA    = 6    ; TWI Enable Acknowledge Bit
.equ    I2EA    = TWEA    ; For compatibility
.equ    TWINT    = 7    ; TWI Interrupt Flag
.equ    I2INT    = TWINT    ; For compatibility

; TWSR - TWI Status Register
.equ    I2SR    = TWSR    ; For compatibility
.equ    TWPS0    = 0    ; TWI Prescaler
.equ    TWS0    = TWPS0    ; For compatibility
.equ    I2GCE    = TWPS0    ; For compatibility
.equ    TWPS1    = 1    ; TWI Prescaler
.equ    TWS1    = TWPS1    ; For compatibility
.equ    TWS3    = 3    ; TWI Status
.equ    I2S3    = TWS3    ; For compatibility
.equ    TWS4    = 4    ; TWI Status
.equ    I2S4    = TWS4    ; For compatibility
.equ    TWS5    = 5    ; TWI Status
.equ    I2S5    = TWS5    ; For compatibility
.equ    TWS6    = 6    ; TWI Status
.equ    I2S6    = TWS6    ; For compatibility
.equ    TWS7    = 7    ; TWI Status
.equ    I2S7    = TWS7    ; For compatibility

; TWDR - TWI Data register
.equ    I2DR    = TWDR    ; For compatibility
.equ    TWD0    = 0    ; TWI Data Register Bit 0
.equ    TWD1    = 1    ; TWI Data Register Bit 1
.equ    TWD2    = 2    ; TWI Data Register Bit 2
.equ    TWD3    = 3    ; TWI Data Register Bit 3
.equ    TWD4    = 4    ; TWI Data Register Bit 4
.equ    TWD5    = 5    ; TWI Data Register Bit 5
.equ    TWD6    = 6    ; TWI Data Register Bit 6
.equ    TWD7    = 7    ; TWI Data Register Bit 7

; TWAR - TWI (Slave) Address register
.equ    I2AR    = TWAR    ; For compatibility
.equ    TWGCE    = 0    ; TWI General Call Recognition Enable Bit
.equ    TWA0    = 1    ; TWI (Slave) Address register Bit 0
.equ    TWA1    = 2    ; TWI (Slave) Address register Bit 1
.equ    TWA2    = 3    ; TWI (Slave) Address register Bit 2
.equ    TWA3    = 4    ; TWI (Slave) Address register Bit 3
.equ    TWA4    = 5    ; TWI (Slave) Address register Bit 4
.equ    TWA5    = 6    ; TWI (Slave) Address register Bit 5
.equ    TWA6    = 7    ; TWI (Slave) Address register Bit 6

; ***** ANALOG_COMPARATOR ************
; SFIOR - Special Function IO Register
.equ    ACME    = 3    ; Analog Comparator Multiplexer Enable

; ACSR - Analog Comparator Control And Status Register
.equ    ACIS0    = 0    ; Analog Comparator Interrupt Mode Select bit 0
.equ    ACIS1    = 1    ; Analog Comparator Interrupt Mode Select bit 1
.equ    ACIC    = 2    ; Analog Comparator Input Capture Enable
.equ    ACIE    = 3    ; Analog Comparator Interrupt Enable
.equ    ACI    = 4    ; Analog Comparator Interrupt Flag
.equ    ACO    = 5    ; Analog Compare Output
.equ    ACBG    = 6    ; Analog Comparator Bandgap Select
.equ    ACD    = 7    ; Analog Comparator Disable

; ***** AD_CONVERTER *****************
; ADMUX - The ADC multiplexer Selection Register
.equ    MUX0    = 0    ; Analog Channel and Gain Selection Bits
.equ    MUX1    = 1    ; Analog Channel and Gain Selection Bits
.equ    MUX2    = 2    ; Analog Channel and Gain Selection Bits
.equ    MUX3    = 3    ; Analog Channel and Gain Selection Bits
.equ    MUX4    = 4    ; Analog Channel and Gain Selection Bits
.equ    ADLAR    = 5    ; Left Adjust Result
.equ    REFS0    = 6    ; Reference Selection Bit 0
.equ    REFS1    = 7    ; Reference Selection Bit 1

; ADCSRA - The ADC Control and Status register
.equ    ADCSR    = ADCSRA    ; For compatibility
.equ    ADPS0    = 0    ; ADC  Prescaler Select Bits
.equ    ADPS1    = 1    ; ADC  Prescaler Select Bits
.equ    ADPS2    = 2    ; ADC  Prescaler Select Bits
.equ    ADIE    = 3    ; ADC Interrupt Enable
.equ    ADIF    = 4    ; ADC Interrupt Flag
.equ    ADATE    = 5    ; When this bit is written to one,the Timer/Counter2 prescaler
;will be reset.
;The bit will be cleared by hardware after the operation is performed.
;Writing a zero to this bit will have no effect.
;This bit will always be read as zero if Timer/Counter2 is clocked by the internal CPU clock.
;If this bit is written when Timer/Counter2 is operating in asynchronous mode,
;the bit will remain one until the prescaler has been reset.
.equ    ADFR    = ADATE    ; For compatibility
.equ    ADSC    = 6    ; ADC Start Conversion
.equ    ADEN    = 7    ; ADC Enable

; ADCH - ADC Data Register High Byte
.equ    ADCH0    = 0    ; ADC Data Register High Byte Bit 0
.equ    ADCH1    = 1    ; ADC Data Register High Byte Bit 1
.equ    ADCH2    = 2    ; ADC Data Register High Byte Bit 2
.equ    ADCH3    = 3    ; ADC Data Register High Byte Bit 3
.equ    ADCH4    = 4    ; ADC Data Register High Byte Bit 4
.equ    ADCH5    = 5    ; ADC Data Register High Byte Bit 5
.equ    ADCH6    = 6    ; ADC Data Register High Byte Bit 6
.equ    ADCH7    = 7    ; ADC Data Register High Byte Bit 7

; ADCL - ADC Data Register Low Byte
.equ    ADCL0    = 0    ; ADC Data Register Low Byte Bit 0
.equ    ADCL1    = 1    ; ADC Data Register Low Byte Bit 1
.equ    ADCL2    = 2    ; ADC Data Register Low Byte Bit 2
.equ    ADCL3    = 3    ; ADC Data Register Low Byte Bit 3
.equ    ADCL4    = 4    ; ADC Data Register Low Byte Bit 4
.equ    ADCL5    = 5    ; ADC Data Register Low Byte Bit 5
.equ    ADCL6    = 6    ; ADC Data Register Low Byte Bit 6
.equ    ADCL7    = 7    ; ADC Data Register Low Byte Bit 7

; SFIOR - Special Function IO Register
.equ    ADTS0    = 5    ; ADC Auto Trigger Source 0
.equ    ADTS1    = 6    ; ADC Auto Trigger Source 1
.equ    ADTS2    = 7    ; ADC Auto Trigger Source 2

; ***** JTAG *************************
; OCDR - On-Chip Debug Related Register in I/O Memory
.equ    OCDR0    = 0    ; On-Chip Debug Register Bit 0
.equ    OCDR1    = 1    ; On-Chip Debug Register Bit 1
.equ    OCDR2    = 2    ; On-Chip Debug Register Bit 2
.equ    OCDR3    = 3    ; On-Chip Debug Register Bit 3
.equ    OCDR4    = 4    ; On-Chip Debug Register Bit 4
.equ    OCDR5    = 5    ; On-Chip Debug Register Bit 5
.equ    OCDR6    = 6    ; On-Chip Debug Register Bit 6
.equ    OCDR7    = 7    ; On-Chip Debug Register Bit 7
.equ    IDRD    = OCDR7    ; For compatibility

; MCUCSR - MCU Control And Status Register
;.equ    JTRF    = 4    ; JTAG Reset Flag
;.equ    JTD    = 7    ; JTAG Interface Disable

; ***** BOOT_LOAD ********************
; SPMCSR - Store Program Memory Control Register
.equ    SPMCR    = SPMCSR    ; For compatibility
.equ    SPMEN    = 0    ; Store Program Memory Enable
.equ    PGERS    = 1    ; Page Erase
.equ    PGWRT    = 2    ; Page Write
.equ    BLBSET    = 3    ; Boot Lock Bit Set
.equ    RWWSRE    = 4    ; Read While Write section read enable
.equ    ASRE    = RWWSRE    ; For compatibility
.equ    RWWSB    = 6    ; Read While Write Section Busy
.equ    ASB    = RWWSB    ; For compatibility
.equ    SPMIE    = 7    ; SPM Interrupt Enable

; ***** PORTA ************************
; PORTA - Port A Data Register
.equ    PORTA0    = 0    ; Port A Data Register bit 0
.equ    PA0    = 0    ; For compatibility
.equ    PORTA1    = 1    ; Port A Data Register bit 1
.equ    PA1    = 1    ; For compatibility
.equ    PORTA2    = 2    ; Port A Data Register bit 2
.equ    PA2    = 2    ; For compatibility
.equ    PORTA3    = 3    ; Port A Data Register bit 3
.equ    PA3    = 3    ; For compatibility
.equ    PORTA4    = 4    ; Port A Data Register bit 4
.equ    PA4    = 4    ; For compatibility
.equ    PORTA5    = 5    ; Port A Data Register bit 5
.equ    PA5    = 5    ; For compatibility
.equ    PORTA6    = 6    ; Port A Data Register bit 6
.equ    PA6    = 6    ; For compatibility
.equ    PORTA7    = 7    ; Port A Data Register bit 7
.equ    PA7    = 7    ; For compatibility

; DDRA - Port A Data Direction Register
.equ    DDA0    = 0    ; Data Direction Register, Port A, bit 0
.equ    DDA1    = 1    ; Data Direction Register, Port A, bit 1
.equ    DDA2    = 2    ; Data Direction Register, Port A, bit 2
.equ    DDA3    = 3    ; Data Direction Register, Port A, bit 3
.equ    DDA4    = 4    ; Data Direction Register, Port A, bit 4
.equ    DDA5    = 5    ; Data Direction Register, Port A, bit 5
.equ    DDA6    = 6    ; Data Direction Register, Port A, bit 6
.equ    DDA7    = 7    ; Data Direction Register, Port A, bit 7

; PINA - Port A Input Pins
.equ    PINA0    = 0    ; Input Pins, Port A bit 0
.equ    PINA1    = 1    ; Input Pins, Port A bit 1
.equ    PINA2    = 2    ; Input Pins, Port A bit 2
.equ    PINA3    = 3    ; Input Pins, Port A bit 3
.equ    PINA4    = 4    ; Input Pins, Port A bit 4
.equ    PINA5    = 5    ; Input Pins, Port A bit 5
.equ    PINA6    = 6    ; Input Pins, Port A bit 6
.equ    PINA7    = 7    ; Input Pins, Port A bit 7


; ***** PORTB ************************
; PORTB - Port B Data Register
.equ    PORTB0    = 0    ; Port B Data Register bit 0
.equ    PB0    = 0    ; For compatibility
.equ    PORTB1    = 1    ; Port B Data Register bit 1
.equ    PB1    = 1    ; For compatibility
.equ    PORTB2    = 2    ; Port B Data Register bit 2
.equ    PB2    = 2    ; For compatibility
.equ    PORTB3    = 3    ; Port B Data Register bit 3
.equ    PB3    = 3    ; For compatibility
.equ    PORTB4    = 4    ; Port B Data Register bit 4
.equ    PB4    = 4    ; For compatibility
.equ    PORTB5    = 5    ; Port B Data Register bit 5
.equ    PB5    = 5    ; For compatibility
.equ    PORTB6    = 6    ; Port B Data Register bit 6
.equ    PB6    = 6    ; For compatibility
.equ    PORTB7    = 7    ; Port B Data Register bit 7
.equ    PB7    = 7    ; For compatibility

; DDRB - Port B Data Direction Register
.equ    DDB0    = 0    ; Port B Data Direction Register bit 0
.equ    DDB1    = 1    ; Port B Data Direction Register bit 1
.equ    DDB2    = 2    ; Port B Data Direction Register bit 2
.equ    DDB3    = 3    ; Port B Data Direction Register bit 3
.equ    DDB4    = 4    ; Port B Data Direction Register bit 4
.equ    DDB5    = 5    ; Port B Data Direction Register bit 5
.equ    DDB6    = 6    ; Port B Data Direction Register bit 6
.equ    DDB7    = 7    ; Port B Data Direction Register bit 7

; PINB - Port B Input Pins
.equ    PINB0    = 0    ; Port B Input Pins bit 0
.equ    PINB1    = 1    ; Port B Input Pins bit 1
.equ    PINB2    = 2    ; Port B Input Pins bit 2
.equ    PINB3    = 3    ; Port B Input Pins bit 3
.equ    PINB4    = 4    ; Port B Input Pins bit 4
.equ    PINB5    = 5    ; Port B Input Pins bit 5
.equ    PINB6    = 6    ; Port B Input Pins bit 6
.equ    PINB7    = 7    ; Port B Input Pins bit 7

; ***** PORTC ************************
; PORTC - Port C Data Register
.equ    PORTC0    = 0    ; Port C Data Register bit 0
.equ    PC0    = 0    ; For compatibility
.equ    PORTC1    = 1    ; Port C Data Register bit 1
.equ    PC1    = 1    ; For compatibility
.equ    PORTC2    = 2    ; Port C Data Register bit 2
.equ    PC2    = 2    ; For compatibility
.equ    PORTC3    = 3    ; Port C Data Register bit 3
.equ    PC3    = 3    ; For compatibility
.equ    PORTC4    = 4    ; Port C Data Register bit 4
.equ    PC4    = 4    ; For compatibility
.equ    PORTC5    = 5    ; Port C Data Register bit 5
.equ    PC5    = 5    ; For compatibility
.equ    PORTC6    = 6    ; Port C Data Register bit 6
.equ    PC6    = 6    ; For compatibility
.equ    PORTC7    = 7    ; Port C Data Register bit 7
.equ    PC7    = 7    ; For compatibility

; DDRC - Port C Data Direction Register
.equ    DDC0    = 0    ; Port C Data Direction Register bit 0
.equ    DDC1    = 1    ; Port C Data Direction Register bit 1
.equ    DDC2    = 2    ; Port C Data Direction Register bit 2
.equ    DDC3    = 3    ; Port C Data Direction Register bit 3
.equ    DDC4    = 4    ; Port C Data Direction Register bit 4
.equ    DDC5    = 5    ; Port C Data Direction Register bit 5
.equ    DDC6    = 6    ; Port C Data Direction Register bit 6
.equ    DDC7    = 7    ; Port C Data Direction Register bit 7

; PINC - Port C Input Pins
.equ    PINC0    = 0    ; Port C Input Pins bit 0
.equ    PINC1    = 1    ; Port C Input Pins bit 1
.equ    PINC2    = 2    ; Port C Input Pins bit 2
.equ    PINC3    = 3    ; Port C Input Pins bit 3
.equ    PINC4    = 4    ; Port C Input Pins bit 4
.equ    PINC5    = 5    ; Port C Input Pins bit 5
.equ    PINC6    = 6    ; Port C Input Pins bit 6
.equ    PINC7    = 7    ; Port C Input Pins bit 7

; ***** PORTD ************************
; PORTD - Port D Data Register
.equ    PORTD0    = 0    ; Port D Data Register bit 0
.equ    PD0    = 0    ; For compatibility
.equ    PORTD1    = 1    ; Port D Data Register bit 1
.equ    PD1    = 1    ; For compatibility
.equ    PORTD2    = 2    ; Port D Data Register bit 2
.equ    PD2    = 2    ; For compatibility
.equ    PORTD3    = 3    ; Port D Data Register bit 3
.equ    PD3    = 3    ; For compatibility
.equ    PORTD4    = 4    ; Port D Data Register bit 4
.equ    PD4    = 4    ; For compatibility
.equ    PORTD5    = 5    ; Port D Data Register bit 5
.equ    PD5    = 5    ; For compatibility
.equ    PORTD6    = 6    ; Port D Data Register bit 6
.equ    PD6    = 6    ; For compatibility
.equ    PORTD7    = 7    ; Port D Data Register bit 7
.equ    PD7    = 7    ; For compatibility

; DDRD - Port D Data Direction Register
.equ    DDD0    = 0    ; Port D Data Direction Register bit 0
.equ    DDD1    = 1    ; Port D Data Direction Register bit 1
.equ    DDD2    = 2    ; Port D Data Direction Register bit 2
.equ    DDD3    = 3    ; Port D Data Direction Register bit 3
.equ    DDD4    = 4    ; Port D Data Direction Register bit 4
.equ    DDD5    = 5    ; Port D Data Direction Register bit 5
.equ    DDD6    = 6    ; Port D Data Direction Register bit 6
.equ    DDD7    = 7    ; Port D Data Direction Register bit 7

; PIND - Port D Input Pins
.equ    PIND0    = 0    ; Port D Input Pins bit 0
.equ    PIND1    = 1    ; Port D Input Pins bit 1
.equ    PIND2    = 2    ; Port D Input Pins bit 2
.equ    PIND3    = 3    ; Port D Input Pins bit 3
.equ    PIND4    = 4    ; Port D Input Pins bit 4
.equ    PIND5    = 5    ; Port D Input Pins bit 5
.equ    PIND6    = 6    ; Port D Input Pins bit 6
.equ    PIND7    = 7    ; Port D Input Pins bit 7

; ***** WATCHDOG *********************
; WDTCR - Watchdog Timer Control Register
.equ    WDP0    = 0    ; Watch Dog Timer Prescaler bit 0
.equ    WDP1    = 1    ; Watch Dog Timer Prescaler bit 1
.equ    WDP2    = 2    ; Watch Dog Timer Prescaler bit 2
.equ    WDE    = 3    ; Watch Dog Enable
.equ    WDTOE    = 4    ; RW
.equ    WDDE    = WDTOE    ; For compatibility

; ***** LOCKSBITS ********************************************************
.equ    LB1    = 0    ; Lock bit
.equ    LB2    = 1    ; Lock bit
.equ    BLB01    = 2    ; Boot Lock bit
.equ    BLB02    = 3    ; Boot Lock bit
.equ    BLB11    = 4    ; Boot lock bit
.equ    BLB12    = 5    ; Boot lock bit

; ***** FUSES ************************************************************
; LOW fuse bits
.equ    CKSEL0    = 0    ; Select Clock Source
.equ    CKSEL1    = 1    ; Select Clock Source
.equ    CKSEL2    = 2    ; Select Clock Source
.equ    CKSEL3    = 3    ; Select Clock Source
.equ    SUT0    = 4    ; Select start-up time
.equ    SUT1    = 5    ; Select start-up time
.equ    BODEN    = 6    ; Brown out detector enable
.equ    BODLEVEL    = 7    ; Brown out detector trigger level

; HIGH fuse bits
.equ    BOOTRST    = 0    ; Select Reset Vector
.equ    BOOTSZ0    = 1    ; Select Boot Size
.equ    BOOTSZ1    = 2    ; Select Boot Size
.equ    EESAVE    = 3    ; EEPROM memory is preserved through chip erase
.equ    CKOPT    = 4    ; Oscillator Options
.equ    SPIEN    = 5    ; Enable Serial programming and Data Downloading
.equ    JTAGEN    = 6    ; Enable JTAG
.equ    OCDEN    = 7    ; Enable OCD

; ***** CPU REGISTER DEFINITIONS *****************************************
.def    XH    = r27
.def    XL    = r26
.def    YH    = r29
.def    YL    = r28
.def    ZH    = r31
.def    ZL    = r30

; ***** DATA MEMORY DECLARATIONS *****************************************
.equ    FLASHEND    = 0x1fff    ; Note: Word address
.equ    IOEND    = 0x003f
.equ    SRAM_START    = 0x0060
.equ    SRAM_SIZE    = 1024
.equ    RAMEND    = 0x045f
.equ    XRAMEND    = 0x0000
.equ    E2END    = 0x01ff
.equ    EEPROMEND    = 0x01ff
.equ    EEADRBITS    = 9
#pragma AVRPART MEMORY PROG_FLASH 16384
#pragma AVRPART MEMORY EEPROM 512
#pragma AVRPART MEMORY INT_SRAM SIZE 1024
#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x60

; ***** BOOTLOADER DECLARATIONS ******************************************
.equ    NRWW_START_ADDR    = 0x1c00
.equ    NRWW_STOP_ADDR    = 0x1fff
.equ    RWW_START_ADDR    = 0x0
.equ    RWW_STOP_ADDR    = 0x1bff
.equ    PAGESIZE    = 64
.equ    FIRSTBOOTSTART    = 0x1f80
.equ    SECONDBOOTSTART    = 0x1f00
.equ    THIRDBOOTSTART    = 0x1e00
.equ    FOURTHBOOTSTART    = 0x1c00
.equ    SMALLBOOTSTART    = FIRSTBOOTSTART
.equ    LARGEBOOTSTART    = FOURTHBOOTSTART

; ***** INTERRUPT VECTORS ************************************************
.equ    INT0addr    = 0x0002    ; External Interrupt Request 0
.equ    INT1addr    = 0x0004    ; External Interrupt Request 1
.equ    OC2addr    = 0x0006    ; Timer/Counter2 Compare Match
.equ    OVF2addr    = 0x0008    ; Timer/Counter2 Overflow
.equ    ICP1addr    = 0x000a    ; Timer/Counter1 Capture Event
.equ    OC1Aaddr    = 0x000c    ; Timer/Counter1 Compare Match A
.equ    OC1Baddr    = 0x000e    ; Timer/Counter1 Compare Match B
.equ    OVF1addr    = 0x0010    ; Timer/Counter1 Overflow
.equ    OVF0addr    = 0x0012    ; Timer/Counter0 Overflow
.equ    SPIaddr    = 0x0014    ; Serial Transfer Complete
.equ    URXCaddr    = 0x0016    ; USART, Rx Complete
.equ    UDREaddr    = 0x0018    ; USART Data Register Empty
.equ    UTXCaddr    = 0x001a    ; USART, Tx Complete
.equ    ADCCaddr    = 0x001c    ; ADC Conversion Complete
.equ    ERDYaddr    = 0x001e    ; EEPROM Ready
.equ    ACIaddr    = 0x0020    ; Analog Comparator
.equ    TWIaddr    = 0x0022    ; 2-wire Serial Interface
.equ    INT2addr    = 0x0024    ; External Interrupt Request 2
.equ    OC0addr    = 0x0026    ; Timer/Counter0 Compare Match
.equ    SPMRaddr    = 0x0028    ; Store Program Memory Ready

.equ    INT_VECTORS_SIZE    = 42    ; size in words

#endif  /* _M16DEF_INC_ */

; ***** END OF FILE ******************************************************
/* Copyright (c) 2004 Eric B. Weddington
   All rights reserved.

   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:

   * Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.

   * Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in
     the documentation and/or other materials provided with the
     distribution.

   * Neither the name of the copyright holders nor the names of
     contributors may be used to endorse or promote products derived
     from this software without specific prior written permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  POSSIBILITY OF SUCH DAMAGE. */

/* $Id: iom16.h,v 1.14.2.6 2009/02/11 18:05:26 arcanum Exp $ */

/* avr/iom16.h - definitions for ATmega16 */

#ifndef _AVR_IOM16_H_
#define _AVR_IOM16_H_ 1

/* This file should only be included from <avr/io.h>, never directly. */

#ifndef _AVR_IO_H_
#  error "Include <avr/io.h> instead of this file."
#endif

#ifndef _AVR_IOXXX_H_
#  define _AVR_IOXXX_H_ "iom16.h"
#else
#  error "Attempt to include more than one <avr/ioXXX.h> file."
#endif 

/* Registers and associated bit numbers */

#define TWBR    _SFR_IO8(0x00)

#define TWSR    _SFR_IO8(0x01)
#define TWPS0   0
#define TWPS1   1
#define TWS3    3
#define TWS4    4
#define TWS5    5
#define TWS6    6
#define TWS7    7

#define TWAR    _SFR_IO8(0x02)
#define TWGCE   0
#define TWA0    1
#define TWA1    2
#define TWA2    3
#define TWA3    4
#define TWA4    5
#define TWA5    6
#define TWA6    7

#define TWDR    _SFR_IO8(0x03)

/* Combine ADCL and ADCH */
#ifndef __ASSEMBLER__
#define ADC     _SFR_IO16(0x04)
#endif
#define ADCW    _SFR_IO16(0x04)
#define ADCL    _SFR_IO8(0x04)
#define ADCH    _SFR_IO8(0x05)

#define ADCSRA  _SFR_IO8(0x06)
#define ADPS0   0
#define ADPS1   1
#define ADPS2   2
#define ADIE    3
#define ADIF    4
#define ADATE   5
#define ADSC    6
#define ADEN    7

#define ADMUX   _SFR_IO8(0x07)
#define MUX0    0
#define MUX1    1
#define MUX2    2
#define MUX3    3
#define MUX4    4
#define ADLAR   5
#define REFS0   6
#define REFS1   7

#define ACSR    _SFR_IO8(0x08)
#define ACIS0   0
#define ACIS1   1
#define ACIC    2
#define ACIE    3
#define ACI     4
#define ACO     5
#define ACBG    6
#define ACD     7

#define UBRRL   _SFR_IO8(0x09)

#define UCSRB   _SFR_IO8(0x0A)
#define TXB8    0
#define RXB8    1
#define UCSZ2   2
#define TXEN    3
#define RXEN    4
#define UDRIE   5
#define TXCIE   6
#define RXCIE   7

#define UCSRA   _SFR_IO8(0x0B)
#define MPCM    0
#define U2X     1
#define PE      2
#define DOR     3
#define FE      4
#define UDRE    5
#define TXC     6
#define RXC     7

#define UDR     _SFR_IO8(0x0C)

#define SPCR    _SFR_IO8(0x0D)
#define SPR0    0
#define SPR1    1
#define CPHA    2
#define CPOL    3
#define MSTR    4
#define DORD    5
#define SPE     6
#define SPIE    7

#define SPSR    _SFR_IO8(0x0E)
#define SPI2X   0
#define WCOL    6
#define SPIF    7

#define SPDR    _SFR_IO8(0x0F)

#define PIND    _SFR_IO8(0x10)
#define PIND0   0
#define PIND1   1
#define PIND2   2
#define PIND3   3
#define PIND4   4
#define PIND5   5
#define PIND6   6
#define PIND7   7

#define DDRD    _SFR_IO8(0x11)
#define DDD0    0
#define DDD1    1
#define DDD2    2
#define DDD3    3
#define DDD4    4
#define DDD5    5
#define DDD6    6
#define DDD7    7

#define PORTD   _SFR_IO8(0x12)
#define PD0     0
#define PD1     1
#define PD2     2
#define PD3     3
#define PD4     4
#define PD5     5
#define PD6     6
#define PD7     7

#define PINC    _SFR_IO8(0x13)
#define PINC0   0
#define PINC1   1
#define PINC2   2
#define PINC3   3
#define PINC4   4
#define PINC5   5
#define PINC6   6
#define PINC7   7

#define DDRC    _SFR_IO8(0x14)
#define DDC0    0
#define DDC1    1
#define DDC2    2
#define DDC3    3
#define DDC4    4
#define DDC5    5
#define DDC6    6
#define DDC7    7

#define PORTC   _SFR_IO8(0x15)
#define PC0     0
#define PC1     1
#define PC2     2
#define PC3     3
#define PC4     4
#define PC5     5
#define PC6     6
#define PC7     7

#define PINB    _SFR_IO8(0x16)
#define PINB0   0
#define PINB1   1
#define PINB2   2
#define PINB3   3
#define PINB4   4
#define PINB5   5
#define PINB6   6
#define PINB7   7

#define DDRB    _SFR_IO8(0x17)
#define DDB0    0
#define DDB1    1
#define DDB2    2
#define DDB3    3
#define DDB4    4
#define DDB5    5
#define DDB6    6
#define DDB7    7

#define PORTB   _SFR_IO8(0x18)
#define PB0     0
#define PB1     1
#define PB2     2
#define PB3     3
#define PB4     4
#define PB5     5
#define PB6     6
#define PB7     7

#define PINA    _SFR_IO8(0x19)
#define PINA0   0
#define PINA1   1
#define PINA2   2
#define PINA3   3
#define PINA4   4
#define PINA5   5
#define PINA6   6
#define PINA7   7

#define DDRA    _SFR_IO8(0x1A)
#define DDA0    0
#define DDA1    1
#define DDA2    2
#define DDA3    3
#define DDA4    4
#define DDA5    5
#define DDA6    6
#define DDA7    7

#define PORTA   _SFR_IO8(0x1B)
#define PA0     0
#define PA1     1
#define PA2     2
#define PA3     3
#define PA4     4
#define PA5     5
#define PA6     6
#define PA7     7

/* EEPROM Control Register */
#define EECR    _SFR_IO8(0x1C)
#define EERE    0
#define EEWE    1
#define EEMWE   2
#define EERIE   3

/* EEPROM Data Register */
#define EEDR    _SFR_IO8(0x1D)

/* EEPROM Address Register */
#define EEAR    _SFR_IO16(0x1E)
#define EEARL    _SFR_IO8(0x1E)
#define EEARH    _SFR_IO8(0x1F)

#define UCSRC   _SFR_IO8(0x20)
#define UCPOL   0
#define UCSZ0   1
#define UCSZ1   2
#define USBS    3
#define UPM0    4
#define UPM1    5
#define UMSEL   6
#define URSEL   7

#define UBRRH   _SFR_IO8(0x20)
#define URSEL   7

#define WDTCR   _SFR_IO8(0x21)
#define WDP0    0
#define WDP1    1
#define WDP2    2
#define WDE     3
#define WDTOE   4

#define ASSR    _SFR_IO8(0x22)
#define TCR2UB  0
#define OCR2UB  1
#define TCN2UB  2
#define AS2     3

#define OCR2    _SFR_IO8(0x23)

#define TCNT2   _SFR_IO8(0x24)

#define TCCR2   _SFR_IO8(0x25)
#define CS20    0
#define CS21    1
#define CS22    2
#define WGM21   3
#define COM20   4
#define COM21   5
#define WGM20   6
#define FOC2    7

/* Combine ICR1L and ICR1H */
#define ICR1    _SFR_IO16(0x26)

#define ICR1L   _SFR_IO8(0x26)
#define ICR1H   _SFR_IO8(0x27)

/* Combine OCR1BL and OCR1BH */
#define OCR1B   _SFR_IO16(0x28)

#define OCR1BL  _SFR_IO8(0x28)
#define OCR1BH  _SFR_IO8(0x29)

/* Combine OCR1AL and OCR1AH */
#define OCR1A   _SFR_IO16(0x2A)

#define OCR1AL  _SFR_IO8(0x2A)
#define OCR1AH  _SFR_IO8(0x2B)

/* Combine TCNT1L and TCNT1H */
#define TCNT1   _SFR_IO16(0x2C)

#define TCNT1L  _SFR_IO8(0x2C)
#define TCNT1H  _SFR_IO8(0x2D)

#define TCCR1B  _SFR_IO8(0x2E)
#define CS10    0
#define CS11    1
#define CS12    2
#define WGM12   3
#define WGM13   4
#define ICES1   6
#define ICNC1   7

#define TCCR1A  _SFR_IO8(0x2F)
#define WGM10   0
#define WGM11   1
#define FOC1B   2
#define FOC1A   3
#define COM1B0  4
#define COM1B1  5
#define COM1A0  6
#define COM1A1  7

/* 
   The ADHSM bit has been removed from all documentation, 
   as being not needed at all since the comparator has proven 
   to be fast enough even without feeding it more power.
*/

#define SFIOR   _SFR_IO8(0x30)
#define PSR10   0
#define PSR2    1
#define PUD     2
#define ACME    3
#define ADTS0   5
#define ADTS1   6
#define ADTS2   7

#define OSCCAL  _SFR_IO8(0x31)

#define OCDR    _SFR_IO8(0x31)

#define TCNT0   _SFR_IO8(0x32)

#define TCCR0   _SFR_IO8(0x33)
#define CS00    0
#define CS01    1
#define CS02    2
#define WGM01   3
#define COM00   4
#define COM01   5
#define WGM00   6
#define FOC0    7

#define MCUCSR  _SFR_IO8(0x34)
#define PORF    0
#define EXTRF   1
#define BORF    2
#define WDRF    3
#define JTRF    4
#define ISC2    6
#define JTD     7

#define MCUCR   _SFR_IO8(0x35)
#define ISC00   0
#define ISC01   1
#define ISC10   2
#define ISC11   3
#define SM0     4
#define SM1     5
#define SE      6
#define SM2     7

#define TWCR    _SFR_IO8(0x36)
#define TWIE    0
#define TWEN    2
#define TWWC    3
#define TWSTO   4
#define TWSTA   5
#define TWEA    6
#define TWINT   7

#define SPMCR   _SFR_IO8(0x37)
#define SPMEN   0
#define PGERS   1
#define PGWRT   2
#define BLBSET  3
#define RWWSRE  4
#define RWWSB   6
#define SPMIE   7

#define TIFR    _SFR_IO8(0x38)
#define TOV0    0
#define OCF0    1
#define TOV1    2
#define OCF1B   3
#define OCF1A   4
#define ICF1    5
#define TOV2    6
#define OCF2    7

#define TIMSK   _SFR_IO8(0x39)
#define TOIE0   0
#define OCIE0   1
#define TOIE1   2
#define OCIE1B  3
#define OCIE1A  4
#define TICIE1  5
#define TOIE2   6
#define OCIE2   7

#define GIFR    _SFR_IO8(0x3A)
#define INTF2   5
#define INTF0   6
#define INTF1   7

#define GICR    _SFR_IO8(0x3B)
#define IVCE    0
#define IVSEL   1
#define INT2    5
#define INT0    6
#define INT1    7

#define OCR0    _SFR_IO8(0x3C)

/* SP [0x3D..0x3E] */
/* SREG [0x3F] */

/* Interrupt vectors */
/* Vector 0 is the reset vector. */
/* External Interrupt Request 0 */
#define INT0_vect            _VECTOR(1)
#define SIG_INTERRUPT0            _VECTOR(1)

/* External Interrupt Request 1 */
#define INT1_vect            _VECTOR(2)
#define SIG_INTERRUPT1            _VECTOR(2)

/* Timer/Counter2 Compare Match */
#define TIMER2_COMP_vect        _VECTOR(3)
#define SIG_OUTPUT_COMPARE2        _VECTOR(3)

/* Timer/Counter2 Overflow */
#define TIMER2_OVF_vect            _VECTOR(4)
#define SIG_OVERFLOW2            _VECTOR(4)

/* Timer/Counter1 Capture Event */
#define TIMER1_CAPT_vect        _VECTOR(5)
#define SIG_INPUT_CAPTURE1        _VECTOR(5)

/* Timer/Counter1 Compare Match A */
#define TIMER1_COMPA_vect        _VECTOR(6)
#define SIG_OUTPUT_COMPARE1A        _VECTOR(6)

/* Timer/Counter1 Compare Match B */
#define TIMER1_COMPB_vect        _VECTOR(7)
#define SIG_OUTPUT_COMPARE1B        _VECTOR(7)

/* Timer/Counter1 Overflow */
#define TIMER1_OVF_vect            _VECTOR(8)
#define SIG_OVERFLOW1            _VECTOR(8)

/* Timer/Counter0 Overflow */
#define TIMER0_OVF_vect            _VECTOR(9)
#define SIG_OVERFLOW0            _VECTOR(9)

/* Serial Transfer Complete */
#define SPI_STC_vect            _VECTOR(10)
#define SIG_SPI                _VECTOR(10)

/* USART, Rx Complete */
#define USART_RXC_vect            _VECTOR(11)
#define SIG_USART_RECV            _VECTOR(11)
#define SIG_UART_RECV            _VECTOR(11)

/* USART Data Register Empty */
#define USART_UDRE_vect            _VECTOR(12)
#define SIG_USART_DATA            _VECTOR(12)
#define SIG_UART_DATA            _VECTOR(12)

/* USART, Tx Complete */
#define USART_TXC_vect            _VECTOR(13)
#define SIG_USART_TRANS            _VECTOR(13)
#define SIG_UART_TRANS            _VECTOR(13)

/* ADC Conversion Complete */
#define ADC_vect            _VECTOR(14)
#define SIG_ADC                _VECTOR(14)

/* EEPROM Ready */
#define EE_RDY_vect            _VECTOR(15)
#define SIG_EEPROM_READY        _VECTOR(15)

/* Analog Comparator */
#define ANA_COMP_vect            _VECTOR(16)
#define SIG_COMPARATOR            _VECTOR(16)

/* 2-wire Serial Interface */
#define TWI_vect            _VECTOR(17)
#define SIG_2WIRE_SERIAL        _VECTOR(17)

/* External Interrupt Request 2 */
#define INT2_vect            _VECTOR(18)
#define SIG_INTERRUPT2            _VECTOR(18)

/* Timer/Counter0 Compare Match */
#define TIMER0_COMP_vect        _VECTOR(19)
#define SIG_OUTPUT_COMPARE0        _VECTOR(19)

/* Store Program Memory Ready */
#define SPM_RDY_vect            _VECTOR(20)
#define SIG_SPM_READY            _VECTOR(20)

#define _VECTORS_SIZE 84


/* Constants */
#define SPM_PAGESIZE    128
#define RAMEND          0x45F
#define XRAMEND         RAMEND
#define E2END           0x1FF
#define E2PAGESIZE      4
#define FLASHEND        0x3FFF

/* Fuses */

#define FUSE_MEMORY_SIZE 2

/* Low Fuse Byte */
#define FUSE_CKSEL0      (unsigned char)~_BV(0)
#define FUSE_CKSEL1      (unsigned char)~_BV(1)
#define FUSE_CKSEL2      (unsigned char)~_BV(2)
#define FUSE_CKSEL3      (unsigned char)~_BV(3)
#define FUSE_SUT0        (unsigned char)~_BV(4)
#define FUSE_SUT1        (unsigned char)~_BV(5)
#define FUSE_BODEN       (unsigned char)~_BV(6)
#define FUSE_BODLEVEL    (unsigned char)~_BV(7)
#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0)

/* High Fuse Byte */
#define FUSE_BOOTRST     (unsigned char)~_BV(0)
#define FUSE_BOOTSZ0     (unsigned char)~_BV(1)
#define FUSE_BOOTSZ1     (unsigned char)~_BV(2)
#define FUSE_EESAVE      (unsigned char)~_BV(3)
#define FUSE_CKOPT       (unsigned char)~_BV(4)
#define FUSE_SPIEN       (unsigned char)~_BV(5)
#define FUSE_JTAGEN      (unsigned char)~_BV(6)
#define FUSE_OCDEN       (unsigned char)~_BV(7)
#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN)

/* Lock Bits */
#define __LOCK_BITS_EXIST
#define __BOOT_LOCK_BITS_0_EXIST
#define __BOOT_LOCK_BITS_1_EXIST 

/* Signature */
#define SIGNATURE_0 0x1E
#define SIGNATURE_1 0x94
#define SIGNATURE_2 0x03

#endif /* _AVR_IOM16_H_ */
© Oliver Mezger 05.03.2010 MezData.de Den Kontakt herstellen...