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

📄 za.c

📁 HID汽车大灯安定器,应用现在的安定器上,有多种保护功能
💻 C
📖 第 1 页 / 共 2 页
字号:

//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
//   if  (INTCONbits.TMR0IF) //T0时间中断//400Hz产生.;1.5ms一次.
 //                      { INTCONbits.TMR0IF = 0; //TMR0L=85;//TMR1H=220;        //高位时间                    
 //--------------------------------------------------------------   
 //     temp2+=1;    
 ///    if (temp2>50) {PC0=0;} else  {PC0=1;}; 
  //    if (temp2>100) {temp2=0;};      
//--------------------------------------------------------------
                 //  if (qiaotime>2)  { qiaotime=4;   if (yh) {yh=0;PC1=1;PC0=0;} else  {yh=1;PC1=0;PC0=1;};}
//                        } 

                        } 
//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
                  // if     (!((PIR1bits.ADIF)||(PIR1bits.TMR1IF)||(INTCONbits.TMR0IF)))  {PIR1=0;PIR2=0;PIR3=0;INTCONbits.TMR0IF=0;};


 
#include   "E:\HIDdsp30pic\p30f2020.h" 

#include   "E:\HIDdsp30pic\marco.c"  
 //p30f2020PS.h"       
//#include "dsp.h"
//--------------------------Device Configuration------------------------       
/* Configuration Bit Settings */
//_FOSCSEL(FRC_PLL)
//_FOSC(CSW_FSCM_OFF & FRC_HI_RANGE & OSC2_CLKO)
//_FPOR(PWRT_128)
//_FGS(CODE_PROT_OFF)
//_FBS( BSS_NO_FLASH)
//_FOSC(CSW_FSCM_OFF & XT_PLL16);
//_FWDT(WDT_OFF);
//_FBORPOR(PBOR_ON & BORV_20 & PWRT_64 & MCLR_EN);
//----------------------------------------------------------------------
//ID2转用.
float ldd0  ; 
float ldd1  ; 
float ldd2  ; 
float ldd3  ; 
float ldd4  ; 
float ldd5  ; 
float ldd6  ; 
float ldd7  ; 
float ldd8  ; 
float ldd9  ; 
float ldd10  ; 
float ldd11  ; 
float ldd12  ;  
//=================================================================
//HID转用.
//-----------------------------------------------------------------------
//常数定义.
#define  vmax_ma  1140     //950       //983    //高压保护数据.18V    15V=800;
#define  vmin_ma  350        //480         //低压保护数据.  8V
#define  imax_ma  300        //灯短路保护.
#define  pwmmax    2000000        //PWM最大值限制.    PDC=(MAX,MIN)(PWM*VAD)
//#define  imin_ma  120000     //灯开路保护.(外部分中断计算)    //140 000次中断最佳.
//-----------------------------------------------------------------------
unsigned short   temp;
unsigned short   temp2; 
unsigned long    temp3; 
//-----------------------------------------------------------------------
unsigned char    qiaotime;
#define  qiaotime_set   60   //后面不能放任何标志.   
//-----------------------------------------------------------------------
unsigned char    func;
#define dengst   bit0
//-----------------------------------------------------------------------
unsigned char    error;  //错误数据定义.
#define vmaxf    bit0    //高压错误标志(可恢复)
#define vminf    bit1    //低压错误标志.(可恢复)
#define imaxf    bit2    //短路或者过流错误标志.(不可恢复)
#define iminf    bit3    //开路或者轻载错误标志.(不可恢复)
#define qvmaxf  bit4    //开路或者轻载错误标志.(不可恢复)
//-----------------------------------------------------------------------
unsigned char    ptpass;  
//-----------------------------------------------------------------------
unsigned long  vad_ad2;
unsigned long  qvad_ad;
unsigned long  qiad_ad;
unsigned short resdata; 
unsigned short  qiad;
unsigned short  qvad;
unsigned short  vad2;
unsigned char  pow_data;
unsigned char   ad_lu1;
unsigned char   ad_lu2;
unsigned short  qvadold;
unsigned long   power;  
unsigned char    pt50ms;
unsigned long   vad_ew;
unsigned short  vad_count;
unsigned short  vad; 
unsigned short  tim; 
unsigned short  i_count;
unsigned long   imax; 
unsigned short   iad; 
unsigned short   pdata;  
//unsigned long    int_res;
//unsigned char    int_time;
//unsigned long    int_bak; 
//unsigned short  vv_count;
//unsigned long   vvol; 
//unsigned short  vpol;


unsigned char    imintime; 
unsigned short   imin_count; 
//-----------------------------------------------------------------------
unsigned short  time5s;
#include   "E:\HIDdsp30pic\cont_power.c"  //功率常数表格
//===================================================================
//#define  pow35w_set   185  //后面不能放任何标志.   
//===================================================================
//===================================================================
//===================================================================
int main(void);
void qiao_off();
//===================================================================
#include   "E:\HIDdsp30pic\int_contorl.c"  //无效中断
//=============================================================
//===================================================================
//===================================================================
void __attribute__ ((__interrupt__))   _INT2Interrupt(void)
{//INT2 — 外部中断2
 IFS1bits.INT2IF 		= 0;
 //int_res+=1;
 //int_bak+=1;
};
void __attribute__ ((__interrupt__))   _ADCInterrupt(void)
{//ADC — ADC 转换完
    IFS0bits.ADIF 		= 0;   clrwdt(); 	
   if (ADSTATbits.P1RDY != 0)   
   {vad_ad2+=ADCBUF2;  qvad_ad+=ADCBUF3&0xfffe; ad_lu1+=1; ADSTATbits.P1RDY=0;};
  if (ADSTATbits.P2RDY != 0)  {qiad_ad+=ADCBUF4; ad_lu2+=1;  ADSTATbits.P2RDY=0;};
   ADSTATbits.P0RDY=ADSTATbits.P3RDY=0;   
};
void __attribute__ ((__interrupt__))   _T1Interrupt(void)
{//TMR1 — 定时器1  //5mS/次.
  IFS0bits.T1IF = 0;    clrwdt();  pt50ms+=1;
   time5s+=1;
   vad_ew+=vad2;   vad_count+=1;
   imax+=qiad;     i_count+=1;  
   imintime+=1;
   if  (vad_count>80)   {vad=((unsigned short)(vad_ew/vad_count)); vad_count=0;vad_ew=0;};
   if  (i_count>120)     {iad=((unsigned short)(imax/i_count));  i_count=0;imax=0;}; 
   if  (imintime>80)     {imin_count=0;imintime=0;};  // if(imin_count>100) {setb1(error,iminf);};
  // int_time+=1;
  // if  (int_time>10)  { if (int_bak>10000) setb1(error,imaxf);              int_time=0;int_bak=0;};
  // if  ((qiad<50)&&(!((ptpass&bit1)&&(ptpass&bit0))))      {imin_count+=1; if(imin_count>16) {setb1(error,iminf);};};
  // if (  (PDC1>1399)&&(tim>20) )   {imin_count+=1; if(imin_count>16) {setb1(error,iminf);};};
//--------------------------------------------------------------  
//      temp2+=1;  
//      if (temp2>vad) {_RF7=0;} else  {_RF7=1;}; 
//      if (temp2>500) {temp2=0; _TRISF7=0;};   
//-------------------------------------------------------------
}; 
void __attribute__ ((__interrupt__))   _T2Interrupt(void)
{//TMR2 — 定时器2   40uS/次 
  IFS0bits.T2IF = 0;  clrwdt();  
  if (qiaotime<qiaotime_set) qiaotime++; else qiaotime=0;   
//-------------------------------------------------------------- 
 if ( (ad_lu1>6)&&(ad_lu2>6) )
  {
   vad2=(unsigned short)(vad_ad2/ad_lu1);vad_ad2=0;
   qvad=(unsigned short)(qvad_ad/ad_lu1);qvad_ad=0;ad_lu1=0;
   qiad=(unsigned short)(qiad_ad/ad_lu2);qiad_ad=0;ad_lu2=0;     
   power=((unsigned long)qvad*(unsigned long)qiad)/13;  
   //if (vad<500)   power=((unsigned long)qvad*(unsigned long)qiad)/8;  
//      if  (power>pow_set[pow_data])        {PDC1-=(power-pow_set[pow_data])/10; }
//      else   if  (power<pow_set[pow_data]) {PDC1+=(pow_set[pow_data]-power)/10; }  
//      if  (PDC1<700)  {PDC1=700; time5s=0;qiaotime=0;_RE7=0;_RE6=1;};
//      if  (PDC1>3500)  {PDC1=3500;time5s=0;qiaotime=0;_RE7=0;_RE6=1;}; 
 
       //  pdata=(unsigned short)(pwmmax/vad2); //
       //  if  (PDC1>pdata)  {PDC1=pdata;};     //PWM副植调节.
       //  if  ((vad2>900)&&(PDC1>900))   {PDC1-=400; time5s=0;  _RE6=0;qiaotime=0; _RE7=1;};
   //  pwm_out:;
   };     

 PDC1=3500;
//-------------------------------------------------------------- 
      //time5s=0;
   if  (time5s>80) 
   {
              if (qiaotime<qiaotime_set/2) {_RE7=0;nop();nop();nop();nop();_RE6=1;}
                else                       {_RE6=0;nop();nop();nop();nop();_RE7=1;};
    };
//--------------------------------------------------------------   
};
//=============================================================
void   CLEARAM (void)
{
//-------------------------------------------------
//IO口初始化..
  TRISE=0X0000;PORTE=0;  //TRISE=0XFFFF;PORTE=0;
  TRISB=0XFFFF;PORTB=0;

⌨️ 快捷键说明

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