	
	uint8 TH;
	uint8 TL;
	uint8 thtick;
	
	//----------------------------------------------
	//[i] function_void play_tone int32;
	public void play_tone( int32 t )
	{
		#asm "cli"
		int16 n = (int16)t;
		uint16 data = tone_table[n];
		TH = data.8(uint8);
		TL = data.0(uint8);
		thtick = TH;
		#.MEGA328.TCNT2 = 255 - TL;
		#.MEGA328.TIMSK2 = 0B0000_0001;
		#asm "sei"
	}
	//----------------------------------------------
	//[i] function_void stop;
	public void stop()
	{
		#.MEGA328.TIMSK2 = 0B0000_0000;
		SOUND_OUT = 0;
	}
	//----------------------------------------------
	//ʱʼ
	// 16MHz, ƵΪ1, ƵΪ 16000000Hz
	void timer_init()
	{
		#.MEGA328.TCCR2A = 0B0000_0000;
		#.MEGA328.TCCR2B = 0B0000_0001;
		
		#.MEGA328.TIMSK2 = 0B0000_0000;
	}
	//----------------------------------------------
	//жϷ
	interrupt [#.MEGA328.WATCH.TIMER2_OVF]
	void timer2_compA()
	{
		thtick -= 1;
		if( thtick == 0 ) {
			SOUND_OUT = ~SOUND_OUT;
			thtick = TH;
			#.MEGA328.TCNT2 = 255 - TL;
		}
	}
	