⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 仪器源码->基MSP430 OPEN/SHORT C代码,已成功用于工业自动控制 本仪器适应于各种邦定IC电路测试
💻 C
📖 第 1 页 / 共 3 页
字号:
    unsigned char a,b;
    a=(study[i2*16+i]&0xff00)>>8;
    b=study[i2*16+i]&0xff;
    write_buff[i*2]=a;
    write_buff[i*2+1]=b;
   }
   PageWrite(i2*32);
 }   
}


void study_check(void)
{
 unsigned char i,i1;
  unsigned int i3;
  send_result(0,0);//清电脑上一次的结果
  open_count=0;
  short_count=0;
  i1=0;
  for(i=0;i<=10;i++) 
  pin_power_wrong[i]=0;
  
  for(i=1;i<=max_pin;i++)
  {
    if(i==1) init_adc_b();
    if(i==17) init_adc();
    low_select(i);//当前测脚拉高,其它脚拉低
    analog_switch_select(i); //模拟开关选择       
    for(i3=0;i3<3000;i3++);
    start_ad();//起动AD转换
    while(ad_count==0); //等待数据采集完毕
    ad_count=0;//采集标志置零,为下一次采集作准备
    check_result=checkb(i); 
    if(check_result==1)
    {  
       unsigned char flag=0; 
       int ok;
       for(ok=0;ok<40;ok++)
       {
          if(open[ok]==i) flag=1;       
       }
       for(ok=0;ok<40;ok++)
       {
          if(Short[ok]==i) flag=1;           
       }     
    
       if(flag==0)
      {   
       pin_power_wrong[i1]=i;
       if(i1<=10) i1++;
      }
    }
    
   }

  i1=0;
   for(i=0;i<40;i++)
   {
    if(open[i]!=0)
    {
      open[i1]=open[i];
      if(i==i1)
      {
      }
      else
      {
        open[i]=0;
      }
      i1++;
    }
   }   



}



void find_short_test(void)
{
  unsigned char i,i1,i2,i3,group=0,ad_result;
  i3=i3;
  for(i=0;i<10;i++)
  {
    Short_grup1[i]=0;
    Short_grup2[i]=0;
    Short_grup3[i]=0;
    Short_grup4[i]=0;
    Short_grup5[i]=0;              
    Short_grup6[i]=0;
    Short_grup7[i]=0;
    Short_grup8[i]=0;
    Short_grup9[i]=0;
    Short_grup10[i]=0;                  
  }
  
  
  for(i=0;i<32;i++)
  {
    if(pin_power_wrong[i]==0)
    {
       i=50;
    }
    else
    { 
       
       group++;
       i2=0;
       
       
       
       
       ad_select_send(pin_power_wrong[i]); 


       for(i1=0;i1<max_pin;i1++)
       {  
          unsigned int i3;
          
     // if((i1+1)!=pin_power_wrong[i])
     // {   
          cmod_595_single_lower_inv(i1+1);
         // high_select(i1+1);
          
          for(i3=0;i3<200;i3++);
          start_ad();//起动AD转换
          while(ad_count==0); //等待数据采集完毕
          ad_count=0;//采集标志置零,为下一次采集作准备
          ad_result=check(1);
          if(ad_result==1)
          {
           switch(group)
           {
            case 1 :
                Short_grup1[i2++]=i1+1;
                break;
            case 2 :
               Short_grup2[i2++]=i1+1;
               break;      
            case 3 :
                Short_grup3[i2++]=i1+1;
                break;
            case 4 :
               Short_grup4[i2++]=i1+1;
               break;      
            case 5 :
                Short_grup5[i2++]=i1+1;
                break;
            case 6 :
               Short_grup6[i2++]=i1+1;
               break;      
            case 7 :
                Short_grup7[i2++]=i1+1;
                break;
            case 8 :
               Short_grup8[i2++]=i1+1;
               break;      
            case 9 :
                Short_grup9[i2++]=i1+1;
                break;
            case 10 :
               Short_grup10[i2++]=i1+1;
               break;            
            default: break;            
           }          

            for(i3=0;i3<36;i3++)
            {
               if(pin_power_wrong[i3]==i1+1) pin_power_wrong[i3]=0;
            }
          }
     //  } 
       
    }
    }  
  }

  i3=0;
  for(i=1;i<=32;i++)
  {
    if(pin_power_wrong[i-1]==0)
    {
    }  
    else
    {
        if(i3==(i-1))
        {
          i3++;
        }
        else
        {
        pin_power_wrong[i3]=pin_power_wrong[i-1];
        pin_power_wrong[i-1]=0;
        i3++;
        }
    }  
  }
  i2=0;
  for(i1=0;i1<32;i1++)
  {
    if(pin_power_wrong[i1]==0)
    {
       i1=50;
    }
    else
    {
       i2++;
    }
  }  
  
  if(Short_grup1[1]==0) 
  {
      pin_power_wrong[i2++]=Short_grup1[0];
      Short_grup1[0]=0;
  }
    
  if(Short_grup2[1]==0) 
  {
      pin_power_wrong[i2++]=Short_grup2[0];
      Short_grup2[0]=0;
  }  
  
  if(Short_grup3[1]==0) 
  {
      pin_power_wrong[i2++]=Short_grup3[0];
      Short_grup3[0]=0;
  }    
  
  if(Short_grup4[1]==0) 
  {
      pin_power_wrong[i2++]=Short_grup4[0];
      Short_grup4[0]=0;
  }    
    
  if(Short_grup5[1]==0) 
  {
      pin_power_wrong[i2++]=Short_grup5[0];
      Short_grup5[0]=0;
  }
  
  
/************************/  
    if(Short_grup6[1]==0) 
  {
      pin_power_wrong[i2++]=Short_grup6[0];
      Short_grup6[0]=0;
  }
    
  if(Short_grup7[1]==0) 
  {
      pin_power_wrong[i2++]=Short_grup7[0];
      Short_grup7[0]=0;
  }  
  
  if(Short_grup8[1]==0) 
  {
      pin_power_wrong[i2++]=Short_grup8[0];
      Short_grup8[0]=0;
  }    
  
  if(Short_grup9[1]==0) 
  {
      pin_power_wrong[i2++]=Short_grup9[0];
      Short_grup9[0]=0;
  }    
    
  if(Short_grup10[1]==0) 
  {
      pin_power_wrong[i2++]=Short_grup10[0];
      Short_grup10[0]=0;
  }
  
  
  
  
cmod_595_single_lower(0);
}



void check_power_pin(void)
{
  unsigned char i,i1,ad_result;
  unsigned char power_ok;
  power_ok=power_ok;
  power_pin[0]=16;  
  power_pin[1]=0;
  power_pin[2]=0;
  power_pin[3]=0;
  power_pin[4]=0;
  power_pin[5]=0;
  power_pin[6]=0;
  power_pin[7]=0;
  power_pin[8]=0;                
  power_pin[9]=0;      //最多设计10个电源脚            
  
  for(i=0;i<=10;i++)
  {
    if(power_pin[i]!=0)
    {  power_ok=0;
       high_select(power_pin[i]);
       for(i1=1;i1<=max_pin;i1++)
       {
          if(i1<=16) init_adc_b();
          if(i1>16) init_adc();              
          analog_switch_select(i1);
          start_ad();//起动AD转换
          while(ad_count==0); //等待数据采集完毕
          ad_count=0;//采集标志置零,为下一次采集作准备
          ad_result=check(1);  
          if(ad_result==0)
          {
            power_ok=1;
            i1=0xf0;
          }//if
       }//for
       if(power_ok==1)
       {
           power_pin_f[i]=1;
       }
       else
       {
           power_pin_f[i]=0;
       }
       
    }//if
  }//for


  if(power_pin[0]!=0 && power_pin_f[0]==1 )
   del_power_pin[0]=power_pin[0];
  else
   del_power_pin[0]=0;
  
  if(power_pin[1]!=0 && power_pin_f[1]==1 ) 
  del_power_pin[0]=power_pin[1];
  else
   del_power_pin[1]=0;
  
  if(power_pin[2]!=0 && power_pin_f[2]==1 ) 
  del_power_pin[0]=power_pin[2];
  else
   del_power_pin[2]=0;
  
  if(power_pin[3]!=0 && power_pin_f[3]==1 ) 
  del_power_pin[0]=power_pin[3];
  else
   del_power_pin[3]=0;
  
  if(power_pin[4]!=0 && power_pin_f[4]==1 ) 
  del_power_pin[0]=power_pin[4];
  else
   del_power_pin[4]=0;
  
  if(power_pin[5]!=0 && power_pin_f[5]==1 )
   del_power_pin[0]=power_pin[5];
  else
   del_power_pin[5]=0;
  
  if(power_pin[6]!=0 && power_pin_f[6]==1 ) 
  del_power_pin[0]=power_pin[6];
  else
   del_power_pin[6]=0;
  
  if(power_pin[7]!=0 && power_pin_f[7]==1 )
   del_power_pin[0]=power_pin[7];
  else
   del_power_pin[7]=0;

  if(power_pin[8]!=0 && power_pin_f[8]==1 )
   del_power_pin[0]=power_pin[8];  
  else
   del_power_pin[8]=0;
  if(power_pin[9]!=0 && power_pin_f[9]==1 )
   del_power_pin[0]=power_pin[9];
  else
   del_power_pin[9]=0;

}

unsigned char  check_test(void)
{
   if (Short_grup1[0]==0 && open[0]==0 && pin_power_wrong[0]==0)
      return 0;
   else
      return 0xff;
}

void find_open_test(void)  //open[]
{
  unsigned char i,i1,i2;
  unsigned char a;//,b,c;
  unsigned int delay;  
  unsigned int i3;
  open_count=0;
  short_count=0;
  for(i=1;i<=40;i++) open[i-1]=0;
  i2=0;
  for(i1=0;i1<32;i1++)
  {
    if(pin_power_wrong[i1]==0)
    {
       i1=50;
    }
    else
    {
       i2++;
    }
  }
  a=0;
  for(i=1;i<=i2;i++)
  {
        i3=pin_power_wrong[i-1];
        cmod_595_single_lower(i3);
        ad_select_send(i3); 
        for(delay=0;delay<3000;delay++);  
        start_ad();//起动AD转换
        while(ad_count==0); //等待数据采集完毕
        ad_count=0;//采集标志置零,为下一次采集作准备     
        check_result=check(1);
        if(check_result==2)
        {  
           open[a]=i3;
           pin_power_wrong[i-1]=0;
           a++;
        }
  }
  i3=0;
  for(i=1;i<=i2;i++)
  {
    if(pin_power_wrong[i-1]==0)
    {
    }  
    else
    {
        if(i3==(i-1))
        {
          i3++;
        }
        else
        {
        pin_power_wrong[i3]=pin_power_wrong[i-1];
        pin_power_wrong[i-1]=0;
        i3++;
        }
    }  
  }
  
  
}



void delay_n(unsigned char i)
{
   // int i3;
delay(10);   
 /*    switch(i)
     {
         case 1: 
              delay(10);
              break;
         case 2:
              delay(10);           
              break;                   
         case 43:
              delay(7);           
              break;                     
         case 44:
              delay(3);           
              break;   
         case 45:
              for(i3=0;i3<2000;i3++);          
              break;   
         case 46:
              for(i3=0;i3<2000;i3++);          
              break;                 
         default:          
              for(i3=0;i3<500;i3++);
             break;
     } */
}









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -