
unit ADbasic
{
	public link unit PORT {}
	const uint8 channel = PORT.AD_INDEX;
	
	public const int32 MinValue = 0;
	public const int32 MaxValue = 1000;
	
	//---------------------------------------------------
	//[i] function_void OS_init;
	public void OS_init()
	{
		PORT.D0_DIR = 0;
		PORT.D0_OUT = 0;
		#.MEGA644.ADCSRA = 0b1000_0011;  //8Ƶ
	}
	//---------------------------------------------------
	//[i] function_int32 get_data;
	public int32 get_data()
	{
		#.MEGA644.ADMUX = 0b0100_0000 + channel;
		#.MEGA644.ADCSRA.6(bit) = 1;
		while( #.MEGA644.ADCSRA.6(bit) == 1 ) {}
		
		uint16 data;
		data.0(uint8) = #.MEGA644.ADCL;
		data.8(uint8) = #.MEGA644.ADCH;
		
		uint32 d = data;
		
		return MinValue + (int)d * (MaxValue - MinValue) / 1024;
	}
}





