📄 13fre100.c.bak
字号:
const unsigned8 tabmode[8];
const unsigned8 commuconflicttab[8];
const unsigned8 commuconflicttab1[8];
const unsigned16 commuerrtab[16];
const unsigned16 commuerrtab1[16];
void main(void) {
// Disable interrupt, disable watch dog timer and initialize stack pointer.
__DI();
WDTCR1 =0x00;//09;//00; /*Disable watchdog timer00*/
WDTCR2 =0xb1;//4E;//b1;
__SP = (void __far*)CENDRAM;
//ClearRam();
__asm("_ClearRam:");
__asm("LD RBS,1");
__asm("LD HL,0x0C0");
__asm("clearram1:","CLR (HL+)","CMP HL,0x438","JR LE,clearram1");
//CGCR=0x05; /*CGCR SET*/
TBTCR=0x04; /*tbt timer 1.953msec*/
TBTCR=0x04|0x08;
TREG2 =5000;
TC2CR =0x2c;
EINTCR=0x00; /*4 us noise rejection,P10 as output port,int4,3,2,1 rising edge valid*/
P6CR=0x07;//P6CR=0x80;//20021112
P0=0x3f; /*u,v,w is high,x,y,z is low*/
P0CR=0x3f;//0220
//outfanport=0xe1;//020725 e3
P5=0x0a;
P6=0x02;
//020725P2=0;
P2=0xff;//0309
//P7=0x0f;0220
P7CR=0xf0;
//P1=0x0e;0220
P1CR=0xff;/*f3;*/
//020725 P3=0x00;
/*P4=0xff;0127*/
EIRE =0x0002; /* TC2 interrupt : 0.5us * 5000 = 2.5ms */
/*MDOUT2=0x15 ;u,v,w =0;x,y,z=1 turn off P3 PWM,H/L output,*/
MDCR=0xc7;/*f7 .020725 TLP759 1103 set triangular modulation,enalble pwm circuit*/
MDPRD=f3khz/2; /* f3khz/2;PWM FREQUENCE IS 2.8KHZ,*/
DTR=0x30; /*020725 from 30 active high,pwm waves independently40*/
//WDTCR2 = 0x4e;
for(i=0;i<255;i++)
{ for(j=0;j<255;j++)
{;}
}
for(i=0;i<255;i++)
{ for(j=0;j<255;j++)
{;}
}
EMGREL=0x5a ;/*inhibte emg protective*/
EMGREL=0xa5 ;/*inhibte emg protective*/
EMGCR=0xf0 ;/* v11 inhibte emg protective*/
EMGCR=0xf1 ;/*enable emg protective*/
MDOUT=0x15 ;/*020725 15u,v,w =0;x,y,z=1 turn off IPM,H/L output,*/
initvar(); /*MDOUT=0x73f; 1103 pwm output port enable*/
ILL=0x0 ;/* Clear interrupt latch*/
ILE=0x0;
__EI();
//WDTCR2 =0x4E;
while(0==0)
{
//if(frac==0||frac>=10)20021219
// {commu();}
// WDTCR2 =0x4E;
//receivedeal1();
clkdeal();
// WDTCR2 =0x4E;
addeal();
// WDTCR2 =0x4E;
//030308 v10 moddeal();
speed();
// WDTCR2 =0x4E;
}
}
void commu()
{
if(ftxenable==0)
{if(frxbusy==0)
{
commuenableport=commuenableport|0x02;//&0xdf;// P7.5 clear ,mod from 7f P7.7 clear enable receive
byteadd=0;
frxend=0;
buffer=0;
frxbusy=1;
commurectmr=10;
rxdelay100ms=10; // 030308 fredrive 250 3 0923 if 2 second later,no receive signal,fover=1,*/
UARTCR1=0x53;//030308 v10 fredrv 5c-4800bits/s
UARTCR2=0x04;//020725 enable receive
EIRE=EIRE|0x4000;
}
else /*receive deal*/ //the receive had started and to judge weather the receive has finish
{
if(frxend==0&&rxdelay100ms==0)
{
byteadd=0;
//frxbusy=0;
//ftxenable=0;
}
if(frxend==1) /* 30308 commu err or receive end */
{ frxbusy=0;
ftxbusy=0;
EIRE=EIRE&0x0bfff;
UARTCR1=0x13;//030308 v10 fredrv 1c;
ftxenable=1;/*030308 v10 */
frxend=0;
m=indoorsendlength+1;
for(j=0,i=1;i<m;i++)
j=j^buf[i];
if(j!=buf[m]|buf[1]!=buf[4]|buf[2]!=buf[5])
{
errno[machineadd-1]=errno[machineadd-1]+1; /*once communication error happens,errno increase */
if (errno[machineadd-1]>=communotrecnum)
{ errno[machineadd-1]=communotrecnum;//20020705 if(errno==0)fcomerr=0;
fcomerr=1;//030308 v10 if(k==0xff)
}
}
else
{
i=alarmh&&0x71;//51;
if(i==0)//||fdefrost==1)//030729
defaultport=defaultport^0x01;
errno[machineadd-1]=0;
fcomerr=0;
//fcomok=1;
receivedeal1();
}
}
}
}
else
{if(rxdelay100ms==0)
{if (ftxbusy==0)
{ftxbusy=1; /*send initial*/
commuenableport=commuenableport&0xfd;//|0x20; // P7.5 set,enable send
byteadd=0;
ftxend=0;
fsendhl=0;
UARTCR1=0x93;/*baud rate is 4800,enable transmit operation 0917*/
//RDBUF=startcode;
freceivehl=0;//0926
EIRE=EIRE|0x8000;//0926
buf[0]=startcode;
buf[outdoorsendlength+4]=finishcode;//030314 fredrv
//i=alarmh;
if(fmodulefault==1||fovercurrent==1||fmoduleerr==1)//if(fmodulefault==1&&modulprotectfre>=6||fovercurrent==1&&overcurrentfre>=6)
{buf[1]=alarmh;
buf[4]=alarmh;
}
else
{
buf[1]=0; //040100
buf[4]=0;
}
//if(fnomalstop==1||fnomalstart==1)buf[1]=0; //030729
buf[2]=frac; //030308 v10 fredrv
buf[5]=frac;
for(i=1,checksum=0;i<=outdoorsendlength;i++)
{checksum=checksum^buf[i];} //030308 v10 fredrv
buf[outdoorsendlength+1]=checksum;
}//0926 buffer
if (ftxend==0) /*if sending dosn't finish,what will be sent is transformed to buffer*/
{
UARTCR1=0x93;//030308 v10 fredrv
buffer=buf[byteadd]; //030314 fredrv
i=UARTSR;//0105
i=i&0x04;//0105
if(i!=0)RDBUF=buffer ;//0105
}
else
{UARTCR1=0x13;//1c 030308 v10 fredrv when finish, stop transmit
if(rxdelay100ms==0)//0105
{ftxend=0;
ftxbusy=0;
ftxenable=0;
ftxbusy=0;
frxbusy=0;
}
}
}
}
}
void receivedeal1()
{ //buf[1]=test1;
//buf[2]=test2;
i=buf[1]&0x40;
if(i!=0&&f50hzcomp==0)
{
f50hzcomp=1;
if(frac>30)
fexplacefrac=1;//v11 40
}
else
{ if(i==0)
{
f50hzcomp=0;
fexplacefrac=0;
}
}
i=buf[1]&0x20;
if(i==0)
fdefrost=0;
else
fdefrost=1;
i=buf[1]&0x10;
if(i==0)
femgstop=0;
else
femgstop=1;
i=buf[1]&0x80;
if(i==0)
{ fconstop=1;
if(fconstart==1)
{ contactorstoptmr=255;
fconstart=0;
}
}
if(i!=0)
{ fconstart=1;
if(fconstop==1)
{ contactorstarttmr=12;
fconstop=0;
}
}
if(contactorstarttmr==0&&fconstart==1)
{
if(i!=0&&buf[2]==0)//means the enviroment temp. arrived the set temp. or some protect//mod. by zsq at 040313 from if(i==0&&buf[2]==0)
{ if(frac>30&&femgstop==0) //add by zsq at 040329
{ targetfre=30; //add by zsq at 040329
fstopdecfreq=1; //add by zsq at 040329
fremax=0;
}
else
{ fstopdecfreq=0; //add by zsq at 040329
targetfre==0;
if(frac!=0)
fcmpoff=1;
fremax=0;
}
}
else //the enviroment temp. hasn't arrived set-temp.
{
if(i!=0&&buf[2]!=0)
{ k=buf[2]*86;
i=k/100;
targetfre=i+5;
if(fexplacefrac==1&&frac>30)
targetfre=30;//v11 40
else
fexplacefrac=0;
if(targetfre<30)
targetfre=30;
if(targetfre>99)
targetfre=99;
fremax=targetfre;
}
}
}
else
{ if(frac>32&&femgstop==0) //add by zsq at 040329
{ targetfre=30; //add by zsq at 040329
fstopdecfreq=1; //add by zsq at 040329
fremax=0;
} //add by zsq at 040329
else
{ fstopdecfreq=0; ////add by zsq at 040329
targetfre=0;
if(frac!=0)
fcmpoff=1;
fremax=0;
}
}
}
void clkdeal()
{ if(fonethirdsec==1)
{ fonethirdsec=0;
if(ratechange!=0)
ratechange=ratechange-1;
}
if(fhalfsecond==1)/*.overflow*/
{
fhalfsecond=0;/*.overflow*/
if(ptcdelay>0)
ptcdelay=ptcdelay-1;
if(f1second==0)
f1second=1;
else /*1 second */
{
f1second=0;
if(commurectmr!=0)
{
commurectmr=commurectmr-1;
if (commurectmr==0)
fcomerr=1;
}
if(contactorstoptmr!=0)
contactorstoptmr=contactorstoptmr-1;
if(contactorstarttmr!=0&&fconstart==1)
contactorstarttmr=contactorstarttmr-1;
if(fredec20stmr!=0)
fredec20stmr=fredec20stmr-1;//030111
if(fourvalvetmr!=0)
fourvalvetmr=fourvalvetmr-1;
if(comp42hztmr!=0&&frac==42)
{
if(fdefrost==0)
comp42hztmr=comp42hztmr-1;
else
{
if(comp42hztmr<5)
comp42hztmr=0;
else
comp42hztmr=comp42hztmr-5;
}
}
if(braketmr!=0)
braketmr=braketmr-1;//020725
if(poweron10s!=0)
{
poweron10s=poweron10s-1;
if(ffasttest==1)
poweron10s=0;
}//0227
if(ptcdelay1!=0)
ptcdelay1=ptcdelay1-1;
if(min3cnt!=0)
{
fcmpoff=0;//030729
min3cnt=min3cnt-1;
if(ffasttest==1)
min3cnt=0;//2027
if(min3cnt==0)
{
fmodulefault=0;//040100
fcmpoff=0;
fovercurrent=0;//?030715
poweron10s=2;//020725
}
}
// else
// {
// fmodulefault=0;//040100
// fcmpoff=0;
// fovercurrent=0;//?030715
//poweron10s=2;//020725
// }
if(keep80hztmr!=0&&frac==80)//mod from 'if(ffirst80hz==1&&frac==80)' by zsq at 040514
{ //if(keep80hztmr!=0) del. by zsq at 040514
keep80hztmr=keep80hztmr-1;
if(keep80hztmr==0&&fdefrost==0)
ffirst80hz=0;/*1103*/
}
if(comp1mintmr!=0&&frac==60)
{
comp1mintmr=comp1mintmr-1;
if(ffasttest==1)
comp1mintmr=0;//0227
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -