key_lpt.c

来自「用于凌阳单片机」· C语言 代码 · 共 60 行

C
60
字号
#include <SPCE061V004.H>

#define P_Flash_Ctrl (volatile unsigned int *)(0x7555)

unsigned int press_key_lpt() //A口低八为并行键盘所用
{
  unsigned int temp;
  *P_IOA_Dir|=0x000f;
  *P_IOA_Attrib|=0x00ff;  //低四位为输出,高四位输入
  *P_IOA_Data&=0xff00;
  *P_IOA_Data|=0x00fe;  //扫描第一行
  temp=*P_IOA_Data^0x00fe;
  temp&=0x00ff;
  switch(temp)          //根据键值返回按键序号
  {
    case 0x0010:return(1);
    case 0x0020:return(2);
    case 0x0040:return(3);
    case 0x0080:return(4);
    default:break;
  }
  *P_IOA_Data&=0xff00;
  *P_IOA_Data|=0x00fd;  //扫描第二行
  temp=*P_IOA_Data^0x00fd;
  temp&=0x00ff;
  switch(temp)          //根据键值返回按键序号
  {
    case 0x0010:return(5);
    case 0x0020:return(6);
    case 0x0040:return(7);
    case 0x0080:return(8);
    default:break;
  }
  *P_IOA_Data&=0xff00;
  *P_IOA_Data|=0x00fb;  //扫描第三行
  temp=*P_IOA_Data^0x00fb;
  temp&=0x00ff;
  switch(temp)          //根据键值返回按键序号
  {
    case 0x0010:return(9);
    case 0x0020:return(10);
    case 0x0040:return(11);
    case 0x0080:return(12);
    default:break;
  }
  *P_IOA_Data&=0xff00;
  *P_IOA_Data|=0x00f7;  //扫描第四行
  temp=*P_IOA_Data^0x00f7;
  temp&=0x00ff;
  switch(temp)          //根据键值返回按键序号
  {
    case 0x0010:return(13);
    case 0x0020:return(14);
    case 0x0040:return(15);
    case 0x0080:return(16);
    default:return(0);
  }
}

⌨️ 快捷键说明

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