keyscan.c

来自「PIC单片机上的键盘扫描」· C语言 代码 · 共 75 行

C
75
字号
#include<pic.h>

#define uint unsigned int
#define uchar unsigned char

//uchar keyscan(void)

const	uchar	Led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};


uchar temp;

void delay(uchar a)    //8+3*(a-1)
{
  uchar b;
  b = a;
  while(b--);
}

void rb_initial(void)
{
  TRISB = 0XF0;
  OPTION = 0X00;//启动RB弱上啦RBPU\
}

void rd_initial(void)
{
  TRISD = 0X00;
}

/*void delay(void)
{
  uchar i;
 for(i=50;i--;)
{;}
}*/

uchar keyscan(void)
{
 PORTB = 0XFE;
      if(RB4 == 0)delay(30);if(RB4 == 0) temp = 1;
      if(RB5 == 0)delay(30);if(RB5 == 0) temp = 2;
      if(RB6 == 0)delay(30);if(RB6 == 0) temp = 3;
      if(RB7 == 0)delay(30);if(RB7 == 0) temp = 4;
 PORTB = 0XFD;
      if(RB4 == 0)delay(30);if(RB4 == 0) temp = 5;
      if(RB5 == 0)delay(30);if(RB5 == 0) temp = 6;
      if(RB6 == 0)delay(30);if(RB6 == 0) temp = 7;
      if(RB7 == 0)delay(30);if(RB7 == 0) temp = 8;
 PORTB = 0XFB;
      if(RB4 == 0)delay(30);if(RB4 == 0) temp = 9;
      if(RB5 == 0)delay(30);if(RB5 == 0) temp = 10;
      if(RB6 == 0)delay(30);if(RB6 == 0) temp = 11;
      if(RB7 == 0)delay(30);if(RB7 == 0) temp = 12;
 PORTB = 0XF7;
      if(RB4 == 0)delay(30);if(RB4 == 0) temp = 13;
      if(RB5 == 0)delay(30);if(RB5 == 0) temp = 14;
      if(RB6 == 0)delay(30);if(RB6 == 0) temp = 15;
      if(RB7 == 0)delay(30);if(RB7 == 0) temp = 16; 
 return(temp);

} 


main()
{
 uchar TEMP;
  rb_initial();
  rd_initial();
  while(1)
   {
     keyscan();
     PORTD = Led[temp] ;
    }
}

⌨️ 快捷键说明

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