
link uint8 WDTCSR = #.MEGA328.WDTCSR;

//رտŹ
void CloseWatchdog()
{
	#asm "WDR"
	#.MEGA328.MCUSR = 0x00; //Źλ־
	
	//#.MEGA328.WDTCSR = 0b1001_1000;
	//#.MEGA328.WDTCSR = 0b0000_1000;
	
	#asm "LDI r31,0b00011000"
	#asm "STS &WDTCSR,r31"
	
	#asm "LDI r31,0b00000000"
	#asm "STS &WDTCSR,r31"
	//#asm "CBI &WDTCSR-0x20,3" //ָ
	
	//ӦĬϾ
	//#.MEGA328.MCUCR.4(bit) = 0;
	
	#.MEGA328.UCSR0B = 0;
}

// * ʱж
#define MACRO_TIMER_TICK interrupt 200 [#.MEGA328.WATCH.TIMER0_COMPA]

// * ж϶ʱӦ
#define MACRO_TIMER_ON() #.MEGA328.TIMSK0 | 0b0000_0010

// * رնʱжӦ
#define MACRO_TIMER_OFF() #.MEGA328.TIMSK0 & 0b1111_1101

	//---------------------------------------------------
	//ʱʼ
	void TimerInit()
	{
		//---------------------------------------------------
		//11.0592M,8Ƶ,Ƶ: 11059200 / 8 = 1382400
		//: 1382400 / 10000 = 138.24,ʱжƵΪ 10000 Hz
		//ģʽ
		//#.MEGA328.OCR0A = 138;
		
		//---------------------------------------------------
		//16M,8Ƶ,Ƶ: 16000000 / 8 = 2000000
		//: 2000000 / 10000 = 200,ʱжƵΪ 10000 Hz
		//ģʽ
		uint32 freq = $freq$;
		#.MEGA328.OCR0A = (uint8)(uint16)(freq / 80000) - $voffset$;
		
		//CTCģʽ ȽOCR0A
		#.MEGA328.TCCR0A = 0b0000_0010;
		//8Ƶ
		#.MEGA328.TCCR0B = 0b0000_0010;
		
		#.MEGA328.TCNT0 = 0;
		
		//ƥ־
		#.MEGA328.TIFR0 = 0b0000_0010;
		
		MACRO_TIMER_ON();
	}

