示例#1
0
//-----------------------------------------------
void UART_IN(void)
{
//static char flag;
char temp,i,count,index;
//int temp_int;
di();
count=rx_counter;
index=rx_wr_index;
ei();
if(count&&(rx_buffer[index_offset(index,-1)])==END)
	{
     temp=rx_buffer[index_offset(index,-3)];
    	if(temp<10)
    		{
    		if(control_check(index_offset(index,-1)))
    			{
    			rx_rd_index=index_offset(index,-3-temp);
    			for(i=0;i<temp;i++)
				{
				UIB[i]=rx_buffer[index_offset(rx_rd_index,i)];
				}
			rx_rd_index=index;
			rx_counter-=count;
			UART_IN_AN();
    			}
    		}

	}
//UART_IN_end:
//ei();
}
示例#2
0
//-----------------------------------------------
char control_check(char index)
{
char i=0,ii=0,iii;


if(rx_buffer[index]!=END) goto error_cc;

ii=rx_buffer[index_offset(index,-2)];
iii=0;
for(i=0;i<=ii;i++)
	{
	iii^=rx_buffer[index_offset(index,-2-ii+i)];
	}
if (iii!=rx_buffer[index_offset(index,-1)]) goto error_cc;


success_cc:
return 1;
goto end_cc;
error_cc:
return 0;
goto end_cc;

end_cc:
asm("nop");
}
示例#3
0
文件: main.c 项目: pal73/FAT32
//-----------------------------------------------
void uart_in(void)
{
char temp,i,count;
//#asm("cli")
//disableInterrupts();
if(rx_buffer_overflow)
	{
	rx_wr_index=0;
	rx_rd_index=0;
	rx_counter=0;
	rx_buffer_overflow=0;
	}    
	
if(rx_counter&&(rx_buffer[index_offset(rx_wr_index,-1)])==END)
	{
	//rx_offset++;
	//GPIOD->ODR^=(1<<4);
	//uart_out (3,CMND,1,33,mdr1/**(((char*)&temp_L)+1)*/,mdr2/**(((char*)&temp_L)+2)*/,mdr3/**(((char*)&temp_L)+3)*/);
	temp=rx_buffer[index_offset(rx_wr_index,-3)];
    	if(temp<100) 
    		{
		
    		if(control_check(index_offset(rx_wr_index,-1)))
    			{///uart_out (3,CMND,1,33,mdr1/**(((char*)&temp_L)+1)*/,mdr2/**(((char*)&temp_L)+2)*/,mdr3/**(((char*)&temp_L)+3)*/);
			//GPIOD->ODR^=(1<<4);
    			rx_rd_index=index_offset(rx_wr_index,-3-temp);
    			for(i=0;i<temp;i++)
				{
				UIB[i]=rx_buffer[index_offset(rx_rd_index,i)];
				} 
			rx_rd_index=rx_wr_index;
			rx_counter=0;
			
			/*if(UIB[1]==21)
				{
					char i;
				for(i=0;i<64;i++)
					{
						UIB[2+i]=rx_offset;
					}
				}*/
			uart_in_an();
/**/
    			}
 	
    		} 
    	}	

//#asm("sei") 
//enableInterrupts();
}
示例#4
0
文件: main.c 项目: pal73/FAT32
//-----------------------------------------------
char control_check(char index)
{
char i=0,ii=0,iii;

if(rx_buffer[index]!=END) return 0;

ii=rx_buffer[index_offset(index,-2)];
iii=0;
for(i=0;i<=ii;i++)
	{
	iii^=rx_buffer[index_offset(index,-2-ii+i)];
	}
if (iii!=rx_buffer[index_offset(index,-1)]) return 0;	

return 1;

}
示例#5
0
文件: ind3.c 项目: pal73/GAVT
//-----------------------------------------------
char control_check(char index)
{
char i=0,ii=0,iii;

if(rx_buffer[index]!=END) goto error_cc;
//else OUT(0x0b,0,0,0,0,0);
ii=rx_buffer[index_offset(index,-2)];
iii=0;
for(i=0;i<=ii;i++)
	{
	iii^=rx_buffer[index_offset(index,-2-ii+i)];
	}
if (iii!=rx_buffer[index_offset(index,-1)]) goto error_cc;	


success_cc:
return 1;
goto end_cc;
error_cc:
return 0;
goto end_cc;

end_cc:
}
//-----------------------------------------------
void UART_IN_AN(void)
{
char temp_char;
int temp_int;
signed long int temp_intL;
if(UIB[0]==CMND)
	{
     ccc1=UIB[1];
     ccc2=UIB[2];
     ccc3=UIB[3];
	}
}	
示例#6
0
文件: uart1_.c 项目: pal73/FAT32
@far @interrupt void UARTTxInterrupt (void) {
#else
void UARTTxInterrupt (void) interrupt 17 {
#endif

#ifdef _wrk_	
	
	if (tx_counter){
		--tx_counter;
		UART1->DR=tx_buffer[tx_rd_index];
		if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
	}
	else {
		bOUT_FREE=1;
		UART1->CR2&= ~UART1_CR2_TIEN;
	}
#endif	
}
/*
//-----------------------------------------------
char control_check(char index)
{
char i=0,ii=0,iii;

if(rx_buffer[index]!=END) goto error_cc;

ii=rx_buffer[index_offset(index,-2)];
iii=0;
for(i=0;i<=ii;i++)
	{
	iii^=rx_buffer[index_offset(index,-2-ii+i)];
	}
if (iii!=rx_buffer[index_offset(index,-1)]) goto error_cc;	


success_cc:
return 1;
//goto end_cc;
error_cc:
return 0;
//goto end_cc;

//end_cc:
//return 0;
}

//-----------------------------------------------
char index_offset (signed char index,signed char offset)
{
index=index+offset;
if(index>=RX_BUFFER_SIZE) index-=RX_BUFFER_SIZE; 
if(index<0) index+=RX_BUFFER_SIZE;
return index;
}
*/
#ifdef _wrk_
//-----------------------------------------------
void uart_in(void)
{
char temp,i,count;
//#asm("cli")
disableInterrupts();
if(rx_buffer_overflow)
	{
	rx_wr_index=0;
	rx_rd_index=0;
	rx_counter=0;
	rx_buffer_overflow=0;
	}    
	
if(rx_counter&&(rx_buffer[index_offset(rx_wr_index,-1)])==END)
	{
	//GPIOD->ODR^=(1<<4);
    temp=rx_buffer[index_offset(rx_wr_index,-3)];
    	if(temp<100) 
    		{
    		if(control_check(index_offset(rx_wr_index,-1)))
    			{
			//GPIOD->ODR^=(1<<4);
    			rx_rd_index=index_offset(rx_wr_index,-3-temp);
    			for(i=0;i<temp;i++)
				{
				UIB[i]=rx_buffer[index_offset(rx_rd_index,i)];
				} 
			rx_rd_index=rx_wr_index;
			rx_counter=0;
			uart_in_an();
/**/
    			}
 	
    		} 
    	}	

//#asm("sei") 
enableInterrupts();
} 
示例#7
0
文件: ind3.c 项目: pal73/GAVT
//-----------------------------------------------
void UART_IN(void)
{
//static char flag;
char temp,i,count;
//int temp_int;
#asm("cli")
//char* ptr;
//char i=0,t=0;
//int it=0;
//signed long int char_int;
//if(!bRXIN) goto UART_IN_end;
//bRXIN=0;
//count=rx_counter;
//OUT(0x01,0,0,0,0,0);
if(rx_buffer_overflow)
	{
	rx_wr_index=0;
	rx_rd_index=0;
	rx_counter=0;
	rx_buffer_overflow=0;
	}    
	
if(rx_counter&&(rx_buffer[index_offset(rx_wr_index,-1)])==END)
	{
     temp=rx_buffer[index_offset(rx_wr_index,-3)];
    	if(temp<10) 
    		{
    		if(control_check(index_offset(rx_wr_index,-1)))
    			{
    			rx_rd_index=index_offset(rx_wr_index,-3-temp);
    			for(i=0;i<temp;i++)
				{
				UIB[i]=rx_buffer[index_offset(rx_rd_index,i)];
				} 
			rx_rd_index=rx_wr_index;
			rx_counter=0;
			UART_IN_AN();

    			}
 	
    		} 
    	}	

UART_IN_end:
#asm("sei")     
} 

//-----------------------------------------------
void OUT (char num,char data0,char data1,char data2,char data3,char data4,char data5)
{
char i,t=0;
char UOB[10]; 
UOB[0]=data0;
UOB[1]=data1;
UOB[2]=data2;
UOB[3]=data3;
UOB[4]=data4;
UOB[5]=data5;
UOB[6]=0;
UOB[7]=0;
UOB[8]=0;
UOB[9]=0;
for (i=0;i<num;i++)
	{
	t^=UOB[i];
	}    
UOB[num]=num;
t^=UOB[num];
UOB[num+1]=t;
UOB[num+2]=END;

for (i=0;i<num+3;i++)
	{
	putchar(UOB[i]);
	}   	

}
示例#8
0
 void set_index(jint val) {
    int_field_put(index_offset(),val);
 }
示例#9
0
 jint index() {
   return int_field(index_offset());
 }