?? 振動測試治具b.c
字號:
#include <reg52.h>
#include <振動測試治具.h>
void main(void)
{
#define WAITTIME 100
#define SPEEDOKNUMBER 3
#define CURRENTOKNUMBER 3
unsigned int NowData;
int SpeedOkNumber=0,CurrentOkNumber=0;
bit SpeedOk,CurrentOk,SpeedNg,CurrentNg;
#define SPEEDTOTALNUMBER 5
#define CURRENTTOTALNUMBER 5
// char SpeedTotalNumber=0,CurrentTotalNumber=0;
int SpeedLimit=0,CurrentLimit=0;
bit nn=0;
char i;
timeh=0;
Initial();
RUN=0;
twinkle=1;
Delay2ms(1);
TR0=TR1;
TR2=1;
EX0=EX1=0;
while(1)
{
/* if(CodeSwitchOk)
{
NowData=0;
for(i=0;i<4;i++)
{
NowData=NowData*10+CodeSwitch[i];
}
SpeedLo=NowData;
NowData=0;
for(i=4;i<8;i++)
{
NowData=NowData*10+CodeSwitch[i];
}
SpeedHi=NowData;
NowData=0;
for(i=8;i<12;i++)
{
NowData=NowData*10+CodeSwitch[i];
}
CurrentLo=NowData;
NowData=0;
for(i=12;i<16;i++)
{
NowData=NowData*10+CodeSwitch[i];
}
CurrentHi=NowData;
CodeSwitchOk=0;*/
/* if(nn)
{
Speed=SpeedLo;Current=SpeedHi;
}
else
{
Speed=CurrentLo;Current=CurrentHi;
}
SpeedFinish=CurrentFinish=1;
if(CurrentFinish)
{
NowData=Current;
for(i=4;i<8;i++)
{
Smg[i]=NowData% 10;
NowData=NowData/10;
}
CurrentFinish=0;
}
if(SpeedFinish)
{
NowData=Speed;
for(i=0;i<4;i++)
{
Smg[i]=NowData% 10;
NowData=NowData/10;
}
SpeedFinish=0;
// SpeedStart=1;
}
*/
while(!STARTSWITCH);
Delay2ms(10);
for(i=0;i<WAITTIME;i++)
{
if(STARTSWITCH) break;
Delay2ms(1);
}
if(i<WAITTIME) continue;
twinkle=0;
nn=~nn;
SpeedOkNumber=CurrentOkNumber=0;
SpeedOk=CurrentOk=SpeedNg=CurrentNg=0;
SpeedLimit=SPEEDTOTALNUMBER;
CurrentLimit=CURRENTTOTALNUMBER;
SpeedStart=1;
Speed=Current=0;
CurrentFinish=SpeedFinish=1;
SpeedTesting=0;
SignalExist=0;
// Round=0;
hcn=0;
MOTORON=0;
Delay2ms(500);
TR0=1;
EX1=0;EX0=1;
while(!STARTSWITCH)
{
if(CurrentFinish)
{
NowData=Cur[4];
for(i=3;i>=0;i--)
{
NowData=NowData*10+Cur[i];
}
NowData++;NowData>>=1; //NowData/2
Current=NowData;
for(i=4;i<8;i++)
{
Smg[i]=NowData% 10;
NowData=NowData/10;
}
CurrentFinish=0;
}
if(!CurrentOk&&!CurrentNg)
{
if(CurrentLimit)
{
CurrentLimit--;
if(Current<=CurrentHi&&Current>=CurrentLo)
{
CurrentOkNumber++;
if(CurrentOkNumber>=CURRENTOKNUMBER) CurrentOk=1;
}
else
{
CurrentOkNumber=0;
}
}
else
{
CurrentNg=1;
}
}
if(SpeedFinish)
{
if(SignalExist)
{
NowData=Speed=(2000.0*1000*100*hcn)/(TL1+TH1*0x100L+timeh*0x10000L)+0.5;
}
else
{
NowData=Speed=0;
}
for(i=0;i<4;i++)
{
Smg[i]=NowData%10;
NowData=NowData/10;
}
timeh=TL1=TH1=0;
SpeedFinish=0;
SpeedStart=1;
SignalExist=0;
EX1=1;TR1=1;
}
if(!SpeedOk&&!SpeedNg)
{
if(SpeedLimit)
{
SpeedLimit--;
if(Speed<=SpeedHi&&Speed>=SpeedLo)
{
SpeedOkNumber++;
if(SpeedOkNumber>=SPEEDOKNUMBER) SpeedOk=1;
}
else
{
SpeedOkNumber=0;
}
}
else
{
SpeedNg=1;
}
}
/* if(SpeedOk&&CurrentOk)
{
OKLED=0;NGLED=1;
BELL=0;Delay2ms(150);BELL=1;
break;
}
else
{
if(SpeedNg||CurrentNg)
{
OKLED=1;NGLED=0;
BELL=0;Delay2ms(100);BELL=1;Delay2ms(100);
BELL=0;Delay2ms(100);BELL=1;
break;
}
}*/
}
MOTORON=1;
TR0=0;EX0=0;
}
}
void Initial(void)
{
P0=P1=P2=P3=0xff;
// RECLED=1;
// INPORT=INKEYPORT;
IT0=IT1=1;
TMOD=0x12; //Timer0:Mode2 Timer1:Mode1
T2CON=0x0;
TL0=TH0=-10;
// TL0=T2MS & 256;
// TH0=T2MS/256;
RCAP2L=TL2=(T2MS & 256);
RCAP2H=TH2=(T2MS/256);
TL1=0;
TH1=0;
IE=0xaf; //EA=1;EX0=1;ET0=1,ET1=1,EX1=1,ET2=1;
IP=0xa; //PX0=1,PX1=1
TR0=0;
TR1=0;
TR2=1;
}
void Hwin (void) interrupt INT1INT
{
if(SpeedTesting)
{
hcn++;
if(hcn>=HCN||timeh>=MAXTIME)
{
TR1=0;
SpeedTesting=EX1=0;
SpeedFinish=1;
}
}
else
{
if(SpeedStart)
{
TR1=0;
TL1=0;
TR1=1;
TH1=0;
hcn=0;
timeh=0;
SpeedStart=0;
SpeedTesting=1;
// Round=1;
}
}
SignalExist=1;
}
void Timer1 (void) interrupt TIMER1INT
{
if(!SignalExist)
{
TR1=SpeedTesting=EX1=0;
SpeedFinish=1;
}
timeh++;
SignalExist=0;
}
void Strobe7135 (void) interrupt INT0INT
{
// static unsigned int NewCurrent=0;
// bit mcd;
static char cb=5;
// mcd=MCD5;
if(MCD5)
{
cb=5;
if(!CurrentFinish) CurrentStart=1;
}
cb--;
if(CurrentStart)
{
Cur[cb]=P1&0xf;
if(!cb) CurrentFinish=1;
}
}
void Time05us (void) interrupt TIMER0INT
{
Clock=~Clock;
}
void Time2ms (void) interrupt TIMER2INT
{
#define TWINKLETIME 250
// static char cn=100;
static unsigned char tn=TWINKLETIME;
// static char InP1=0,InP2=0;
// char InP,InP3;
static bit CodeSwitchStart=0;
char n1,n2;
static unsigned int Data1=0,Data2=0;
// static int tm=MI;
static char Digital=0;
TF2=0;
// TL0=T2MS & 256;
// TH0=T2MS/256;
/* tm--;
if(tm<=0)
{
TR1=0;
// Speed=TH1*0x100+TL1;
TH1=0;
TL1=0;
TR1=1;
// Speed<<=1;
// SpeedFinish=1;
tm=MI;
}*/
// Clock=1;
if(!STARTSWITCH) CodeSwitchStart=0;
P0=0;SMGB=1;SMGB=0;P0=0xff; //put off DISPLAY
//Switch 8-15
P2=Digital|(P2&0xf0);
if(CodeSwitchStart)
{
P2=Digital|(P2&0xc0);BS3=1; //LTS=0,SMGB=0
P2=Digital|(P2&0xc0);BS3=1; //LTS=0,SMGB=0
P2=Digital|(P2&0xc0);BS3=1; //LTS=0,SMGB=0
P2=Digital|(P2&0xc0);BS3=1; //LTS=0,SMGB=0
LTS=0;
if(P0==0xff)
{
if(!SP8)
{
n2=8;
}
else
{
n2=9;
}
}
else
{
switch(P0)
{
case ~2:n2=1;break;
case ~4:n2=2;break;
case ~8:n2=3;break;
case ~0x10:n2=4;break;
case ~0x20:n2=5;break;
case ~0x40:n2=6;break;
case ~0x80:n2=7;break;
default:n2=0;
}
}
// CodeSwitch[Digital+8]=n;
//Switch 0-7
BS3=0;BS3=0;BS3=0;BS3=0;BS3=0;BS3=0;BS3=0;BS3=0;
if(P0==0xff)
{
if(!SP8)
{
n1=8;
}
else
{
n1=9;
}
}
else
{
switch(P0)
{
case ~2:n1=1;break;
case ~4:n1=2;break;
case ~8:n1=3;break;
case ~0x10:n1=4;break;
case ~0x20:n1=5;break;
case ~0x40:n1=6;break;
case ~0x80:n1=7;break;
default:n1=0;
}
}
// CodeSwitch[Digital]=n;
LTS=1;
Data1=Data1*10+n1;
Data2=Data2*10+n2;
switch(Digital)
{
case 3:
SpeedLo=Data1;
CurrentLo=Data2;
Data1=Data2=0;
break;
case 7:
SpeedHi=Data1;
CurrentHi=Data2;
Data1=Data2=0;
break;
}
}
P0=LED[Smg[Digital]];
switch(Digital)
{
case 1:
case 5:P0|=0x80;break;
}
SMGB=1; //Put on Display
//inc Digital
Digital++;
if(Digital>=8)
{
Digital=0;
if(STARTSWITCH)
{
// if(CodeSwitchStart)
// {
// CodeSwitchStart=0;
// CodeSwitchOk=1;
// }
// if(!CodeSwitchOk) CodeSwitchStart=1;
CodeSwitchStart=1;
}
}
/* InP=INPORT^INKEYPORT;
InP3=InP&InP2;
InP2=InP&InP1&(~InP3);
InP1=InP&(~InP3);
InP^=INPORT;
InP&=InP3;
INPORT&=~InP3;
INPORT|=InP;
*/
if(td) td--;
/* here=1;
if(!(--cn))
{
cn=100;
// SMG^=0x80;
tlong--;
}
*/
if(twinkle)
{
if(!(--tn))
{
tn=TWINKLETIME;
OKLED=~OKLED;
NGLED=~NGLED;
}
}
// Clock=0;
}
void Delay2ms(int a)
{
td=a;
while(td);
}
/*
bit TestS(bit a,bit A)
{
if(a)
{
if(!A&!A&!A&!A) a=0;
}
else
{
if(A&A&A&A) a=1;
}
return(a);
}*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -