

	public void print_char( int32 d )
	{
		uint8 data = (uint)(int8)(int16)d;
		
		#asm "cli"
		
		//发送起始位
		TX_OUT = 0;
		
		loop( BitTick ) {
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
		}
		
		loop( 8 ) {
			TX_OUT = data.0(bit);
			data >> 1;
			loop( BitTick_C ) {
				#asm "NOP"
				#asm "NOP"
				#asm "NOP"
				#asm "NOP"
				#asm "NOP"
				#asm "NOP"
				#asm "NOP"
			}
		}
		//发送结束位
		TX_OUT = 1;
		loop( BitTick ) {
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
		}
		
		#asm "sei"
		
		//需要有等待时间
		loop( 8 ) {
		loop( BitTick ) {
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
		}
		}
	}
	
	//---------------------------------------------------
	//等待并接收一个数据
	//[i] function_int32 get_byte;
	public int32 get_byte()
	{
		uint8 data;
		
		#asm "cli"
		
		while( RX_IN == 1 ) {}
		
		loop( BitTick_D32 ) {
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
		}
		
		loop( 8 ) {
			data >> 1;
			data.7(bit) = RX_IN;
			loop( BitTick_C ) {
				#asm "NOP"
				#asm "NOP"
				#asm "NOP"
				#asm "NOP"
				#asm "NOP"
				#asm "NOP"
				#asm "NOP"
			}
		}
		
		//结束位
		//data.0(bit) = RX_IN;
		loop( BitTick ) {
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
			#asm "NOP"
		}
		
		#asm "sei"
		
		uint32 d = data;
		return (int)d;
	}
	
	