📄 key_scan.c
字号:
/****************************************Copyright (c)**************************************************
********************************************************************************************************/
#define IN_KEYSCAN
#include "config.h"
/******************************************************************************
4X4 矩阵键盘
四个输入引脚: EINT0 -----( GPF0 )----INPUT
EINT2 -----( GPF2 )----INPUT
EINT11-----( GPG3 )----INPUT
EINT19-----( GPG11 )----INPUT
四个输出引脚: KEYSCAN0---( GPE11 )----OUTPUT
KEYSCAN1---( GPG6 )----OUTPUT
KEYSCAN2---( GPE13 )----OUTPUT
KEYSCAN3---( GPG2 )----OUTPUT
******************************************************************************/
uint8 Key_Scan( void )
{
uint8 cur_value;
rGPGDAT = rGPGDAT & (~(1<<6)); //GPG6---output 0
rGPEDAT = rGPEDAT | (1<<13) ; //GPE13-- output 1
if( (rGPGDAT&(1<< 2)) == 0 )
cur_value =19 ; //--------------kscan2
else if( (rGPGDAT&(1<< 3)) == 0 )
cur_value=17 ; //--------------kscan3
rGPGDAT = rGPGDAT | (1<<6); //GPG6---output 1
rGPEDAT = rGPEDAT & (~(1<<13)) ; //GPE13-- output 0
if( (rGPGDAT&(1<< 2)) == 0 )
cur_value= 20 ; //--------------kscan2
else if( (rGPGDAT&(1<< 3)) == 0 )
cur_value= 18 ; //--------------kscan3
switch(cur_value) {
case 19 :
return 'U'; //加速
case 17 :
return 'D'; //减速
case 20 :
return 'Z'; //正转
case 18 :
return 'F'; //反转
}
return 'N';
}
void KeyScanInit(void)
{
rGPGCON = rGPGCON & (~(0x0f<<4)); //GPG2,3--INPUT
rGPGCON = rGPGCON & (~(0x03<<12)) | (0x01<<12); //GPG6--output
rGPGDAT= rGPGDAT & (1<<6); //output 1
rGPECON = rGPECON & (~(0x03<<26)) | (0x01<<26); //GPE13--output
rGPEDAT = rGPEDAT & (1<<13); //output 1
}
//----------------------------end---------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -