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

📄 nnn.c

📁 HID汽车大灯安定器,应用现在的安定器上,有多种保护功能
💻 C
📖 第 1 页 / 共 2 页
字号:
if  (PIR1bits.TMR2IF)
          {PIR1bits.TMR2IF=0;   
//           if (gflag<20)  {PR2=0x9c; goto  fpra;}
//           prm+=1; PR2-=1;  if (prm>7) PR2+=2;      if (prm>14) {prm=0;PR2=0x9c;};
//fpra:;         
           }
//  PIR1=0;  PIR2=0;PIR3=0;   
}
//===================================================================

void  vadread ()
{
   ADCON0=0;
   ADCON1=0;
   ADCON2=0;
   ADCON1bits.PCFG3=1;
   ADCON1bits.PCFG1=1;
   ADCON1bits.PCFG0=1;   //配置AD模块.AN0~AN3.
   ADCON0=0;   //选择AD通道.
   ADCON2bits.ADFM=0;    
   ADCON2bits.ADQT=0b100;   //选择AD采集时间.   
   ADCON2bits.ADCS=0b100;   //选择AD转换时钟. 
   _ADMUX=4;
 //  IPR1bits.ADIP=1;    //AD优先处理.
   PIR1bits.ADIF=0;   
   PIE1bits.ADIE=0;    //允许AD中断
   PIR1bits.ADIF=0;  
   ADCON0bits.ADON=1;  //AD模块启动 
  ADCON0bits.GO=1;    //AD启动 
adl:;  ClrWdt();   if (ADCON0bits.GO==1)  goto  adl; 
  PIR1bits.ADIF=0; 
  adt0=ADRESH;
  PIR1bits.ADIF=0;
  _ADMUX=1;
   //ADCON2bits.ADQT=0b100;   //选择AD采集时间.   
   // ADCON2bits.ADCS=0b010;   //选择AD转换时钟.
   ADCON2bits.ADCS=0b101; 
    if  (pow_data>110)      ADCON2bits.ADCS=0b101;   //选择AD转换时钟. 
   PIR1bits.ADIF=0;   
   PIE1bits.ADIE=1;    //允许AD中断
   PIR1bits.ADIF=0;  
   ADCON0bits.ADON=1;  //AD模块启动 
   ADCON0bits.GO=1;    //AD启动
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//电源电压处理.
          vadtemp+=adt0; vadtc+=1;
          if (vadtc>3)  {vad=(unsigned char)((vadtemp+1)>>2); vadtc=0;vadtemp=0;}  
         //vad=adt0;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

}


//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo  
#include   "E:\HID18F24J10\cleanset.c" //初始化IO配置
//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo  
#include   "E:\HID18F24J10\chengxu.c" //初始化IO子程序控制.
#include   "E:\HID18F24J10\eoffpow.c" //错误关灯程序.   
#include   "E:\HID18F24J10\adreudely.c" //AD岩石滤波程序.
//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo  
void main(void)
{ 
    clean();
    intconl_set();
    ioset();qiaooff();
    inmantime=0;  
                 inmantime=0;
intmainlp:; qiaooff();  if (inmantime<2)   goto  intmainlp;   t1s=0;qiaoh();
       TRISA=0xff;    PORTA=LATA=0xff; 
    CMCON=0b01010001;
    CVRCON=0;
   // PIR2bits.CMIF=0;
   // PIE2bits.CMIE=0;
   // IPR2bits.CMIP=0;   
    PIR2bits.CMIF=0;
    PIE2bits.CMIE=1;
    IPR2bits.CMIP=0; 
    vadread (); pwmdata=0; inputpwm(); vadread ();vadread ();vadread ();vadread ();  qiaooff();
intmainlp2:; qiaooff(); vadread (); if (inmantime<3)   goto  intmainlp2;   t1s=0;qiaoh();

V_LOOP:;
       pow_data=0;kout=0;
       vadread ();
       pwmma=pow_set[pow_data];
       front=0; pass=0; 
    // if (vad>vmax_ma)     goto V_LOOP; // {setb1(error,vmaxf);};
    // if (vad<vmin_ma2)    goto V_LOOP; //{setb1(error,vminf);}; 
     if (vad>vmax_mah)    {setb1(error,vmaxf);};
     if (vad<vmin_ma2)   {setb1(error,vminf);}; 
fro:;
      vadread ();   adreudely(); in400V=0;
     if  (error)   {eoffpow(); goto  fro;} 
//  pwmdata=250;
//      inputpwm(); 
//  qiaooff();  vadread ();
//feo:;    goto feo;
while(1) 	 
	{        
nocinled:;   
     if  (uatim<50) goto  dke;    //100
     uatim=0;
     vadread (); 
     if  (adt0<vminma)  {setb1(error,vminf);}
     if  (error)      { eoffpow(); goto  main_out;} 
     if (vad<vmin_ma3)  pow_data=170;
dke:;
      pwmdatatb=43000/vad; if (pwmdatatb<620)  pwmdatat=pwmdatatb;   else  pwmdatat=620;
      uptime();//时间累加.  //if (t2ms<200)   goto nocinled; t2ms=0;  //PWM更新时间. 
      pwmma=pow_set[pow_data];
      if (qitim>120)    qitim=120;  
 //      if  (pow_data>130)   pass=200;     
//============================================================
      if (pass==0)  {gflag=0;qiaotime=0;}  else   {gflag+=1;if (gflag>250) gflag=250; }  //if (gflag<20) qiaotime=0; }     
//============================================================
      adreudely();  //AD岩石错误滤波程序.
     if  (error)      { eoffpow(); goto  main_out;} 
     if  (error!=0)   { eoffpow(); goto  main_out;}   
//============================================================
//功率启动
          if (pass)   goto   power_pid;   //已经开过.
//tytg3:    qiaooff();  if  (flag<3)       goto   tytg3;   flag=0;  powup2();             
//tytg8:    qiaooff();   if  (flag<3)      goto   tytg8;   flag=0;  powup2();
tytg34:   qiaoh();   if  (flag<3)      goto   tytg34;  flag=0;  powup2();    
tytg35:   qiaoh();  if  (flag<3)      goto   tytg35;  flag=0;  powup2();   
          pow_data=0;  qitim=0;
          pwmma=pow_set[pow_data];
//led_1:;    qiaooff();  setpwm(25); pwmdata=25;       if (t2ms<4000)  goto  led_1; t2ms=0;  //中功率启动
           qiaooff(); qiad=adt2;  qvad=adt1;  qiaooff(); flag=0; t2ms=0; 
//led_0:;   qiaooff();  setpwm(1);ClrWdt(); pwmdata=1;     if (t2ms<50)  goto  led_0; t2ms=0; 
//           flag=0;
  //        pwmtemp=250; flag=0;
        //   if (adt0>90) pwmtemp=200; 
        //   if (adt0>110) pwmtemp=150; 
   //       pwmtemp=270-adt0;
   //         if (adt0<65)  pwmtemp=250-adt0;
    vadread ();vadread ();vadread ();vadread ();vadread ();vadread ();vadread ();vadread ();
         pwmtemp=35500/vad;//adt0;  //热灯功率
          t2ms=0;
   //       if (adt1>150)  goto tytg0;
led_0:;   qiaoh();   if (adt1>180)    pwmtemp=0;
          setpwm(pwmtemp);
          ClrWdt();       if (t2ms<4)  goto  led_0; t2ms=0; 
tytg01:   if  (flag<3)      goto   tytg01; 
          if  (adt1<60)    {setb1(error,qvmaxf);}
          if  (error)   {eoffpow(); goto  main_out;} 
           flag=0;
tytg0:        if  (flag<3)      goto   tytg0; 
             pwmtemp=35500/vad;  //adt0;  //热灯功率            
          setpwm(pwmtemp); ClrWdt();pwmdata=pwmtemp; t2ms=0;  tpms=0;
led_2:;   qiaooff();  powup();              
          if  (adt1<60)      goto gfu;
          if (tpms<200)  goto  led_2; t2ms=0;  //大功率启动  // if (t2ms<200)  goto  led_2; t2ms=0;  //大功率启动
         //--------------------------
          if  (adt1>99)    {setb1(error,qvmaxf);}
          if  (error)   {eoffpow(); goto  main_out;} 
gfu:;
          pwmtemp=32000/vad;  //冷灯功率   pwmtemp=11500/adt0;  /
          pwmdatak=pwmtemp;
                 setpwm(pwmtemp); ClrWdt();pwmdata=pwmtemp; 
        pwmdatatb=42000/vad; if (pwmdatatb<620)  pwmdatat=pwmdatatb;   else  pwmdatat=620;
    
 //--------------------------------------------------------------------------------------------
//          flag=0; 
//tytg1:     if  (flag<3)      goto   tytg1; 
//         qiaooff(); qiad=adt2;  qvad=adt1;  qiaooff(); flag=0; t2ms=0;
//          pwmb=pwmtemp;powup(); powup(); 
//          pwmtemp-=pwmb>>7;
////led_3:;   qiaooff();  powup(); ClrWdt();   if (t2ms<200)  goto  led_3; t2ms=0;
//tytg2:     if  (flag<3)      goto   tytg2;  pass=0;
//         qiaooff(); qiad=(unsigned char)(((unsigned int)adt2+(unsigned int)qiad)>>1);  qvad=(unsigned char)(((unsigned int)adt1+(unsigned int)qvad)>>1);  qiaooff();flag=0;t2ms=0;
//         pwmb=pwmtemp;powup(); powup(); 
//          pwmtemp-=pwmb>>7;  powup(); powup();qitim=0;
//led_4:;   qiaooff();  powup(); ClrWdt(); setpwm(pwmtemp); pwmdata=pwmtemp;     if (t2ms<220)  goto  led_4; t2ms=0; 
         //    pow_data=0;pwmma=pow_set[pow_data]; pass=20;t2ms=0;
             pow_data=50;  if (vad<vmin_ma3)  pow_data=170; pwmma=pow_set[pow_data]; pass=20;
             tpms=0;
led_0n:;   qiaooff(); powup(); //if (pwmdatak>pwmdata)  pwmdata=pwmdatak;
        if (tpms<25)  goto  led_0n;
                                       //if  (adt1<20)    {setb1(error,qvmaxf);}  if  (error)   {eoffpow(); goto  main_out;}
          pwmtemp=35000/vad;  //冷灯功率   pwmtemp=11500/adt0;  /
          pwmdatak=pwmtemp;
         //        setpwm(pwmtemp); ClrWdt();pwmdata=pwmtemp;
         t2ms=0;tpms=0; //低桥40mS          
led_0m:;   qiaoh(); qiaotime=0;  powup(); //if (pwmdatak>pwmdata)  pwmdata=pwmdatak;
          if (tpms<25)  goto  led_0m; t2ms=0;tpms=0; //高桥40mS
          pass=0; qiaooff();
tytg36:   qiaooff();  if  (flag<3)      goto   tytg36;  flag=0;  powup2();
tytg37:   qiaooff();  if  (flag<3)      goto   tytg37;  flag=0;  powup2();
tytg38:   qiaooff();  if  (flag<3)      goto   tytg38;  flag=0;  powup2();
//tytg39:   qiaooff();  if  (flag<3)      goto   tytg39;  flag=0;  powup2();
//tytg3a:   qiaooff();  if  (flag<3)      goto   tytg3a;  flag=0;  powup2();
//tytg3b:   qiaooff();  if  (flag<3)      goto   tytg3b;  flag=0;  powup2();
       //  qiaooff(); qiad=(unsigned char)(((unsigned int)adt2+(unsigned int)qiad)>>1);  qvad=(unsigned char)(((unsigned int)adt1+(unsigned int)qvad)>>1);  qiaooff();flag=0;
       // powup(); powup(); 
        if  (advm>qvmax_ma)   {setb1(error,qvmaxf);}   //桥高压,灯开路或者有故障.
        if  (advm<5)          {setb1(error,qimaxf);} 
        if  ( (advm<11)&&(adim>250) ) {setb1(error,qimaxf);}  //180
       // if  (qiad>qimax_ma)   {setb1(error,qimaxf);}   //桥过流,灯短路或者有故障.  
        if  (error)   { eoffpow(); goto  main_out;}    //点灯出错.  
        flag=0;
                                   // pwmtemp-=pwmb>>5; setpwm(pwmtemp);
//       t2ms=0;  powup();  pwmdata=pwmtemp;
//led_4h:; qiaooff(); powup2();   uptime();     if (t2ms<180)  goto  led_4h; t2ms=0;   
//led_4p:;  powup2();   uptime();     if (t2ms<200)  goto  led_4p; t2ms=0;
//led_4v:;  powup2();   uptime();     if (t2ms<200)  goto  led_4v; t2ms=0;
//led_4m:;  powup2();   uptime();     if (t2ms<200)  goto  led_4m; t2ms=0;
//led_4n:;  powup2();   uptime();     if (t2ms<200)  goto  led_4n; t2ms=0;
   //          if  (flag==3)  {powup();flag=0;}
   //               if  ( (advm<12)&&(adim>200) ) {setb1(error,qimaxf);}  //180
                     pow_data=0;  qitim=0;
      qiad=adt2;  qvad=adt1;
       if  (qvad<5)  pow_data=0;
       if  (qvad<=32)  pow_data=qvad-10;
       if  (qvad>32)  pow_data=80;    
       if  (qvad>40) pow_data=150; 
 if (vad<vmin_ma3)  pow_data=170;
       pwmma=pow_set[pow_data];


//         if  (qvad>45) goto lrr;

//           t2ms=0; 
//led_50v:;     if ((fmm>5)&&(flag==3))   {fmm=0; if  (power>pwmma) pwmdata-=1;  else   pwmdata+=1;  }
//              if  (flag==3)  {powup2();powup2();flag=0;}  
//             inputpwm();uptime(); ClrWdt(); 
//             if  (pwmdata<80)   {pwmdata=80;};   if (pwmdata>430)   {pwmdata=430;};
//             if (t2ms<7000)  goto  led_50v; t2ms=0; 
//led_60v:;     if ((fmm>400)&&(flag==3))   {fmm=0; if  (power>pwmma) pwmdata-=1;  else   pwmdata+=1;  }
//              if  (flag==3)  {powup2();powup2();flag=0;}  
//             inputpwm();uptime(); ClrWdt(); 
//             if (t2ms<7000)  goto  led_60v; t2ms=0; 
//led_70v:;    power=adim*advm;pwmw.hl[0]=PRODL;pwmw.hl[1]=PRODH; power=pwmw.m;    if  (flag==3)  {powup();powup();flag=0;}  uptime(); ClrWdt();     if (fmm>200) {fmm=0; if  (power>pwmma) {pwmdata-=1;inputpwm();} else {pwmdata+=1;inputpwm();goto led_80v;}}    if (t2ms<5000)  goto  led_70v; t2ms=0; 
//led_80v:;    power=adim*advm;pwmw.hl[0]=PRODL;pwmw.hl[1]=PRODH; power=pwmw.m;    if  (flag==3)  {powup();powup();flag=0;}  uptime(); ClrWdt();     if (fmm>500) {fmm=0; if  (power>pwmma) {pwmdata-=1;inputpwm();} else {pwmdata+=1;inputpwm();goto led_90v;}}    if (t2ms<5000)  goto  led_80v; t2ms=0; 
//led_90v:;    power=adim*advm;pwmw.hl[0]=PRODL;pwmw.hl[1]=PRODH; power=pwmw.m;    if  (flag==3)  {powup();powup();flag=0;}  uptime(); ClrWdt();     if (fmm>500) {fmm=0; if  (power>pwmma) {pwmdata-=1;inputpwm();} else {pwmdata+=1;inputpwm();goto led_100v;}}   if (t2ms<5000)  goto  led_80v; t2ms=0; 
//led_100v:;
lrr:;
       pass=20;   //正常启动.  
//============================================================
//功率启动调节   
power_pid:;    
    if  (flag==3)  {powup();flag=0;}   //180
    if  ( (advm<12)&&(adim>240) )   { koutb+=1; if (koutb>150) setb1(error,qimaxf);}  else {if(koutb!=0) koutb-=1; }  //桥过流,灯短路或者有故障.  
   //    if  ( (advm<30)&&(adim<7) )     { koutc+=1; if (koutc>200) setb1(error,qimaxf);}  else {if(koutc!=0) koutc-=1; }  //桥故障,灯开路或者有故障.  
    if  (advm>qvmax_ma)   { kout+=1; if (kout>100) setb1(error,qimaxf);}  else {if(kout!=0)   kout-=1; }
    if  (error)   { eoffpow(); goto  main_out;}    //点灯出错. 
    if  (qvad>qvmax_ma)  {eoffpow();qiaooff();setpwm(0);pt50ms=0;pow_data=0;pass=0;front=0;};                  
//============================================================ 
main_out:; 
//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo  
 ClrWdt(); 
	 };
}

⌨️ 快捷键说明

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