keyscan.c

来自「这个是安防用的控制键盘C源程序,采用KEIL C51开发.用于控制前端解码器!」· C语言 代码 · 共 236 行

C
236
字号

//scan the Alarm input
#include "reg52.h"
#include "main.h"



unsigned char data keydata;
extern keybuffer;

void keyscan(void)
{
 unsigned char data keytmp;
 keydata=0;
 P0=0xFE;
 keytmp = ~(P2) & 0x1f;

 switch(keytmp)
  {
   case 1:
     keydata = K_0;
	 break;
   case 2:
     keydata = K_8;
	 break;
   case 4:
     keydata = K_mon;
	 break;
   case 8:
     keydata = K_salvo;
	 break;
   case 16:
     keydata = K_f1;
	 break;
   default:
     break;
  }

 P0=0xFD;
 keytmp = ~(P2) & 0x1f;

 switch(keytmp)
 {
   case 1:
     keydata = K_1;
	 break;
   case 2:
     keydata = K_9;
	 break;
   case 4:
     keydata = K_cam;
	 break;
   case 8:
     keydata = K_run;
	 break;
   case 16:
     keydata = K_f2;
	 break;
   default:
     break;
  }

 P0=0xFB;
 keytmp = ~(P2) & 0x1f;

 switch(keytmp)
  {
   case 1:
     keydata = K_2;
	 break;
   case 2:
     keydata = K_close;
	 break;
   case 4:
     keydata = K_on;
	 break;
   case 8:
     keydata = K_hold;
	 break;
   case 16:
     keydata = K_prog;
     break;
   default:
     break;
  }

 P0=0xF7;
 keytmp = ~(P2) & 0x1f;

 switch(keytmp)
  {
   case 1:
     keydata = K_3;
	 break;
   case 2:
     keydata = K_open;
	 break;
   case 4:
     keydata = K_off;
	 break;
   case 8:
     keydata = K_b;
	 break;
   case 16:
     keydata = K_arm;
     break;
   default:
     break;
  }

 P0=0xEF;
 keytmp = ~(P2) & 0x1f;

 switch(keytmp)
  {
   case 1:
     keydata = K_4;
	 break;
   case 2:
     keydata = K_near;
	 break;
   case 4:
     keydata = K_shot;
	 break;
   case 8:
     keydata = K_time;
	 break;
   case 16:
     keydata = K_last;
     break;
   default:
     break;
  }

 P0=0xDF;
 keytmp = ~(P2) & 0x1f;

 switch(keytmp)
  {
   case 1:
     keydata = K_5;
	 break;
   case 2:
     keydata = K_far;
	 break;
   case 4:
     keydata = K_patran;
	 break;
   case 8:
     keydata = K_a;
	 break;
   case 16:
     keydata = K_next;
     break;
   default:
     break;
  }

 P0=0xBF;
 keytmp = ~(P2) & 0x1f;

 switch(keytmp)
  {
   case 1:
     keydata = K_6;
	 break;
   case 2:
     keydata = K_wide;
	 break;
   case 4:
     keydata = K_aux;
	 break;
   case 8:
     keydata = K_ack;
	 break;
   case 16:
     keydata = K_vcr;
     break;
   default:
     break;
  }

 P0=0x7F;
 keytmp = ~(P2) & 0x1f;

 switch(keytmp)
  {
   case 1:
     keydata = K_7;
	 break;
   case 2:
     keydata = K_tele;
	 break;
   case 4:
     keydata = K_clear;
	 break;
   case 8:
     keydata = K_lock;
	 break;
   case 16:
     keydata = K_user;
     break;
   default:
     break;
  }

 // return keydata;
}



























⌨️ 快捷键说明

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