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

📄 scankey.c

📁 用于GPRS远程电力抄表系统中采集器端的程序
💻 C
字号:
#include "io.h"
#include "ioscan.h"
#include "ioport.h"
#include "i2c.h"
#include "recframe.h"
#include "process.h"

void io_cmp(uchar io_num)
{
	io_status[io]=1;	
	bak_status[io_num]=io_status[io_num];
}

void io_Scan1(void)
{
	recode=(port2&0xF0)|0x0F;
	io_temp=(~sccode)+(~recode);
	if((io_temp&0x11)==0x11)    
	{
         io = 0x00;
         io_cmp(io);
	}
	else io_status[0]=0;              
	if((io_temp&0x21)==0x21)    
	{
          io = 0x01;
          io_cmp(io);
	}
	else io_status[1]=0; 
	if((io_temp&0x41)==0x41)       
	{
		io = 0x02;
		io_cmp(io);
	}
	else io_status[2]=0;    
	if((io_temp&0x81)==0x81)  
	{
		io = 0x03;
		io_cmp(io);
	}
	else io_status[3]=0; 
   
}

void io_Scan2(void)   
{    
      recode=(port2&0xF0)|0x0F;
      io_temp=(~sccode)+(~recode);
      if((io_temp&0x12)==0x12)    
       {
         io = 0x04;
         io_cmp(io);
       }
      else io_status[4]=0;              
      if((io_temp&0x22)==0x22)    
       {
          io = 0x05;
          io_cmp(io);
       }
      else io_status[5]=0; 
      if((io_temp&0x42)==0x42)       
       {
          io = 0x06;
          io_cmp(io);
       }
      else io_status[6]=0;    
      if((io_temp&0x82)==0x82)  
       {
          io = 0x07;
         io_cmp(io);
       }
      else io_status[7]=0; 
  
}

void io_Scan3(void)   
{      
      recode=(port2&0xF0)|0x0F;
      io_temp=(~sccode)+(~recode);
      if((io_temp&0x14)==0x14)   
       {
         io = 0x08;
         io_cmp(io);
       }
      else io_status[8]=0;  
      if((io_temp&0x24)==0x24)  
       {
         io = 0x09;
         io_cmp(io);
       }
      else io_status[9]=0;     
      if((io_temp&0x44)==0x44)                                                     
       {
          io = 0x0A;
          io_cmp(io);
       }
      else io_status[10]=0;      
      if((io_temp&0x84)==0x84)                                                     
       {
          io = 0x0B;
          io_cmp(io);
       }
      else io_status[11]=0; 
  
}

void io_Scan4(void)   
{   
      recode=(port2&0xF0)|0x0F;    
      io_temp=(~sccode)+(~recode);              
      if((io_temp&0x18)==0x18)      
       {
          io = 0x0C;
          io_cmp(io);
       }
      else io_status[12]=0;
      if((io_temp&0x28)==0x28)  
       {
          io = 0x0D;
          io_cmp(io);
       }
      else io_status[13]=0;
      if((io_temp&0x48)==0x48)
       {
         io = 0x0E; 
         io_cmp(io);
       }
      else io_status[14]=0;   
      if((io_temp&0x88)==0x88) 
       {
         io = 0x0F;
         io_cmp(io);
       }
      else io_status[15]=0; 
   
}
 

void count(uchar i)
{
	sum[i][5]++;
	if((sum[i][5]&0x0f)>0x09)
	  	sum[i][5]=((sum[i][5]&0xf0)+0x10); 	
    if(sum[i][5]>0x99)
    { 
     	sum[i][4]++;
	  	if((sum[i][4]&0x0f)>0x09)
	   		sum[i][4]=((sum[i][4]&0xf0)+0x10);
      	if(sum[i][4]>0x99)
       	{
         	sum[i][3]++;
		 	if((sum[i][3]&0x0f)>0x09)
	   			sum[i][3]=((sum[i][3]&0xf0)+0x10);
         	if(sum[i][3]>0x99)
          	{
            	sum[i][2]++;
				if((sum[i][2]&0x0f)>0x09)
	   				sum[i][2]=((sum[i][2]&0xf0)+0x10);        
              	if(sum[i][2]>0x99)
             	{ 
              		sum[i][1]++;
			  		if((sum[i][1]&0x0f)>0x09)
	   					sum[i][1]=((sum[i][1]&0xf0)+0x10);
              		if(sum[i][1]>0x99)
               		{
                		sum[i][0]++;
						if((sum[i][0]&0x0f)>0x09)
	   						sum[i][0]=((sum[i][0]&0xf0)+0x10);
                		if(sum[i][0]>0x99)
                       		sum[i][0]=0x00;
                 		
                		sum[i][1]=0x00;
               		}
              		sum[i][2]=0x00; 
             	}
             	sum[i][3]=0x00;
           	}
          	sum[i][4]=0x00;
        }
       	sum[i][5]=0x00; 
     }
}

void freezecount(uchar i)
{
	freezesum[i][5]++;
	if((freezesum[i][5]&0x0f)>0x09)
	  	freezesum[i][5]=((freezesum[i][5]&0xf0)+0x10); 	
    if(freezesum[i][5]>0x99)
    { 
     	freezesum[i][4]++;
	  	if((freezesum[i][4]&0x0f)>0x09)
	   		freezesum[i][4]=((freezesum[i][4]&0xf0)+0x10);
      	if(freezesum[i][4]>0x99)
       	{
         	freezesum[i][3]++;
		 	if((freezesum[i][3]&0x0f)>0x09)
	   			freezesum[i][3]=((freezesum[i][3]&0xf0)+0x10);
         	if(freezesum[i][3]>0x99)
          	{
            	freezesum[i][2]++;
				if((freezesum[i][2]&0x0f)>0x09)
	   				freezesum[i][2]=((freezesum[i][2]&0xf0)+0x10);        
              	if(freezesum[i][2]>0x99)
             	{ 
              		freezesum[i][1]++;
			  		if((freezesum[i][1]&0x0f)>0x09)
	   					freezesum[i][1]=((freezesum[i][1]&0xf0)+0x10);
              		if(freezesum[i][1]>0x99)
               		{
                		freezesum[i][0]++;
						if((freezesum[i][0]&0x0f)>0x09)
	   						freezesum[i][0]=((freezesum[i][0]&0xf0)+0x10);
                		if(freezesum[i][0]>0x99)
                       		freezesum[i][0]=0x00;
                 		
                		freezesum[i][1]=0x00;
               		}
              		freezesum[i][2]=0x00; 
             	}
             	freezesum[i][3]=0x00;
           	}
          	freezesum[i][4]=0x00;
        }
       	freezesum[i][5]=0x00; 
     }
}


void io_process(uchar tmp)
{
	register uchar i;
    for(i=tmp;i<tmp+4;i++)
	{
		if (io_status[i]==0&&bak_status[i]==1)
		{
			bak_status[i]=0;
			count(i);
			if(FreezeFlag)
				freezecount(i);	
				  
		} 
	}

}    


⌨️ 快捷键说明

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