4x4.c

来自「PIC单片机4*4键盘扫描C语言程序」· C语言 代码 · 共 121 行

C
121
字号
#include <pic.h>
char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char m;
__CONFIG(0x1832);
delay()
{int j;
 for(j=50;j>0;j--);	
}
delay1()
{unsigned int j;
 for(j=5000;j--;);	
}
keyscan()
{char temp,key;
 PORTC=0XFE;
 asm("nop");
 temp=PORTC;
 temp=temp&0xf0;
 if(temp!=0xf0)
  {if(temp==0xe0)
       key=13;
   if(temp==0xd0)
       key=17;
   if(temp==0xb0)
       key=21;
   if(temp==0x70)
       key=25;  
  
  }
 else
   {PORTC=0xfd;
    asm("nop");
    temp=PORTC;
    temp=temp&0xf0;
    if(temp!=0xf0)
     {if(temp==0xe0)
          key=12;
      if(temp==0xd0)
	key=16;
      if(temp==0xb0)
          key=20;
      if(temp==0x70)
	key=24;  
      }
      
    else
    { PORTC=0xfb;
      asm("nop");
      temp=PORTC;
      temp=temp&0xf0;
   
      if(temp!=0xf0)
        {if(temp==0xe0)
	  key=11;
         if(temp==0xd0)
	  key=15;
         if(temp==0xb0)
	  key=19;
         if(temp==0x70)
	  key=23;  
       }
       
      else
       {PORTC=0XF7;
        asm("nop");
        temp=PORTC;
        temp=temp&0xf0;
        if(temp!=0xf0)
         {if(temp==0xe0)
	  key=10;
          if(temp==0xd0)
	  key=14;
          if(temp==0xb0)
	  key=18;
          if(temp==0x70)
	  key=22;  
         }
         
        else
          key=m;	  
	  
	  
   }
	    
	   	  
	  
   }
   }
 	
return key;	
}
initport()
{ADCON1=0x7f;
 PORTA=0X3F;
 TRISC=0xf0;
 TRISD=0x00;
 TRISA=0x00;
 PORTD=0XFF;
 INTCON=0x00;	
}
disp(s)
{char s0,s1;
 s0=s%10;
 s1=s/10;
 PORTD=tab[s0];
 PORTA=0X1F;
 delay();
 PORTD=tab[s1];
 PORTA=0X2F;
 delay();

}
main()
{
 initport();
 while(1)
 {m=keyscan();	 
  disp(m);
  }
}

⌨️ 快捷键说明

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