这个程序里是什么错误?
#include "func.h"
#include "main.h"
#include "io.h"
sbit Test=P2^2;
extern u8 IsDebug;
void WaitACZero(void)
{
int i; //while(Zero);while(!Zero);
i=1;
}
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
u32 allWorkTime=(s32)3600*(s32)65535;
void update_allWork(void){ReadBytes(0x100,4,&allWorkTime);if(allWorkTime==0xffffffff)allWorkTime=0;}
void save_allWork(void){ WriteBytes(0x100,4,&allWorkTime);}
void update_SetTemp(void){ReadBytes(0x200,1,&SetTemp);if(SetTemp==0xff)SetTemp=0;}
void save_SetTemp(void){WriteBytes(0x200,1,&SetTemp);}
u8 t123456[6];
void update_t123456(void)
{
u8 i;
ReadBytes(0x300,6,t123456);
for(i=0;i<6;i++)
{
if(t123456[i]==0xff || t123456[i]==0)return;
}
t1=t123456[0];
t2=t123456[1];
t3=t123456[2];
t4=t123456[3];
t5=t123456[4];
t6=t123456[5];
}
void save_t123456(void)
{
t123456[0]=t1;
t123456[1]=t2;
t123456[2]=t3;
t123456[3]=t4;
t123456[4]=t5;
t123456[5]=t6;
WriteBytes(0x300,6,t123456);
}
void delay_ms(u32 t)
{
u32 i;
for(i=t;i>0;i--)
Delay1ms();
}
STATUS status=Reset;
STATUS status_next=Reset;
void main_control()//call for every 10ms
{
static u16 cWaitTemp=0;
static u16 cStarting=0;
static u16 cT12=0,cT6=0,cKey=0,c1S=0;
static u32 cT34=0;
switch(status)
{
case Reset:
cWaitTemp=0;cT12=0;cT6=0;cKey=0;cT34=0,c1S=0;
Motor1_OFF;Motor2_OFF;Motor3_OFF;Motor4_OFF;
Pump1_OFF;Pump2_OFF;Pump3_OFF;
if(cStarting++==10){
if(!IsDebug){
Pump4=1;
update_allWork();
update_SetTemp();
update_t123456();
}
}else if(cStarting==15){
Pump4=0;
status_next=WaitForKey;
cStarting=0;
}
break;
case WaitForKey:
if(Key)cKey=0;else cKey++;
if(cKey>5){ cKey=0;status_next=WaitForTemp; }
break;
case WaitForTemp:
if(Temp > SetTemp)
{
status_next=Starting;cWaitTemp=0;Motor4_OFF;
Pump1_ON;Pump2_ON;
WaitACZero();
Motor3_ON;Motor2_ON;
} else if(cWaitTemp++==10){WaitACZero();Motor4_ON;}
if(Key)cKey=0;else cKey++;
if(cKey>tKey*10){ cKey=0;status_next=Reset; }
break;
case Starting:
if(cStarting++==t5*10)
{
status_next=Started;cStarting=0;
WaitACZero();
Motor1_ON;
Pump3_ON;
};
Test=~Test;
break;
case Started:
/*阀门*/
cT12++;
if(cT12<t1){Pump1_ON;Pump2_OFF;}
else if(cT12<(t1+t2)){Pump1_ON;Pump2_ON;}
else if(cT12<(t1+t2+t1)){Pump1_OFF;Pump2_ON;}
else if(cT12<(t1+t2+t1+t2)){Pump1_ON;Pump2_ON;}
else cT12=0;
/**/
cT34++;
if(cT34<t3*10)Pump3_ON;
else if(cT34<(t3*10+t4*10*60*10))Pump3_OFF;
else cT34=0;
if(Key)cKey=0;else cKey++;
if(cKey>tKey*10){ cKey=0;status_next=Stoping; }
if(Temp < SetTemp-5 && Motor4==1){WaitACZero();Motor4_ON;}
else if(Temp > SetTemp && Motor4==0){Motor4_OFF;}
/*work*/
if(c1S++==10){allWorkTime++;c1S=0;}
break;
case Stoping:
Motor1_OFF;
Motor4_OFF; //Pump1_OFF;Pump2_OFF;
Pump3_OFF; /*阀门*/
cT12++;
if(cT12<t1){Pump1_ON;Pump2_OFF;}
else if(cT12<(t1+t2)){Pump1_ON;Pump2_ON;}
else if(cT12<(t1+t2+t1)){Pump1_OFF;Pump2_ON;}
else if(cT12<(t1+t2+t1+t2)){Pump1_ON;Pump2_ON;}
else cT12=0;
/**/
Pump4=~Pump4;
cT6++;
if(cT6<t6*10);
else {
cT6=0;
status_next=Reset;
if(!IsDebug)save_allWork();
}
break;
default:
break;
}
status=status_next;
}
|