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

📄 end_hao.c

📁 可用由移动通信的好程序
💻 C
字号:
#define unchar   unsigned char
#define unint    unsigned int
#define start_addr 0x6
unchar xdata page[10]={0x00};


//#define PAGE1ADDR    7000
//#define PAGE4ADDR    8000
///////////////////////////////////////////////
unchar  code PAGE1ADDR[ ]=
{0x01,0x03,0x01,0x03,0x06,0x09,

 0x00,0x01,0x02,0xBD,0X03,0X21,0X03,0X21,  //一级队 20-25
 0X03,0X2B,0X05,0XE7,0X06,0X4B,0X06,0X4B,
 0X06,0X55,0X09,0X11,0X09,0X75,0X09,0X75,

 0X09,0X7F,0X0A,0XE1,0X0B,0X14,0X0C,0X76,  //二级队 26-31
 0X0C,0XA9,0X0E,0X0B,0X0E,0X3E,0X0F,0X0A0,
 0X0F,0XD3,0X11,0X35,0X11,0X68,0X12,0XCA,
 
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //32-37
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0X12,0XFD,0X13,0XE9,0X14,0X0B,0X14,0XF7,  //三级队  38-46
 0X15,0X19,0X16,0X05,0X16,0X27,0X17,0X13,
 0X17,0X35,0X18,0X21,0X18,0X43,0X19,0X2F,
 0X19,0X51,0X1A,0X3D,0X1A,0X5F,0X1B,0X4B,
 0X1B,0X6D,0X1C,0X59,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //32-37
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //32-37
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //32-37
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //32-37
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //32-37
 0x00,0x00,0x00,0x00,
 0X1C,0X7B,0X1C,0XF1,                      //四级队 74-79
 0X1D,0X02,0X1D,0X78,0X1D,0X89,0X1D,0XFF,
 0X1E,0X10,0X1E,0X86,0X1E,0X97,0X1F,0X0D,
 0X1F,0X1E,0X1F,0X94,0X1F,0XA5,0X1F,0XA5,
 0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
 0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
 0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
 0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
 0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5}; 
 
unchar  code PAGE11ADDR[ ]=
{0x01,0x03,0x01,0x03,0x06,0x09,

 0x02,0x00,0x30,0x00,0X03,0X01,0X03,0X21, //20
 0X04,0X2B,0X05,0XE7,0X06,0X4B,0X06,0X4B, //21
 0X06,0X55,0X09,0X11,0X09,0X75,0X09,0X75,
 0X09,0X7F,0X0A,0XE1,0X0B,0X14,0X0C,0X76,
 0X0C,0XA9,0X0E,0X0B,0X0E,0X3E,0X0F,0X0A0,
 0X0F,0XD3,0X11,0X35,0X11,0X68,0X12,0XCA,
 0X12,0XFD,0X13,0XE9,0X14,0X0B,0X14,0XF7,
 0X15,0X19,0X16,0X05,0X16,0X27,0X17,0X13,
 0X17,0X35,0X18,0X21,0X18,0X43,0X19,0X2F,
 0X19,0X51,0X1A,0X3D,0X1A,0X5F,0X1B,0X4B,
 0X1B,0X6D,0X1C,0X59,0X1C,0X7B,0X1C,0XF1,
 0X1D,0X02,0X1D,0X78,0X1D,0X89,0X1D,0XFF,
 0X1E,0X10,0X1E,0X86,0X1E,0X97,0X1F,0X0D,
 0X1F,0X1E,0X1F,0X94,0X1F,0XA5,0X1F,0XA5,
 0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
 0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
 0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
 0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
 0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5}; 
unchar  code PAGE4ADDR[6]={
0x04,0x03,0x01,0x80,0x00,0xc8
};
///////////////////////////////////////////////////////////////

unchar  stack_hao_id(unchar   xdata *input_data,unchar xdata *output_data,unchar cps1343);


unchar  stack_id_hao(unchar  xdata *input_data,unchar xdata *output_data,unchar cps1343);



unchar  id_to_hao(unint   id_number);
unchar  hao_to_id(unchar   dui_hao,unint   hu_hao);

void main(void)
{  
    unchar   xdata  ok;

	unchar xdata indata[20];
	unchar xdata outdata[20];
    

while(1){
	indata[0] = '2';
	indata[1] = '0';
	indata[2] = '2';

	indata[3] = '2';  //////////////

	indata[4] = '2';

	indata[5] = '2';
	indata[6] = '0';
	indata[7] = '2';

	indata[8] = '\n';
	indata[9] = '\n';
    
   // ok=stack_id_hao(indata,outdata,0x01);//from id to hao
//	while(1);
	ok=stack_hao_id(indata,outdata,0x02);//from hao to id 
     while(1);
       }

}
unchar  id_to_hao(unint   id_number)
{
unchar xdata dui_hao,counter,ok=0x00;//define team number
unint  xdata  hu_hao, dui_head,dui_end;
unint  code  *addr;
unchar code   *p;
 
//read l,m,s from flash
p=(unchar *)PAGE1ADDR;

//begin address 
addr=(unint  *)(PAGE1ADDR+start_addr);

for(counter=0;counter<60;counter++)    //
  { //                             
   dui_head=*addr;
   dui_end=*(addr+2);

   if(id_number>=dui_head&&id_number<dui_end)
   { ///   
    dui_hao=counter+20;
      
      if(id_number>=*(addr+1))
        {
         hu_hao=id_number-*(addr+1)+900; 
        }
        else
        hu_hao=id_number-dui_head+200;
        
			 ok=0x01;
	         break;	              
    }///
   
   addr=addr+2;
 }//



 if (ok==0x01)
 {
  page[0]=dui_hao/10+0x30;
  page[1]=dui_hao%10+0x30;
  page[2]=hu_hao/100+0x30;
  page[3]=(hu_hao%100)/10+0x30;
  page[4]=hu_hao%10+0x30;
  page[5]=0x0a;
 }

 return(ok); 

}
unchar  id_to_hao1343(unint   id_number)
{
unchar xdata dui_hao,counter,ok=0x00;//define team number
unint  xdata  hu_hao;
unint  code  *addr;
unchar code   *p;
 
//read l,m,s from flash
p=(unchar *)PAGE11ADDR;

//begin address 
addr=(unint  *)(PAGE1ADDR+start_addr);

for(counter=0;counter<60;counter++)    //
  { //                             
   

   if(id_number>=*addr&&id_number<=*(addr+1))
   { ///   
     dui_hao=counter+20;
     hu_hao=id_number-*addr+200;               
	 ok=0x01;
	 break;	              
    }/// 
   
    addr=addr+2;
    
   if(id_number>=*addr&&id_number<=*(addr+1))
   { ///   
     dui_hao=counter+20;
     hu_hao=id_number-*addr+900;               
	 ok=0x01;
	 break;	              
    }/// 

 }//



 if (ok==0x01)
 {
  page[0]=dui_hao/10+0x30;
  page[1]=dui_hao%10+0x30;
  page[2]=hu_hao/100+0x30;
  page[3]=(hu_hao%100)/10+0x30;
  page[4]=hu_hao%10+0x30;
  page[5]=0x0a;
 }

 return(ok); 

}
//从队号、个呼(组呼)到ID的转换

unchar  hao_to_id(unchar   dui_hao,unint  hu_hao)
{
 unchar xdata   ok=0x00,counter;//define team number
 unint  xdata   dui_head,dui_end,id_number;
 unint  code *addr; 
 unchar  code *p;
 
//read l,m,s from flash
p=(unchar *)PAGE1ADDR;

if(dui_hao>=20&&dui_hao<80)
{ //
addr=(unint  *)(PAGE1ADDR+start_addr);
addr+=(dui_hao-20)*2;
dui_head=*addr;
dui_end=*(addr+2);

if(hu_hao>=900)  
   id_number=hu_hao-900+*(addr+1);
else   
   id_number=hu_hao-200+dui_head;

   if(id_number>=dui_head&&id_number<dui_end)
      ok=0x01;
    else
      ok=0x00;

}      

       if(ok==0x01)
      {
       counter=0;
	   page[counter]=id_number/1000+0x30;
       counter++;
       page[counter]=(id_number%1000)/100+0x30;
       counter++;
       page[counter]=(id_number%100)/10+0x30;
       counter++;
	   page[counter]=id_number%10+0x30;
       counter++;
       page[counter]=0x0a;
      }
       return(ok);
}
//从队号、个呼(组呼)到ID的转换

unchar  hao_to_id1343(unchar   dui_hao,unint  hu_hao)
{
 unchar xdata   ok=0x00,counter;//define team number
 unint  xdata   id_number;
 unint  code *addr; 
 unchar  code *p;
 
//read l,m,s from flash
p=(unchar *)PAGE1ADDR;


if(dui_hao>=20&&dui_hao<=80)
{ //
addr=(unint  *)(PAGE1ADDR+start_addr);
addr+=(dui_hao-20)*4;

if(hu_hao>=900)
  {id_number=hu_hao-900+*(addr+2);
   if(id_number>=*(addr+2)&&id_number<=*(addr+3))
     ok=0x01;
      else
     ok=0x00;
  }
  
else if(hu_hao>=200) 
 {id_number=hu_hao-200+*addr;
   if(id_number>=*addr&&id_number<=*(addr+1))
     ok=0x01;
      else
     ok=0x00;
  }

}      

       if(ok==0x01)
      {
       counter=0;
	   page[counter]=id_number/1000+0x30;
       counter++;
       page[counter]=(id_number%1000)/100+0x30;
       counter++;
       page[counter]=(id_number%100)/10+0x30;
       counter++;
	   page[counter]=id_number%10+0x30;
       counter++;
       page[counter]=0x0a;
      }
       return(ok);
}

//栈队转换
unchar   stack_hao_id(unchar   xdata *input_data,unchar   xdata *output_data,unchar cps1343)
{
  unchar xdata  dui_hao,counter,ok=0x00;
  unchar xdata  qu_hao,self_qu_hao,self_dui_hao,self_ne_hao;
  unint  xdata   hu_hao,id_number=0x00;
  unchar xdata  *p;
  unchar code   *page4;  
     page4=(unchar *)PAGE4ADDR;
     self_qu_hao= (*(page4+3))&0x7f;
	 self_dui_hao=(*(page4+4)>>2)+20;
	 self_ne_hao=(*(page4+4)&0x03)*255+*(page4+5);
	 
   	 counter=0x00;
     for(p=input_data;*p!=0x0a;p++)  //is id hao
    {
      if(*p<0x30||*p>0x39)       
         return(0x00);  
      counter++;	   
    }

   switch(counter)
   {
    case 3:
         {
          qu_hao=*(page4+3)&0x7f;
          dui_hao=self_dui_hao;
          hu_hao=(*(input_data+0)-0x30)*100+(*(input_data+1)-0x30)*10+(*(input_data+2)-0x30);
          if(cps1343==0x01)
          ok=hao_to_id(dui_hao,hu_hao);
          else if (cps1343==0x02)
          ok=hao_to_id1343(dui_hao,hu_hao);
          break;
         }
    
    case 5:
        {
   	 	 qu_hao=*(page4+3)&0x7f;
		 dui_hao=(*(input_data+0)-0x30)*10+(*(input_data+1)-0x30); 		  
	     hu_hao=(*(input_data+2)-0x30)*100+(*(input_data+3)-0x30)*10+(*(input_data+4)-0x30);	
		 if(cps1343==0x01)
          ok=hao_to_id(dui_hao,hu_hao);
          else if(cps1343==0x02)
          ok=hao_to_id1343(dui_hao,hu_hao);
		 break;
		 }

   case 8:
         {
		 qu_hao=(*input_data-0x30)*100+(*(input_data+1)-0x30)*10+(*(input_data+2)-0x30)-200;
           if(!(qu_hao>=0x00&&qu_hao<=127))
               return(0x00);
		 dui_hao= dui_hao=(*(input_data+3)-0x30)*10+(*(input_data+4)-0x30); 	
		 hu_hao=(*(input_data+5)-0x30)*100+(*(input_data+6)-0x30)*10+(*(input_data+7)-0x30);
		 if(cps1343==0x01)
          ok=hao_to_id(dui_hao,hu_hao);
          else if(cps1343==0x02)
          ok=hao_to_id1343(dui_hao,hu_hao);
		 break;
		 }
    
     default:return(0x00);break;

    }


    if(ok==0x01)
	{	 
   
	 if(qu_hao!=self_qu_hao)
	 {
      for(counter=0;counter<3;counter++)
	   output_data[counter]=input_data[counter];  //区号
       output_data[0]-=0x02;
	   //////////////////////////////////////////////////////////
      for(counter=0;counter<5;counter++)	 
	   output_data[counter+3]=page[counter];
 	 
	 return(0x03);
	 }

	 else 
     {
     for(counter=0;counter<5;counter++)
	  output_data[counter]=page[counter];
     
     return(0x02);
     }
	}

 return(0x00);
    
}



unchar   stack_id_hao(unchar   xdata *input_data,unchar   xdata *output_data,unchar cps1343)
{
  unchar xdata  qu_hao,counter,ok=0x00;
  unchar xdata  self_qu_hao,self_dui_hao,self_ne_hao;
  unint  xdata  id_number=0x00;
  unchar xdata  *p;
  unchar code   *page4; 
     page4=(unchar *)PAGE4ADDR;  
     self_qu_hao=(*(page4+3))&0x7f;
	 self_dui_hao=(*(page4+4)>>2)+20;
	 self_ne_hao=(*(page4+4)&0x03)*255+*(page4+5);
	 
   	 counter=0x00;
     for(p=input_data;*p!=0x0a;p++)  //is id hao
    {
      if(*p<0x30||*p>0x39)       
         return(0x00);  
      counter++;	   
    }

   switch(counter)
   {
    case 4: //only input id number
        {
   	 	 qu_hao=self_qu_hao;		  		  
	     id_number=(*input_data-0x30)*1000+(*(input_data+1)-0x30)*100+(*(input_data+2)-0x30)*10+(*(input_data+3)-0x30);	
         if(cps1343==0x01)
		 ok=id_to_hao(id_number);
	     else if(cps1343==0x02)
         ok=id_to_hao1343(id_number);
		 break;
		 }

   case 8:  //input area number  id number  exp:0 000 0002
         {
		 qu_hao=(*(input_data+0)-0x30)*100+(*(input_data+1)-0x30)*10+(*(input_data+2)-0x30);
         if (!(qu_hao>=0&&qu_hao<=127))
             return(0x00); 
		 id_number=(*(input_data+4)-0x30)*1000+(*(input_data+5)-0x30)*100+(*(input_data+6)-0x30)*10+(*(input_data+7)-0x30);
         if(cps1343==0x01)
		 ok=id_to_hao(id_number);
	     else if(cps1343==0x02)
         ok=id_to_hao1343(id_number);
		 break;
		 }
    
     default:return(0x00);break;

    }


    if(ok==0x01)
	{	 
    
	 if(qu_hao!=self_qu_hao)                    //diffrent  area
	 {     
     for(counter=0;counter<3;counter++)          
	 output_data[counter]=input_data[counter];  //区号	

     output_data[0]+=0x02;

     for(counter=0;counter<6;counter++)
	 output_data[counter+3]=page[counter];
	 
	 return(0x01);
	 }

     if(self_dui_hao!=(page[0]-0x30)*10+page[1]-0x30)  //diffrent  team
	 {
      for(counter=0;counter<6;counter++)
	   output_data[counter]=page[counter];      
	   return(0x01);  
	 }
	 else 
     {
     for(counter=0;counter<4;counter++)          //the same team only display ge hao or zu hao
	   output_data[counter]=page[counter+2];      
     return(0x01);
     }
	}

 return(0x00);
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -