|
sbit U8LE = P1^6;//;/ chip selected for chip 373
sbit BCDE =P2^4;
sbit BCDD =P2^3;
sbit BCDC =P2^2;
sbit BCDB =P2^1;
sbit BCDA =P2^0;
sbit OE373 =P3^2;
sbit U25LE =P3^4;
sbit U27LE =P3^5;
sbit U27OE =P3^3;
sbit FAN =P1^7;
extern BYTE tick;
extern BYTE alarmminute;
extern ControlStep idata step;
extern WORD minute;
extern BYTE second;
extern SampleTick;
extern CAlarm;//extern sendalarm[16];
extern CheckFlag;
extern AlLedFlag;
extern fanminute;
extern WORD idata samplecurrent[15];
extern WORD idata current[8];
extern BYTE idata SaveGap;
extern WORD idata SaveTime;
extern WORD idata UpperV;
extern WORD idata DownerV;
//extern void SetWD(void);
BYTE idata UnitAdd;
BYTE RelayFlag; // variable store Relay status
BYTE CycleTime;
BYTE EndFlag;
BYTE EndDisplay;
BYTE idata RunStatus;
//extern WORD idata ADGain,DAGain,ADOffset,DAOffset;
main()
{
BYTE ContFlag; // flag to break cycle
BYTE data MenuId,key,temp;
extern void SetRelay(void);
// BYTE SaveTime;
//U8LE=1;
P0=0xff;
EndDisplay=0;
FAN=1;
initial();
SerialInit();
InitTimer0();
EndFlag=0;
write538(0);
delay(5);
P0=0Xf8;
delay(1);
U25LE=1;
U27LE=1;
U8LE=1;
OE373=0;
U27OE=0;
SetWD();
ResetAlarm();
ResetCheck();
ResetRelay();
ResetRelay();
RunStatus=0;
SaveTime=0;
for(;;)
{
UnitAdd=P2;
UnitAdd=UnitAdd&0x3f;
if (P2^4==1)
{UnitAdd=UnitAdd & 0xef;}
else
{UnitAdd=UnitAdd | 0x10;}
if (P2^5==1)
{UnitAdd=UnitAdd & 0xdf;}
else
{UnitAdd=UnitAdd | 0x20;}
Init8279();
ResetWD();
step.StepNo=readx25043(STEPSTATUS);
step.StepNo=readx25043(STEPSTATUS);
minute=readx25043int(TIMESTATUSHIGH);
CycleTime=readx25043(CYCLESTATUS);
EndFlag=readx25043(ENDFSTATUS);
UpperV=readx25043int(UV_ADDH);
DownerV=readx25043int(DV_ADDH);
if (UpperV==0)
{UpperV=INIUPPERV;}
//UnitAdd=readx25043(UNITNO);
if(step.StepNo>19) step.StepNo=0;
if(minute>999) minute=0;
if(EndFlag) //if either of these item was not zero.it demonstarte abnormal break
{
InitTimer0(); //to start timer0
for(;;){
CheckFlag=0;
AlLedFlag=0;
ResetCheck();
ResetAlarm();
if(minute>=SaveTime)
SaveGap=minute-SaveTime;
else
SaveGap=59+minute-SaveTime;
if(SaveGap>=SAVETIME)
{
SaveStatus(); // Save runing status every certain time
SaveTime=minute;
FAN=0;
}
DisplayBlink("START",5,0); // display start blink to demonstrate abnormal break
ResetWD();
key=GetKey();
temp=ExeCommand();
if(temp) key=temp;
ContFlag=0;
switch(key){
case KEY_ENTER :
ClrStatus();
ContFlag=1;
break;
case KEY_START :
start();
ContFlag=1;
break;
default :
break;
}
if(ContFlag) break;
}
ET0=0;
TR0=0;
}
else
{
if(EndDisplay)
{display("ENDII",5,0);}
else display("START",5,0);
CheckFlag=0;
AlLedFlag=0;
ResetCheck();
ResetAlarm();
ContFlag=0;
for(;;)
{
if(minute>=SaveTime)
SaveGap=minute-SaveTime;
else
SaveGap=59+minute-SaveTime;
if(SaveGap>=SAVETIME)
{
SaveStatus(); // Save runing status every certain time
SaveTime=minute;
FAN=0;
}
ResetWD();
key=GetKey();
temp=ExeCommand();
if(temp) key=temp;
if(key==KEY_ENTER)
{
MenuId=MenuEntry(StartMenu,1); // menuID is index of one selection in menu
switch (MenuId)
{
case 0 : ProgEntry(); break;
// case 1 : SetVoltage();break;
/*case 2 : do {display("8I8I8I8I",8,0);
delay(100);
display("I8I8I8I8",8,0);
delay(100);}
while(1);*/
}
ContFlag=1;
}
switch (key)
{
case KEY_START : start(); ContFlag=1;break;
case KEY_CHARG : test(CHARGE); ContFlag=1;break;
case KEY_DISCH : test(DISCHARGE); ContFlag=1;break;
default : break;
}
if(ContFlag) break;
}
}
}
} |
|