📄 cleanset.c
字号:
//=============================================================
void intconl_set (void)
{ OSCCONbits.IDLEN=0;
//OSCTUNEbits.PLLEN=0; //PLL 使能.
//==============================================================
//T0定时器设计..用做桥驱动.
T0CON=0; //T0配置
TMR0L=0; //低位时间
TMR0H=0; //高位时间 //3.25mS/次.
T0CONbits.T08BIT=1;
T0CONbits.T0CS=0; //外部时钟选择1/内部时钟选择0.
T0CONbits.T0SE=0; //
T0CONbits.PSA=0; //T0振荡使能位.
T0CONbits.T0PS2=0; //预分频比选择位.
T0CONbits.T0PS1=1; //预分频比选择位.
T0CONbits.T0PS0=1; //预分频比选择位.
T0CONbits.TMR0ON=1; //TMR0使能位.
// INTCON2bits.TMR0IP=1; //IPR1bits.TMR0IP=1; //T1优先.
INTCONbits.TMR0IF=0;
INTCONbits.TMR0IE=1;
//==============================================================
//T1定时器设计
T1CON=0; //T1配置
TMR1L=20; //低位时间
TMR1H=20; //高位时间 //8.5mS/次.
T1CONbits.RD16=0;
T1CONbits.T1RUN=0;
T1CONbits.T1CKPS1=0; //
T1CONbits.T1CKPS0=0; //
T1CONbits.T1OSCEN=0; //T1振荡使能位.
T1CONbits.T1SYNC=0; //时钟选择位.
T1CONbits.TMR1CS=0; //外部时钟选择1/内部时钟选择0.
T1CONbits.TMR1ON=1; //TMR1使能位.
// IPR1bits.TMR1IP=1; //T1优先.
PIR1bits.TMR1IF=0;
PIE1bits.TMR1IE=1;
//==============================================================
//PWM设计 在CCP1输出.
PR2=0xa0; //PR2=0xa5;//80;//uchar类型 //最大PWM=500.=80 最大PWM=500.=80 //B6
CCPR1L=1; //周期
CCP1CONbits.CCP1X=0; //
CCP1CONbits.CCP1Y=0; //占空比
CCP1CONbits.CCP1M3=1;
CCP1CONbits.CCP1M2=1;
CCP1CONbits.CCP1M1=0;
CCP1CONbits.CCP1M0=0; //PWM模式选择
TRISCbits.TRISC2=0;
LATCbits.LATC2=0;
//T2定时器设计作用于PWM
T2CON=0; //T2配置
TMR2=20; //
T2CONbits.T2OUTPS3=0;
T2CONbits.T2OUTPS2=0;
T2CONbits.T2OUTPS1=1;
T2CONbits.T2OUTPS0=0;
T2CONbits.T2CKPS1=0; //预分频
T2CONbits.T2CKPS0=0; //预分频
T2CONbits.TMR2ON=1; //TMR2使能位.
//IPR1bits.TMR2IP=0; //T2优先.
PIR1bits.TMR2IF=0;
PIE1bits.TMR2IE=0;
//==============================================================
//AD取样设计.
ADCON0=0;
ADCON1=0;
ADCON2=0;
ADCON1bits.VCFG=0b00; //ADCON1bits.PCFG3=1; ADCON1bits.PCFG1=1; ADCON1bits.PCFG0=1; //配置AD模块.AN0~AN3.
ADCON1bits.PCFG=0b1001;
ADCON0=0; //选择AD通道.
ADCON2bits.ADFM=0; //选择AD采集时间.
ADCON2bits.ADQT=0b110; //选择AD采集时间.
ADCON2bits.ADCS=0b110; //选择AD转换时钟.
_ADMUX=0;
// IPR1bits.ADIP=1; //AD优先处理.
PIR1bits.ADIF=0;
PIE1bits.ADIE=1; //允许AD中断
ADCON0bits.ADON=1; //AD模块启动
ADCON0bits.GO=1; //AD启动
//==============================================================
//中断启动.
PIR2bits.OSCFIF=0;
PIE2bits.OSCFIE=1;
RCONbits.IPEN=1; //高级中断优先使能位.
INTCONbits.PEIE=0; //外部中断开.
INTCONbits.GIE=1; //全局中断开.
OSCTUNEbits.PLLEN=1; //PLL 使能.
}
//=============================================================
//=============================================================
void clean (void)
{
//--------------------------------------------------------
//采用外部晶振10M.不采用内部晶振.防止温度影响.
//OSCCON=0;
OSCCONbits.IDLEN=0;
OSCCONbits.IRCF=0b111;
// OSCCONbits.IOFS=0;
OSCCONbits.SCS=0b10;
// OSCCONbits.OSTS=1;
//OSCCON=0b11110000; //主时钟设计.
// OSCCONbits.OSTS=0;
// RCONbits.POR=1; //上电复位
PIR2bits.OSCFIF=0;
PIE2bits.OSCFIE=0;
RCONbits.IPEN=0; //高级中断优先使能位.
INTCONbits.PEIE=0; //外部中断开.
INTCONbits.GIE=0; //全局中断开.
OSCTUNEbits.PLLEN=0; //PLL 使能.
dgg:;
// ClrWdt();
// if (!(OSCCONbits.IOFS)) goto dgg;
OSCCONbits.SCS=0b00;
hlk:;
ClrWdt();
TRISA=0;
PORTA=LATA=0;
// TRISB=00; //TRISB=0Xc0;//00;//0xdf;
// PORTB=LATB=0;// PORTB=LATB=0Xc0;//00;//0xdf;
// TRISC=0x00;
// PORTC=LATC=0x00;
qiaooff();
// T2CON=0; //TMR2使能位.
//IPR1bits.TMR2IP=0; //T2优先.
// CCP1CON =0; //PWM模式选择
if (!(OSCCONbits.OSTS)) {goto hlk;}//晶振未稳定.
//dgj:;
// PIR2bits.OSCFIF=0;
// ClrWdt();
// if (PIR2bits.OSCFIF) goto dgj;
INTCON=0; INTCON2=0; INTCON3=0;
PIE1=0; PIE2=0;
PIR1=0; PIR2=0;
qiaotime=0;inmantime;error=0;pass=0;vad=0;
// OSCTUNEbits.PLLEN=1; //PLL 使能FOSC *4.
pwmold=0; pwmdata=0; pwmdatat=0; pwmdatatb=0; pwmdatak=0;
adt0=0; adt1=0; adt2=0; imintime=0; power=0; power2=0;
powerold=0; tou100ms=0; tpms=0; tim2=0;
ClrWdt(); pt50ms=0; pass=0; error=0; flag=0; t2ms=0;
qiaotime=0; uatim=0; inmantime=0; pwmtemp=0; front=0;
temp1=0; qitim=0; prm=0; fmm=0; adt0=0; adt1=0;
adt10=0; adt11=0; adt12=0; adt13=0; adt14=0;
adt15=0; adt16=0; adt2=0; adt20=0; adt21=0; adt22=0;
adt23=0; adt24=0; adt25=0; adt26=0;
adt3=0; time200=0; time3S=0; gflag=0;
advm=0; in400V=0; adim=0;
koutc=0; qiad=0; qvad=0; qvado=0; adtime=0;
vad=0; vadtc=0; vadtemp=0; pow_data=0; pwmcm=0; pwmbit=0;
//--------------------------------------------------------
}
void ioset(void)
{
TRISA=0;
PORTA=LATA=0;
TRISB=0Xc0;//00;//0xdf;
PORTB=LATB=0Xc0;//00;//0xdf;
TRISC=0x00;
PORTC=LATC=0x00;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -