
//ʱ
unit timer
{
	public link void time_tick_event() {}
	
	//---------------------------------------------------
	//ʱʼ
	// 11059200Hz, ƵΪ1, ƵΪ 11059200Hz
	//ֵΪ 4 * 256 + 106 = 1106
	//жƵΪ 11059200Hz / 1106 = 10000Hz
	
	public void init()
	{
		//ģʽ
		#.MEGA644.TCCR1A = 0;
		#.MEGA644.TCCR1B = 0b0000_1001;
		//MCU.OCR1A = 1106;//ʱ:10uS
		uint16 d = 1170;//1106; //2013.11.22֮ǰ
		#.MEGA644.OCR1AH = d.8(uint8);//ʱ:10uS
		#.MEGA644.OCR1AL = d.0(uint8);//ʱ:10uS
		//رж
		#.MEGA644.TIMSK1 & 0B1111_1101;
		//ж
		#.MEGA644.TIFR1 = 0b0000_0010;
	}
	//---------------------------------------------------
	public void open_interrupt()
	{
		#.MEGA644.TCNT1H = 0;
		#.MEGA644.TCNT1L = 0;
		#.MEGA644.TIMSK1 | 0B0000_0010;
	}
	//---------------------------------------------------
	public void close_interrupt()
	{
		#.MEGA644.TIMSK1 & 0B1111_1101;
	}
	//---------------------------------------------------
	//жϷ
	interrupt[ #.MEGA644.WATCH.TIMER1_COMPA ]
	void timer1_compA()
	{
		time_tick_event();
	}
}











