

	basic.CLK = CLK;
	basic.DAT = DAT;
	basic.RST = RST;
	basic =
	#include "basic.txt"
	
	//±ʱϢ,ds1302()
	
	//[i] var_int32 year;
	public v_ds1302user int32 year =	#addr 0b1000_1100; 	//
	//[i] var_int32 month;
	public v_ds1302user int32 month =	#addr 0b1000_1000;	//·
	//[i] var_int32 day;
	public v_ds1302user int32 day =	#addr 0b1000_0110; 	//
	//[i] var_int32 hour;
	public v_ds1302user int32 hour =	#addr 0b1000_0100; 	//Сʱ
	//[i] var_int32 minute;
	public v_ds1302user int32 minute =	#addr 0b1000_0010;	//
	//[i] var_int32 second;
	public v_ds1302user int32 second =	#addr 0b1000_0000; 	//
	//[i] var_int32 week;
	public v_ds1302user int32 week =	#addr 0b1000_1010; 	//
	
	public v_ds1302 uint8 byte_second =		#addr 0b1000_0000; 	//ײ
	public v_ds1302 uint8 byte_control =	#addr 0b1000_1110; 	//
	public v_ds1302 uint8 byte_charge =		#addr 0b1001_0000; 	//
	
	//---------------------------------------------------
	//ʼ
	//[i] function_void OS_init;
	public void OS_init()
	{
		basic.OS_init();
		
		//ʼ, עҪд
		byte_control = 0x00;
		byte_second = byte_second & 0B0111_1111;
		byte_charge = 0B1010_1011;
		byte_control = 0x80;
		
		OS_time = 50;
		last_time = 0;
		OS_EventFlag = 0;
		
		isSafe = true;
	}
	//---------------------------------------------------
	//[i] function_void OS_run;
	public void OS_run()
	{
		if( !isSafe ) return;
		
		uint8 current_time = basic.get_uint8( 0b1000_0000 );
		if( last_time != current_time ) {
			OS_EventFlag.0(bit) = 1;
			last_time = current_time;
		}
	}
	
	//---------------------------------------------------
	void set_uint32( uint8 addr, uint32 data0 )
	{
		//ͨȡͬݵ 20XX ǰ׺Ҳȥ
		data0 % 100;
		
		uint8 data = (uint8)(uint16)data0;
		uint8 d = (data/10) << 4 + data%10;
		
		isSafe = false;
		byte_control = 0x00;
		basic.set_uint8( addr, d );
		byte_control = 0x80;
		isSafe = true;
	}
	uint32 get_uint32( uint8 addr )
	{
		isSafe = false;
		uint8 d = basic.get_uint8( addr );
		isSafe = true;
		
		d = (d>>4)*10 + d&0x0f;
		if( addr == 0b1000_1100 ) {
			return 2000 + d;
		} else {
			return d;
		}
	}
	//---------------------------------------------------
	//,ds1302ж,дӿָbasic
	memory v_ds1302
	{
		target = basic;
		type = [ uint8 ] uint8;
	}
	//,ds1302ж,дӿָ
	memory v_ds1302user
	{
		type = [ uint8 ] uint32;
	}



