📄 keyprocess.i
字号:
float ldexp(float d, int n);
float modf(float y, float *i);
float floor(float y);
float ceil(float y);
float fround(float d);
float tan(float x);
float acos(float x);
float exp(float x);
float log(float x);
float pow(float x,float y);
float sinh(float x);
float cosh(float x);
#line 45 "C:/icc/include/math.h"
#line 4 "C:\icc\examples.avr\zgs\keyProcess.c"
unsigned char SelfCheck;
unsigned char MarkOk;
float syst_parm[50];
struct Num_B
{
unsigned char IntNumB;
unsigned char PartNumB;
}
const Num_B NumBit[50]={
{3,3},{},};
void delay(unsigned char x)
{
unsigned char j;
while((x--) !=0)
{
for(j=0;j<125;j++)
{ ;}
}
}
unsigned char keypressed(void)
{
(*(volatile unsigned char *)0x34)=0xFF;
(*(volatile unsigned char *)0x35)=0xF0;
(*(volatile unsigned char *)0x34)=0x0F;
if(((*(volatile unsigned char *)0x33) & 0xF0)!=0xF0)
return 1;
else
return 0;
}
unsigned char keyscan(void)
{
unsigned char i;
unsigned char j=0x7F, keycode=0xff;
unsigned char Temp;
Temp=0x01;
delay(10);
if((keypressed())==1)
{
for(i=0;i<4;i++)
{
(*(volatile unsigned char *)0x34)=0xFF;
(*(volatile unsigned char *)0x35)=~(Temp<<i);
(*(volatile unsigned char *)0x34)=0x0F;
if(((*(volatile unsigned char *)0x33) & 0xF0)!=0xF0)
{
keycode=(~((*(volatile unsigned char *)0x33) & 0xF0))& 0xF0;
break;
}
}
Temp=0x10;
for(i=0;i<4;i++)
{
(*(volatile unsigned char *)0x34)=0xFF;
(*(volatile unsigned char *)0x35)=~(Temp<<i);
(*(volatile unsigned char *)0x34)=0xF0;
if(((*(volatile unsigned char *)0x33) & 0x0F)!=0x0F)
{
keycode=keycode+(~((*(volatile unsigned char *)0x33) & 0x0F)& 0x0F);
break;
}
}
}
do{
} while((keypressed())==1);
delay(5);
switch(keycode)
{
case 0x11:
keycode=0;break;
case 0x12:
keycode=1;break;
case 0x13:
keycode=2;break;
case 0x14:
keycode=3;break;
case 0x21:
keycode=4;break;
case 0x22:
keycode=5;break;
case 0x23:
keycode=6;break;
case 0x24:
keycode=7;break;
case 0x31:
keycode=8;break;
case 0x32:
keycode=9;break;
case 0x33:
keycode=10;break;
case 0x34:
keycode=11;break;
case 0x41:
keycode=12;break;
case 0x42:
keycode=13;break;
case 0x43:
keycode=14;break;
case 0x44:
keycode=15;break;
default:
break;
}
}
return keycode;
}
keyanalsy(unsigned char keyvalue)
{
switch(keyvalue)
{
case 10:
{
print();
break;
}
case 11:
{
caisample();
break;
}
case 12:
{
jiaozheng();
break;
}
case 13:
{
celiang();
break;
}
case 14:
{
setparm();
break;
}
case 0:
{
biaoding();
break;
}
case 5:
{
liuliang();
break;
}
default:
break;
}
}
}
void setparm(void)
{
unsigned char ParmBuf[6]={0x34,0x3f,0x3f,0xff,0xff,0xff};
unsigned char keyv,i,keyc,rig=0;
wdm164(ParmBuf);
while(1)
{
i=0;
while(1)
{
if(keypressed())
{
keyv=keyscan();
if( keyv>=0 && keyv<=9)
{
ParmBuf[i+1]=keyv;
i=i+1;
if(i==2)
{
i=0;
}
wdm164(ParmBuf);
}
if(keyv==0x0a)
{
break;
}
}
}
keyc=ParmBuf[1]*10+ParmBuf[2];
if(keyc<51 && keyc>0 )
{
FloatToUchar(keyc, *ParmBuf) ;
i=6-(NumBit[keyc].IntNumB+NumBit[keyc].PartNumB);
wdm164(ParmBuf);
while(1)
{
if(keypressed())
{
keyv=keyscan();
if( keyv>=0 && keyv<=9)
{
ParmBuf[i]=(ParmBuf[i]& 0x80)+keyv;
i=i+1;
if(i>6)
{
i=6-(NumBit[keyc].IntNumB+NumBit[keyc].PartNumB);
}
wdm164(ParmBuf);
}
if(keyv==0x0a)
{
EEPROMReadBytes(6*(keyc-1),ParmBuf,6);
break;
}
}
}
}
else
{
break;
}
}
}
void UcharToFloat(unsigned char *Kvalue,unsigned char FlagBit)
{
unsigned char i,j,g;
float TempVar1,TempVar2;
TempVar1=0;
TempVar2=0;
for(i=0;i<6;i++)
{
if((Kvalue[i]>=0) && (Kvalue[i]<=0))
break;
}
g=i;
for(i=0;i<NumBit[FlagBit].IntNumB;i++)
{
TempVar1=TempVar1*10+Kvalue[g+i];
}
for(i=0;i<NumBit[FlagBit].PartNumB;i++)
{
TempVar2=TempVar2+Kvalue[5-i]*0.1;
}
syst_parm[FlagBit]= TempVar1+TempVar2;
}
void FloatToUchar(unsigned char Tran,unsigned char *RetVa)
{
float IntNum1,PartNum1,TempR1;
unsigned char TempR[6],i=0,j,k;
unsigned char h;
TempR1=syst_parm[Tran];
j=NumBit[Tran].IntNumB;
k=NumBit[Tran].PartNumB;
IntNum1=floor(TempR1);
PartNum1=TempR1-floor(TempR1);
for(i=0;i<k;i++)
{
TempR[i]=floor(PartNum1*10);
PartNum1=PartNum1*10-floor(PartNum1*10);
}
for(i=0;i<k;i++)
{
RetVa[5-i]=TempR[k-1-i];
}
for(i=0;i<j;i++)
{
TempR[i]= IntNum1-floor(IntNum1/10)*10;
IntNum1=floor(IntNum1/10);
}
for(i=0;i<j;i++)
{
if(i==0 && k!=0)
RetVa[5-k-i]=TempR[i]|0x80;
else
RetVa[5-k-i]=TempR[i];
}
if((k+j)<6)
{
for(i=0;i<(6-j-k);i++)
{
if(i==0)
RetVa[i]="s";
else
RetVa[i]="0";
}
}
}
void print(unsigned char kind)
{
unsigned char PrintBuffer[27];
unsigned char TemBuff[6],i;
if(kind==1)
{
FloatToUchar(41,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i]=TemBuff[i+4];
}
FloatToUchar(42,TemBuff);
for(i=0;i<3;i++)
{
PrintBuffer[i+2]=TemBuff[i+3];
}
PrintBuffer[3]=PrintBuffer[3] & 0x7f;
FloatToUchar(43,TemBuff);
for(i=0;i<3;i++)
{
PrintBuffer[i+5]=TemBuff[i+3];
}
PrintBuffer[6]=PrintBuffer[6] & 0x7f;
FloatToUchar(44,TemBuff);
for(i=0;i<3;i++)
{
PrintBuffer[i+8]=TemBuff[i+3];
}
PrintBuffer[11]=2;
PrintBuffer[12]=0;
FloatToUchar(20,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i+13]=TemBuff[i+4];
}
FloatToUchar(21,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i+15]=TemBuff[i+4];
}
FloatToUchar(22,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i+17]=TemBuff[i+4];
}
FloatToUchar(23,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i+19]=TemBuff[i+4];
}
FloatToUchar(24,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i+21]=TemBuff[i+4];
}
}
if(kind==2)
{
FloatToUchar(41,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i]=TemBuff[i+4];
}
FloatToUchar(28,TemBuff);
for(i=0;i<6;i++)
{
Printbuffer[i+2]=TemBuff[i];
}
FloatToUchar(32,TemBuff);
for(i=0;i<6;i++)
{
Printbuffer[i+8]=TemBuff[i];
}
FloatToUchar(20,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i+14]=TemBuff[i+4];
}
FloatToUchar(21,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i+16]=TemBuff[i+4];
}
FloatToUchar(22,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i+18]=TemBuff[i+4];
}
FloatToUchar(23,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i+20]=TemBuff[i+4];
}
FloatToUchar(24,TemBuff);
for(i=0;i<2;i++)
{
Printbuffer[i+22]=TemBuff[i+4];
}
}
printer(PrintBuffer,kind)
}
void caisample(void)
{
unsigned char keyv;
unsigned char ShowBuff[6];
(*(volatile unsigned char *)0x37)=0xff;
while(1)
{
if(keypressed())
{
keyv=keyscan();
switch(keyv)
{
case 1:
{
FloatToUchar(42,ShowBuff);
wdm164(ShowBuff);
(*(volatile unsigned char *)0x38)=((*(volatile unsigned char *)0x38) & 0xf0) | 0x01;
break;
}
case 2:
{
FloatToUchar(43,ShowBuff);
wdm164(ShowBuff);
(*(volatile unsigned char *)0x38)=((*(volatile unsigned char *)0x38) & 0xf0)| 0x02;
break;
}
case 4:
{
FloatToUchar(45,ShowBuff);
wdm164(ShowBuff);
(*(volatile unsigned char *)0x38)=((*(volatile unsigned char *)0x38) & 0xf0)| 0x04;
break;
}
case 5:
{
FloatToUchar(44,ShowBuff);
wdm164(ShowBuff);
(*(volatile unsigned char *)0x38)=((*(volatile unsigned char *)0x38) & 0xf0)| 0x08;
break;
}
default:
break;
}
if(keyc==10)
{
break;
}
}
}
}
void biaoding(void)
{
unsigned char SetP[6]={"F",0,0,16,16,16};
unsigned char i,keyv;
unsigned char Te[6]={"F",0,0,16,16,16};
float ReT1,ReT2,M1;
while(1)
{
wdm164(SetP);
Te[1]=0;
Te[2]=0;
i=1;
Counter1=0;
Counter2=0;
while(1)
{
if(keypressed())
{
keyv=keyscan();
if( keyv>=0 && keyv<=9 )
{
Te[i]=keyv;
i=i+1;
if(i==3)
i=0;
wdm164(Te);
}
if(keyv==0x0a)
break;
}
}
if(keyv==0x0a && (Te[1]*10+Te[2])==0)
break;
else
keyv=Te[1]*10+Te[2];
switch(keyv)
{
case 35:
{
syst_parm[35]=Comunpter();
FloatToUchar(35,Te);
Te[0]="f";
Te[1]=3;
Te[2]=5;
wdm164(Te);
Te[0]=0;
Te[1]=0;
Te[2]=0;
UcharToFloat(Te,35)
break;
}
case 36:
{
syst_parm[36]=Comunpter();
FloatToUchar(36,Te);
Te[0]="f";
Te[1]=3;
Te[2]=6;
wdm164(Te);
Te[0]=0;
Te[1]=0;
Te[2]=0;
UcharToFloat(Te,36)
break;
}
case 37:
{
i=3;
while(1)
{
if(keypressed())
{
keyv=keyscan();
if( keyv>=0 && keyv<=9 )
{
Te[i]=keyv;
i=i+1;
if(i==5)
i=3;
wdm164(Te);
}
if(keyv==0x0a)
{
Te[0]=0;
Te[1]=0;
Te[2]=0;
UcharToFloat(Te,37)
break;
}
}
}
break;
}
case 38:
{
i=3;
while(1)
{
if(keypressed())
{
keyv=keyscan();
if( keyv>=0 && keyv<=9 )
{
Te[i]=keyv;
i=i+1;
if(i==5)
i=3;
wdm164(Te);
}
if(keyv==0x0a)
{
Te[0]=0;
Te[1]=0;
Te[2]=0;
UcharToFloat(Te,38)
break;
}
}
}
break;
}
case 1:
{
while(1)
{
if(keypressed())
{
keyv=keyscan();
if(keyv==0x0a)
break;
}
}
syst_parm[1]=syst_parm[1]*(syst_parm[37]-syst_parm[38] )/( syst_parm[35]-syst_parm[36]);
FloatToUchar(1,Te);
UcharToFloat(Te,1);
Te[0]="f";
Te[1]=0;
Te[2]=1;
wdm164(Te);
while(1)
{
if(keypressed())
{
keyv=keyscan();
if(keyv==0x0a)
break;
}
}
ReT1=syst_parm[1]*(syst_parm[39]-syst_parm[16])+syst_parm[2];
ReT2=syst_parm[5]*( syst_parm[40]-syst_parm[17])+(syst_parm[6]-syst_parm[7]);
M1=Tem1+syst_parm[9](syst_parm[8]-Tem2)*Tem2/10;
M1=M1/syst_parm[12];
syst_parm[2]=syst_parm[2]+(syst_parm[38]-M1);
FloatToUchar(2,Te);
Te[0]=0;
Te[1]=0;
Te[2]=0;
UcharToFloat(Te,2);
Te[0]="f";
Te[1]=0;
Te[2]=2;
wdm164(Te);
while(1)
{
if(keypressed())
{
keyv=keyscan();
if(keyv==0x0a)
break;
}
}
break;
}
case 3:
{
while(1)
{
if(keypressed())
{
keyv=keyscan();
if(keyv==0x0a)
break;
}
}
syst_parm[3]=syst_parm[3]*(syst_parm[37]-syst_parm[38] )/( syst_parm[35]-syst_parm[36]);
FloatToUchar(3,Te);
UcharToFloat(Te,3);
Te[0]="f";
Te[1]=0;
Te[2]=1;
wdm164(Te);
while(1)
{
if(keypressed())
{
keyv=keyscan();
if(keyv==0x0a)
break;
}
}
ReT1=syst_parm[1]*(syst_parm[39]-syst_parm[16])+syst_parm[2];
ReT2=syst_parm[5]*( syst_parm[40]-syst_parm[17])+(syst_parm[6]-syst_parm[7]);
M1=Tem1+syst_parm[9](syst_parm[8]-Tem2)*Tem2/10;
M1=M1/syst_parm[12];
syst_parm[4]=syst_parm[4]+(syst_parm[37]-M1);
FloatToUchar(4,Te);
Te[0]=0;
Te[1]=0;
Te[2]=0;
UcharToFloat(Te,4);
Te[0]="f";
Te[1]=0;
Te[2]=4;
wdm164(Te);
while(1)
{
if(keypressed())
{
keyv=keyscan();
if(keyv==0x0a)
break;
}
}
break;
}
default:
break;
}
}
}
void jiaozheng(void)
{
unsigned char jz[6]={0x08,0x08,0x08,0x08,0x08,0x08};
wdm164(jz);
Counter1=0;
Counter2=0;
(*(volatile unsigned char *)0x23)=(*(volatile unsigned char *)0x23) & 0x7f;
SelfCheck=0x01;
while(1)
{
if(SelfCheck==0)
{
(*(volatile unsigned char *)0x23)=(*(volatile unsigned char *)0x23) | 0x8D;
break;
}
if(SelfCheck==2)
{
FloatToUchar(16,jz);
wdm164(jz);
}
if(SelfCheck==3)
{
FloatToUchar(17,jz);
wdm164(jz);
}
}
}
float Comunpter(void)
{
float Tem1,Tem2,M;
SelfCheck=0x01;
while(SelfCheck!=0);
if(((*(volatile unsigned char *)0x23) & 0x20)==0)
Tem1=syst_parm[3]*(syst_parm[39]-syst_parm[16])+syst_parm[4];
else
Tem1=syst_parm[1]*(syst_parm[39]-syst_parm[16])+syst_parm[2];
Tem2=syst_parm[5]*( syst_parm[40]-syst_parm[17])+(syst_parm[6]-syst_parm[7]);
syst_parm[43]=Tem2;
M=Tem1+syst_parm[9](syst_parm[8]-Tem2)*Tem2/10;
M=M/syst_parm[12];
syst_parm[43]=M
return M;
}
void liuliang(void)
{
unsigned char Hb[6]={"L",0,0,16,16,16};
unsigned char keyv;
print(2);
wdm164(Hb);
while(1)
{
if(keypressed())
{
keyv=keyscan();
if(keyv==0x0a)
{
syst_parm[41]=Hb[2];
syst_parm[28]=0;
break;
}
if( keyv>=0 && keyv<=4)
{
Hb[2]=keyv;
wdm164(Hb);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -