?? rf_main.c
字號:
unsigned char commande_receive(void){
if(header_code_flag){
for(data_bit_number=0;data_bit_number!=64;){
while(P_IOA_bit0);//wait low signal
P_TMR1_PreloadHi=0;
P_TMR1_Preload=0;
P_TMR0_1_Ctrl0|=64;//#%01000000 TMR1 fsys/32 start count
while(P_IOA_bit0==0){//wait high signal
if(logic_time_overflow_error){
nop_instruction();
nop_instruction();
P_TMR0_1_Ctrl0&=3;// #%000000011 TMR1 pause count !
nop_instruction();
nop_instruction();
logic_time_overflow_error=0;
HEADER_CODE_SIGNAL_ERROR();
return 0;
}
}
counter_time=(unsigned int)P_TMR1_Preload;
counter_time|=((unsigned int)P_TMR1_PreloadHi)<<8;
P_TMR0_1_Ctrl0&=3;// #%000000011 TMR1 pause count !
//=============================================================================
if((400<counter_time)&&(counter_time<1200)){
HEADER_CODE_SIGNAL_RIGHT();
return 0;
}
//=============================================================================
if((counter_time<MIN_logic_estimate_time)||(counter_time>MAX_logic_estimate_time)){
//data signal logic error
HEADER_CODE_SIGNAL_ERROR();
return 0;
}
//=============================================================================
if(data_number==1)goto data1_estimate;
if(data_number==2)goto data2_estimate;
if(data_number==3)goto data3_estimate;
if(data_number==4)goto data4_estimate;
if(data_number==5)goto data5_estimate;
if(data_number==6)goto data6_estimate;
if(data_number==7)goto data7_estimate;
if(data_number==8)goto data8_estimate;
break;
//=============================================================================
data1_estimate:
if(counter_time>logic_estimate_time){
setbit(data1,7);
}else{
clrbit(data1,7);
}
++data_bit_number;
++displacement_number;
if(displacement_number==8){
displacement_number=0;
++data_number;
}else{
data1>>=1;
}
goto estimate_end;
//=============================================================================
data2_estimate:
if(counter_time>logic_estimate_time){
setbit(data2,7);
}else{
clrbit(data2,7);
}
++data_bit_number;
++displacement_number;
if(displacement_number==8){
displacement_number=0;
++data_number;
}else{
data2>>=1;
}
goto estimate_end;
//=============================================================================
data3_estimate:
if(counter_time>logic_estimate_time){
setbit(data3,7);
}else{
clrbit(data3,7);
}
++data_bit_number;
++displacement_number;
if(displacement_number==8){
displacement_number=0;
++data_number;
}else{
data3>>=1;
}
goto estimate_end;
//=============================================================================
data4_estimate:
if(counter_time>logic_estimate_time){
setbit(data4,7);
}else{
clrbit(data4,7);
}
++data_bit_number;
++displacement_number;
if(displacement_number==8){
displacement_number=0;
++data_number;
}else{
data4>>=1;
}
goto estimate_end;
//=============================================================================
data5_estimate:
if(counter_time>logic_estimate_time){
setbit(data5,7);
}else{
clrbit(data5,7);
}
++data_bit_number;
++displacement_number;
if(displacement_number==8){
displacement_number=0;
++data_number;
}else{
data5>>=1;
}
goto estimate_end;
//=============================================================================
data6_estimate:
if(counter_time>logic_estimate_time){
setbit(data6,7);
}else{
clrbit(data6,7);
}
++data_bit_number;
++displacement_number;
if(displacement_number==8){
displacement_number=0;
++data_number;
}else{
data6>>=1;
}
goto estimate_end;
//=============================================================================
data7_estimate:
if(counter_time>logic_estimate_time){
setbit(data7,7);
}else{
clrbit(data7,7);
}
++data_bit_number;
++displacement_number;
if(displacement_number==8){
displacement_number=0;
++data_number;
}else{
data7>>=1;
}
goto estimate_end;
//=============================================================================
data8_estimate:
if(counter_time>logic_estimate_time){
setbit(data8,7);
}else{
clrbit(data8,7);
}
++data_bit_number;
++displacement_number;
if(displacement_number==8){
displacement_number=0;
data_number=1;
receive_done_YN=1;
}else{
data8>>=1;
}
estimate_end:
nop_instruction();
nop_instruction();
}
//=============================================================================
if(receive_done_YN){
header_code_flag=0;
data_number=1;
receive_done_YN=0;
displacement_number=0;
return 1;
}
}else{
P_TMR0_1_Ctrl0&=3;// #%000000011 pause count
P_TMR1_PreloadHi=0;
P_TMR1_Preload=0;
while(P_IOA_bit0);//wait low signal(header code)
P_TMR0_1_Ctrl0|=64;//#%01000000 TMR1 fsys/32 start count
while(P_IOA_bit0==0){//wait high signal
nop_instruction();
nop_instruction();
if(logic_time_overflow_error){
nop_instruction();
nop_instruction();
P_TMR0_1_Ctrl0&=3;// #%000000011 TMR1 pause count !
nop_instruction();
nop_instruction();
nop_instruction();
logic_time_overflow_error=0;
HEADER_CODE_SIGNAL_ERROR();
return 0;
}
}
counter_time=(unsigned int)P_TMR1_Preload;
counter_time|=((unsigned int)P_TMR1_PreloadHi)<<8;
P_TMR0_1_Ctrl0&=3;// #%000000011 TMR1 pause count !
if((400<counter_time)&&(counter_time<1200)){
HEADER_CODE_SIGNAL_RIGHT();
return 0;
}else{
HEADER_CODE_SIGNAL_ERROR();
return 0;
}
}
}
//**************************************************************
//********************HEADER_CODE_SIGNAL_RIGHT******************
//**************************************************************
void HEADER_CODE_SIGNAL_RIGHT(void){
header_code_flag=1;
displacement_number=0;
data_number=1;
counter_time>>=2;
MAX_logic_estimate_time=counter_time;
counter_time>>=1;
MIN_logic_estimate_time=counter_time;
logic_estimate_time=counter_time;
counter_time>>=1;
logic_estimate_time+=counter_time;
MAX_logic_estimate_time+=counter_time;
MIN_logic_estimate_time-=counter_time;
counter_time=0;
}
//**************************************************************
//********************HEADER_CODE_SIGNAL_ERROR******************
//**************************************************************
void HEADER_CODE_SIGNAL_ERROR(void){
header_code_flag=0;
P_TMR1_PreloadHi=0;
P_TMR1_Preload=0;
data_number=1;
displacement_number=0;
}
//**************************************************************
//************************commande verify***********************
//**************************************************************
void commande_verify(void){
unsigned char commande_parameter;
if((data1|data5)==255){
if((data2|data6)==255){
if((data3|data7)==255){
if((data4|data8)==255){
commande_parameter=data4;
commande_parameter&=240;
data4&=15;
if(data1!=SERIAL_NO1)return;
if(data2!=SERIAL_NO2)return;
if(data3!=SERIAL_NO3)return;
if(data4!=SERIAL_NO4)return;
if(commande_parameter==16){
if(key_code_number!=1){
temp_pa&=5;//0000 0101
P_IOA_Data=temp_pa;
setbit(temp_pa,7);
P_IOA_Data=temp_pa;
key_code_number=1;
buzzer_high=95;//190ms
buzzer_low=115;//230ms
buzzer_again=1;
sound_out_YN=0;
buzzer_time=0;
sensitive_grade_change_EN=0;
loop_times=0;
sensitive_grade_select_EN=0;
sensitive_grade=sensitive_loop;
commande_key4_run_flag=0;
}
return;
}
if(commande_parameter==32){
if(key_code_number!=2){
temp_pa&=5;
P_IOA_Data=temp_pa;
setbit(temp_pa,6);
P_IOA_Data=temp_pa;
key_code_number=2;
buzzer_high=95;//190ms
buzzer_low=95;//190ms
buzzer_again=2;
sound_out_YN=0;
buzzer_time=0;
loop_times=0;
}
return;
}
if(commande_parameter==64){
if(key_code_number!=3){
temp_pa&=5;
P_IOA_Data=temp_pa;
setbit(temp_pa,5);
P_IOA_Data=temp_pa;
key_code_number=3;
buzzer_high=15000;//30s
buzzer_low=10;//20ms
buzzer_again=1;
sound_out_YN=0;
buzzer_time=0;
loop_times=0;
}
return;
}
if(commande_parameter==128){
temp_pa&=5;
P_IOA_Data=temp_pa;
setbit(temp_pa,4);
P_IOA_Data=temp_pa;
commande_key4_YN=1;
if(commande_key4_run_flag==0){
if(sensitive_grade_select_EN){
commande_key4_run_flag=1;
buzzer_high=95;//190ms
buzzer_low=95;//190ms
buzzer_again=sensitive_grade;
sound_out_YN=0;
sensitive_loop=sensitive_grade;
buzzer_time=0;
loop_times=0;
}
}
}
}
}
}
}else{
commande_parameter=0;
}
}
//**************************************************************
//************************sensitive adjust**********************
//**************************************************************
void sensitive_adjust(void){
if((sensitive_grade_select_EN)&&(commande_key4_run_flag)){
if(sensitive_grade_change_EN){
if(sensitive_loop!=4){
++sensitive_loop;
}else{
sensitive_loop=1;
}
sensitive_grade_change_EN=0;
if(sensitive_loop!=sensitive_grade){
buzzer_high=95;//190ms
buzzer_low=95;//190ms
sound_out_YN=0;
buzzer_time=0;
loop_times=0;
buzzer_again=sensitive_loop;
}else{
sensitive_grade_select_EN=0;
nop_instruction();
sensitive_grade_change_EN=0;
nop_instruction();
commande_key4_run_flag=0;
}
}
}
}
//**************************************************************
//*******************warning commande parameter*****************
//**************************************************************
void warn_commande_parameter(void){
unsigned char x,y;
if(send_done_YN){
send_bit_number=0;
send_code_number=1;
send_done_YN=0;
warn_code1=SERIAL_NO1;
warn_code2=SERIAL_NO2;
warn_code3=SERIAL_NO3;
warn_code4=SERIAL_NO4;
warn_code4|=240;//1111 0000
warn_code5=~warn_code1;
GUARD_DONE_YN=0;
warn_code6=~warn_code2;
PREAMBLE_DONE_YN=0;
warn_code7=~warn_code3;
HEADER_DONE_YN=0;
warn_code8=~warn_code4;
wave_LOW_delay=1;
GUARD=0;
PREAMBLE=0;
HEADER=0;
return;
}
if(send_code_number==1)goto code1_case;
if(send_code_number==2)goto code2_case;
if(send_code_number==3)goto code3_case;
if(send_code_number==4)goto code4_case;
if(send_code_number==5)goto code5_case;
if(send_code_number==6)goto code6_case;
if(send_code_number==7)goto code7_case;
if(send_code_number==8)goto code8_case;
code1_case:
x=warn_code1;
y=1;
goto DELAY_X;
CODE1_BK:
warn_code1=x;
goto DELAY_PARAMETER_BK;
code2_case:
x=warn_code2;
y=2;
goto DELAY_X;
CODE2_BK:
warn_code2=x;
goto DELAY_PARAMETER_BK;
code3_case:
x=warn_code3;
y=3;
goto DELAY_X;
CODE3_BK:
warn_code3=x;
goto DELAY_PARAMETER_BK;
code4_case:
x=warn_code4;
y=4;
goto DELAY_X;
CODE4_BK:
warn_code4=x;
goto DELAY_PARAMETER_BK;
code5_case:
x=warn_code5;
y=5;
goto DELAY_X;
CODE5_BK:
warn_code5=x;
goto DELAY_PARAMETER_BK;
code6_case:
x=warn_code6;
y=6;
goto DELAY_X;
CODE6_BK:
warn_code6=x;
goto DELAY_PARAMETER_BK;
code7_case:
x=warn_code7;
y=7;
goto DELAY_X;
CODE7_BK:
warn_code7=x;
goto DELAY_PARAMETER_BK;
code8_case:
x=warn_code8;
y=8;
goto DELAY_X;
CODE8_BK:
warn_code8=x;
goto DELAY_PARAMETER_BK;
DELAY_X:
if(testbit(x,7)){
wave_LOW_delay=2;
wave_HI_delay=1;
}else{
wave_HI_delay=2;
wave_LOW_delay=1;
}
++send_bit_number;
if(send_bit_number==8){
send_bit_number=0;
++send_code_number;
if(send_code_number==9){
send_done_YN=1;
}
}else{
x<<=1;
}
if(y==1)goto CODE1_BK;
if(y==2)goto CODE2_BK;
if(y==3)goto CODE3_BK;
if(y==4)goto CODE4_BK;
if(y==5)goto CODE5_BK;
if(y==6)goto CODE6_BK;
if(y==7)goto CODE7_BK;
if(y==8)goto CODE8_BK;
nop_instruction();
DELAY_PARAMETER_BK:
nop_instruction();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -