
//MEGA128оƬĴַ

unit register
{
	//оƬж
	public unit WATCH
	{
		public const uint16 INT0 = 0x0002;
		public const uint16 INT1 = 0x0004;
		public const uint16 INT2 = 0x0006;
		public const uint16 INT3 = 0x0008;
		public const uint16 INT4 = 0x000A;
		public const uint16 INT5 = 0x000C;
		public const uint16 INT6 = 0x000E;
		public const uint16 INT7 = 0x0010;
		
		public const uint16 timer1_CAPT = 0x0016;
		public const uint16 timer1_compA = 0x0018;
		public const uint16 timer1_compB = 0x001A;
		public const uint16 timer1_OVF = 0x001C;
		
		public const uint16 timer0_comp = 0x001E;
	}
	
	//ջָ
	public uint8 SP_LOW	= #addr 0x5d;
	public uint8 SP_HIGH	= #addr 0x5e;
	public uint16 SP		= #addr 0x5d;  // 16 bit access
	
	//״̬Ĵ
	public uint8 SREG		= #addr 0x5f;
	
	//˿
	public uint8 PINA		= #addr 0x39;
	public uint8 DDRA		= #addr 0x3A;
	public uint8 PORTA	= #addr 0x3B;
	
	public uint8 PINB		= #addr 0x36;
	public uint8 DDRB		= #addr 0x37;
	public uint8 PORTB	= #addr 0x38;
	
	public uint8 PINC		= #addr 0x33;
	public uint8 DDRC		= #addr 0x34;
	public uint8 PORTC	= #addr 0x35;
	
	public uint8 PIND		= #addr 0x30;
	public uint8 DDRD		= #addr 0x31;
	public uint8 PORTD	= #addr 0x32;
	
	public uint8 PINE		= #addr 0x21;
	public uint8 DDRE		= #addr 0x22;
	public uint8 PORTE	= #addr 0x23;
	
	public uint8 PINF		= #addr 0x20;
	public uint8 DDRF		= #addr 0x61;
	public uint8 PORTF	= #addr 0x62;
	
	public uint8 PING		= #addr 0x63;
	public uint8 DDRG		= #addr 0x64;
	public uint8 PORTG	= #addr 0x65;
	
	
	//ADת
	public uint8 ADCL	= #addr 0x24;
	public uint8 ADCH	= #addr 0x25;
	public uint8 ADCSRA	= #addr 0x26;
	public uint8 ADMUX	= #addr 0x27;
	
	public uint8 TIMSK	= #addr 0x57;
	public uint8 TIFR	= 	#addr 0x56;
	
	//ʱ/0
	public uint8 TCNT0	= #addr 0x52;
	public uint8 TCCR0	= #addr 0x53;
	public uint8 OCR0		= #addr 0X51;
	
	public uint8 OCR1AL	= #addr 0x4a;
	public uint8 OCR1AH	= #addr 0x4b;
	public uint8 TCNT1L	= #addr 0x4C;
	public uint8 TCNT1H	= #addr 0x4D;
	public uint8 TCCR1B	= #addr 0x4e;
	public uint8 TCCR1A	= #addr 0x4f;
	
	public uint8 MCUCR	= #addr 0x55;
	
	public uint8 EICRA	= #addr 0x6A;
	public uint8 EICRB 	= #addr 0x5A;
	public uint8 EIFR		= #addr 0x58;
	public uint8 EIMSK	= #addr 0x59;
	public uint8 ETIMSK	= #addr 0x7D;
	
	//ʱ3
	public uint8 TCCR3C	= #addr 0x8C;
	public uint8 TCCR3A	= #addr 0x8B;
	public uint8 TCCR3B	= #addr 0x8A;
	
	public uint8 TCNT3H	= #addr 0x89;
	public uint8 TCNT3L	= #addr 0x88;
	
	public uint8 OCR3AH	= #addr 0x87;
	public uint8 OCR3AL	= #addr 0x86;
	public uint8 OCR3BH	= #addr 0x85;
	public uint8 OCR3BL	= #addr 0x84;
	public uint8 OCR3CH	= #addr 0x83;
	public uint8 OCR3CL	= #addr 0x82;
	
	public uint8 ICR3H	= #addr 0x81;
	public uint8 ICR3L	= #addr 0x80;
	
	public uint8 XDIV		= #addr 0x5C;
	
	public uint8 XMCRA =	 #addr 0x6D;
	public uint8 XMCRB =	 #addr 0x6C;
}
















