#include"m9402.h"
int t_k_flag;
int s_flag;
void p_mode_judge()
{
extern int initial[MAXTSK];
extern int mode_num;
static int ss_ts_o;
int ss_ts;
extern void ss_s();
extern void p_ir_s();
extern void ir_c();
extern void kaihi();
extern void t_kaihi();
extern int initial[MAXTSK];

if(initial[0]==10)
 {
  t_k_flag=1;
  ss_ts_o=sys9(3,1);
  initial[0]=1;
  }
ss_ts=sys9(3,1); 

if((ss_ts!=0)&&(ss_ts_o==0))
  {
   initial[0]=5;
   t_k_flag=0;
  }

 ss_ts_o=ss_ts;

if(t_k_flag==0)
   t_kaihi();
 else
 {
  if(sys9(1,1)!=0)
     mode_num=3;

  switch(mode_num)
   {
    case 1: ss_s();
            break;
    case 2: p_ir_s();
            break;
    case 3: ir_c();
            break;
    case 4: kaihi();
            break;
    default:mode_num=1;
            break;
   }
 }
}

unsigned long ir_s_count;

void p_ir_s()
{
extern struct pos
{
   int x ;           /* cm */
   int y ;           /* cm */
   int v ;           /* cm/sec */
   int theta ;       /* degree */
   int thetav ;      /* degree/sec */
   int way ;         /* cm */
}
rot_position_i ;

 extern unsigned char pwm_mode;
 extern unsigned int mmi_iivseg;
 static int p_ir_th_o;
 static int p_ir_mmi;
 static int p_ir_s_c;
 static int p_rot_posi_th;
 static char p_flag;
 int th;

if(initial[0]==3)
 {
  p_ir_th_o=(rot_position_i.theta % 90);
  p_flag=1;
  p_rot_posi_th=rot_position_i.theta;
  mmi_iivseg=1111;
 }
initial[0]=0;

th=(rot_position_i.theta % 90);
  if(p_flag==1)
   {
    if(((th-p_ir_th_o)<=40)&&((th-p_ir_th_o)>=-40))
          {
               pwm_mode=0x62;
           }
       else if(absl(p_rot_posi_th-rot_position_i.theta)<=20)
          initial[0]=3;
          
          else
             p_flag=2;
   }
  if(p_flag==2)
   {
    mmi_iivseg=2222;
    pwm_mode=0xf8;
   }
 p_ir_th_o=th;
}


ŠJ”­‹K–ñ‚É–ß‚é