
//MEGA32оƬĴַ

unit register
{
	//оƬж
	public unit WATCH
	{
		public const uint16 INT0 = 0x0002;
		public const uint16 INT1 = 0x0004;
		public const uint16 INT2 = 0x0006;
		public const uint16 timer2_OVF = 0x000A;
		public const uint16 timer1_compA = 0x000E;
		public const uint16 timer0_comp = 0x0014;
		public const uint16 SPI_STC = 0x0018;
		public const uint16 usart_RXC = 0x001A;
		
		public const uint16 TWI = 0x0026;
	}
	//˿
	public uint8 PORTA	= #addr 0x3b;
	public uint8 DDRA	= #addr 0x3a;
	public uint8 PINA	= #addr 0x39;
	
	public uint8 PORTB	= #addr 0x38;
	public uint8 DDRB	= #addr 0x37;
	public uint8 PINB	= #addr 0x36;
	
	public uint8 PORTC	= #addr 0x35;
	public uint8 DDRC	= #addr 0x34;
	public uint8 PINC	= #addr 0x33;
	
	public uint8 PORTD	= #addr 0x32;
	public uint8 DDRD	= #addr 0x31;
	public uint8 PIND	= #addr 0x30;
	
	//ADת
	public uint8 ADCL	= #addr 0x24;
	public uint8 ADCH	= #addr 0x25;
	public uint8 ADCSRA	= #addr 0x26;
	public uint8 ADMUX	= #addr 0x27;
	
	//UARTڿ
	public uint8 UCSRB	= #addr 0x2a;
	public uint8 UCSRA	= #addr 0x2b;
	public uint8 UCSRC	= #addr 0x40;
	public uint8 UBRRL	= #addr 0x29;
	public uint8 UBRRH	= #addr 0x40;
	public uint8 UDR	= #addr 0x2c;
	
	//ʱ/2
	public uint8 ASSR	= #addr 0x42;
	public uint8 OCR2	= #addr 0x43;
	public uint8 TCNT2	= #addr 0x44;
	public uint8 TCCR2	= #addr 0x45;
	
	//ʱ/1
	public uint8 OCR1BL	= #addr 0x48;
	public uint8 OCR1BH	= #addr 0x49;
	//public N16 OCR1B	= #addr 0x48;  // 16 bit access
	public uint8 OCR1AL	= #addr 0x4a;
	public uint8 OCR1AH	= #addr 0x4b;
	//public N16 OCR1A	= #addr 0x4a;  // 16 bit access
	public uint8 TCNT1L	= #addr 0x4c;
	public uint8 TCNT1H	= #addr 0x4d;
	//public N16 TCNT1	= #addr 0x4c;  // 16 bit access
	public uint8 TCCR1B	= #addr 0x4e;
	public uint8 TCCR1A	= #addr 0x4f;
	
	//ʱ/0
	public uint8 TCNT0	= #addr 0x52;
	public uint8 TCCR0	= #addr 0x53;
	public uint8 TIFR	= #addr 0x58;
	public uint8 OCR0	= #addr 0X5c;
	
	//ⲿжϿ
	public uint8 MCUCSR	= #addr 0x54;
	public uint8 MCUCR	= #addr 0x55;
	public uint8 TIMSK	= #addr 0x59;
	public uint8 GIFR	= #addr 0x5a;
	public uint8 GICR	= #addr 0x5b;
	
	//TWI
	public uint8 TWAR = #addr 0x22;
	public uint8 TWCR = #addr 0x56;
	
	//SPI
	public uint8 SPCR = #addr 0x2d;
	public uint8 SPSR = #addr 0x2e;
	public uint8 SPDR = #addr 0x2f;
	
	//ջָ
	public uint8 SP_LOW	= #addr 0x5d;
	public uint8 SP_HIGH	= #addr 0x5e;
	public uint16 SP	= #addr 0x5d;  // 16 bit access
	
	//EEPROM
	public uint8 EECR =		#addr 0x3c;
	public uint8 EEDR =		#addr 0x3d;
	public uint8 EEARL =		#addr 0x3e;
	public uint8 EEARH =		#addr 0x3f;
	
	//Ź
	public uint8 WDTCR = #addr 0x41;

	//״̬Ĵ
	public uint8 SREG	= #addr 0x5f;
	
	public uint8 SFIOR	= #addr 0x50;
	
	//ע;µַ0x20!!!!!!!!!!!!!!!!!!!!
//	public uint8 TWBR = [u.ADDR]0x00;
//	public uint8 TWSR = [u.ADDR]0x01;
//	public uint8 TWAR = [u.ADDR]0x02;
//	public uint8 TWDR = [u.ADDR]0x03;
//	public uint8 ACSR = [u.ADDR]0x08;
//..	public uint8 SPCR = [u.ADDR]0x0d;
//..	public uint8 SPSR = [u.ADDR]0x0e;
//..	public uint8 SPDR = [u.ADDR]0x0f;
//..	public uint8 EECR = [u.ADDR]0x1c;
//..	public uint8 EEDR = [u.ADDR]0x1d;
//..	public uint8 EEARL = [u.ADDR]0x1e;
//..	public uint8 EEARH = [u.ADDR]0x1f;
//	public uint16 EEAR = [u.ADDR]0x1e;   // 16 bit access
//	public uint8 ICR1L = [u.ADDR]0x26;
//	public uint8 ICR1H = [u.ADDR]0x27;
//	public uint8 OSCCAL = [u.ADDR]0x31;
//	public uint8 TWCR = [u.ADDR]0x36;
//	public uint8 SPMCR = [u.ADDR]0x37;
}
















