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