📄 ex2202.c
字号:
#include "p18f452.h"
#include "standard.h"
//#include "port_init.c"
void port_init(void);
void adinit(void);
unsigned int adc_data(void);
char start_sw (void);
char sen_c,bt;
void adinit(void)
{
ADCON0=0x41;
ADCON1=0Xc0;
PIR1bits.ADIF=0;
PORTAbits.RA0=1;
PORTAbits.RA1=1;
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
}
unsigned int adc_data(void)
{
unsigned int data_a;
ADCON0bits.GO=1;
while(PIR1bits.ADIF==0);
PIR1bits.ADIF=0;
data_a=ADRESH*0X0100;
data_a=data_a+ADRESL;
return(data_a);
}
void delay(int count)
{
int cc,tt;
for(cc=0;cc<=count;cc++)
{ for(tt=0;tt<=400;tt++);}//100
}
void start (void)
{
char t;
for(t=0;t<=4;t++)
{
LED_R =1;
LED_Y =1;
LED_G =1;
delay(10);
LED_R =0;
LED_Y =0;
LED_G =0;
delay(10);
}
}
unsigned int AD_CHECK(int hl)
{
unsigned int vdata=0,ddata=0;
char coun=0;
if(hl==1)
{
ADchannels=P5V_CH;
adinit();
for(coun=0;coun<3;coun++)
{
vdata= adc_data();
ddata=ddata+vdata;
delay(1);
}
ddata=ddata/3;
// LED_R=0;
return(ddata);
}
if(hl==2)
{
ADCON0=0X49;
adinit();
for(coun=0;coun<3;coun++)
{
vdata=adc_data();
ddata=ddata+vdata;
delay(1);
}
ddata=ddata/3;
return(ddata);
}
}
unsigned int TR_CHECK (char hs)
{
if(hs==1)
{
if(TR1_CH==1)//&(TR2_CH==0))
return(1);
return(0);
}
if(hs==2)
{
if((TR1_CH==1)&(TR2_CH==1))
return(1);
return(0);
}
if(hs==3)
{
if(TR2_CH==1)//(TR1_CH==0)&)
return(1);
return(0);
}
}
unsigned int RL_CHECK (int ss)
{
if(ss==0)
{
if(FM_L==1)
return(1);
return(0);
}
if(ss==1)
{
if(FM_R==1)
return(1);
return(0);
}
}
int func_c (void)
{
unsigned int ad;
C8_T=on;
TEMP=off;
LP_O=1;
delay(100);
SW50=on;
SW51=on;
SW52=on;
delay(100);
POWER=on;
start_sw();
delay(50);
SW50=off; //
SW54=on;
SW51=off;
SW52=off;
delay(1);
SW54=on;
delay(150);
ad=TR_CHECK(1);
if(ad==0)
{
PORTC=0X00;
return(0);
}
delay(100);
start_sw();
SW51=on; //加湿暖房
delay(100);
SW51=off;
delay(150);
ad=TR_CHECK(2);
if(ad==0)
{
PORTC=0X00;
return(0);
}
ad=RL_CHECK(0);
if(ad==0)
{
PORTC=0X00;
return(0);
}
start_sw();
SW52=on; //加湿暖房 弱
delay(100);
SW52=off;
delay(100);
ad=TR_CHECK(3);
if(ad==0)
{
PORTC=0X00;
return(0);
}
ad=RL_CHECK(1);
if(ad==0)
{
PORTC=0X00;
return(0);
}
start_sw();
delay(10);
EX1=0; //倒转开关
delay(50);
EX1=1;
delay(1);
// start_sw();
SW53=on; //计时
delay(20);
SW53=off;
delay(200);
start_sw();
SW53=on;
delay(400); // >4s
SW53=off;
fEW450=1;
//start_sw(); // 给水检查 < ew-450检查
fEW450=0;
delay(1000);
// //
/*
start_sw(); // 给水检测 满水解除 < ew-450检查
delay(100);
C8_T=on;
start_sw(); // 湿度异常设定
delay(100);
C8_T=off;
start_sw(); // 湿度异常解除
delay(100);
start_sw();
LP_O=1; // 照度L检查
delay(50);
// ad=AD_CHECK(3);
// if((ad<0x0200)&(ad>0x03ff))
// {
// PORTC=0X00;
// return(0);
// }
delay(50);
*/ ///
start_sw();
LP_O=0;
delay(50);
delay(50);
TEMP=on; //热控管断线
//start_sw();
LED_R=1;
LED_G=1;
LED_Y=1;
ad=AD_CHECK(1); //5V 检查
if((ad<0x01eb)|(ad>0x0215))
{
PORTC=0X00;
return(0);
}
ad=AD_CHECK(2); //24V 检查
if((ad<0x02ef)|(ad>0x0378))
{
PORTC=0X00;
return(0);
}
start_sw();
POWER=off;
SW54=off;
delay(400);
ad=AD_CHECK(1); //5V 检查
if(ad>0x00cc)
{
PORTC=0X00;
return(0);
}
ad=AD_CHECK(2); //24V 检查
if(ad>0x0200)
{
LED_Y=0;
LED_G=0;
LED_R=0;
PORTC=0X00;
return(0);
}
LP_O=1;
C8_T=on;
return(1);
}
char start_sw (void)
{
char bl,bj;
bj=1;
while(bj==1)
{
LED_Y=bl;
bl=~bl;
if(LIMIT==1)
return(0);
if(START==0)
{
delay(10);
if(START==0)
bj=0;
}
delay(15);
}
while(START==0);
LED_Y=on;
return(1);
}
void main(void)
{
int ss;
char st;
port_init();
adinit();
start();
// ADCON0=0x41; //c1
adc_data();
BUZZ=on;
// INTCONbits.GIE=1;
// INTCONbits.PEIE=1;
while(1)
{
while(LIMIT!=0)
delay(10);
delay(100);
st=start_sw();
if(st==1)
{
LED_Y=on;
LED_G=off;
LED_R=off;
ss=func_c();
if(ss==1)
{
LED_G=off;
LED_R=on;
LED_Y=on;
}
if(ss==0)
{
POWER=off;
LED_G=on;
LED_R=off;
LED_Y=on;
BUZZ=off;
delay(100);
BUZZ=on;
}
}
while(LIMIT==0)
delay(10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -