📄 keyboard.h
字号:
/***********************************JBB*************************************/
#ifndef _KEYBOARD_H
#define _KEYBOARD_H
#include "reg52\reg52.h"
#define START 0
#define LSB 1
#define MSB 8
#define PARITY 9
#define STOP 10
#define DOWN1 3
#define DOWN2 4
#define PRESSED 1
#define UNPRESSED 0
#define RELEASED 2
/*F16 New card Keypad connection*/
sbit ENTER_KEY = 0xB4; //0X94;
sbit DOWN_ARROW_KEY = 0xB4; //0X95;
sbit UP_ARROW_KEY = 0xB4; //0x96;
sbit ESCAPE_KEY = 0xB4; //0x97;
/*F16 New Card*/
sbit KB_CLCK = 0xB2;
sbit KB_DATA = 0x92;
#define RESET_KEYBOARD() is_keypressed = 0
unsigned char bit_received = 0;
unsigned char recent_scan_code;
struct key
{
unsigned char scan;
unsigned char ascii_lower;
//unsigned char ascii_upper;
};
const struct key code keys[] = {22,'1',
30,'2',
37,'4',
38,'3',
46,'5',
54,'6',
61,'7',
62,'8',
69,'0',
70,'9'};
#define RIGHT_ALT 17
#define RIGHT_CNTRL 20
#define END 105
#define LEFT_ARROW 107
#define HOME 108
#define INSERT 112
#define DELETE 113
#define DOWN_ARROW 114
#define RIGHT_ARROW 116
#define UP_ARROW 117
#define PAGE_DOWN 122
#define PAGE_UP 125
#define BACK_SPACE 8
#define ENTER 13
#define ESCAPE 27
#define SPACE_BAR ' '
#define CONTROL 225
unsigned char is_keypressed = 0;
unsigned char bit_no = 1;
void kbint() interrupt 0
{
ET0 = 0;
is_keypressed = 1;
return;
}
char kbisr()
{
bit_no = 1;
while(KB_CLCK);
recent_scan_code = 0x00;
bit_received = 0x01;
while(!KB_CLCK);
while(bit_no <= 8)
{
while(KB_CLCK);
if(KB_DATA)
{
recent_scan_code = recent_scan_code | bit_received;
}
bit_received <<= 1;
bit_no++;
while(!KB_CLCK);
}
while(KB_CLCK);
while(!KB_CLCK);
while(KB_CLCK);
while(!KB_CLCK);
is_keypressed = 0;
return 0;
}
unsigned char scantoascii(unsigned char scan)
{
unsigned char i;
for(i = 0; i < sizeof(keys) / sizeof(struct key); i++)
{
if(keys[i].scan == scan)return keys[i].ascii_lower;
}
return 0;
}
/*
int keyboardconnected()
{
return is_keypressed;
}
*/
/*
int keypressed()
{
if(is_keypressed)
{
is_keypressed = 0;
return 1;
}
return 0;
}
*/
char getkey()
{
char temp;
char key;
//if(keypressed)temp = kbisr();
//else return 0;
temp = kbisr();
if(temp == -1)
{
return 0;
}
if(recent_scan_code == 0xE0)
{
temp = kbisr();
if(temp == -1)
{
return 0;
}
key = recent_scan_code;
return key;
}
temp = kbisr();
if(temp == -1)
{
return 0;
}
if(recent_scan_code == 0xF0)
{
temp = kbisr();
if(temp == -1)
{
return 0;
}
key = scantoascii(recent_scan_code);
}
else
{
key = scantoascii(recent_scan_code);
}
if(key > 'a' && key <= 'z')key = 'A' + key - 'a';
return key;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -