⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyprocess.i

📁 AVR单片机用C语言编写的包括时钟
💻 I
📖 第 1 页 / 共 2 页
字号:
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 + -