summaryrefslogtreecommitdiffstats
path: root/m16def.inc
diff options
context:
space:
mode:
authorTobias Wiese <tobias@tobiaswiese.com>2021-05-03 23:58:30 +0200
committerTobias Wiese <tobias@tobiaswiese.com>2021-07-22 02:26:29 +0200
commit68b5f182af145fdd9e62c9dde3eedcb9108f5ba4 (patch)
tree67c0011276b30f8f785b934be44044935f78bd73 /m16def.inc
Initial commitHEADmaster
Signed-off-by: Tobias Wiese <tobias@tobiaswiese.com>
Diffstat (limited to 'm16def.inc')
-rw-r--r--m16def.inc862
1 files changed, 862 insertions, 0 deletions
diff --git a/m16def.inc b/m16def.inc
new file mode 100644
index 0000000..27cc811
--- /dev/null
+++ b/m16def.inc
@@ -0,0 +1,862 @@
+;* 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 : 2011-02-09
+;* 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 *****************************************
+#define XH r27
+#define XL r26
+#define YH r29
+#define YL r28
+#define ZH r31
+#define 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 ******************************************************