📄 za.c
字号:
//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 + -