📄 keyboard.c
字号:
/*#include <SPCE061A.h>
#include <MyBit.h>
#define uint unsigned int
#define keyport *P_IOA_Data
#define keyport_f0() {keyport=(keyport|0x00f0)&0xfff0;}
#define keyport_0f() {keyport=(keyport|0x000f)&0xff0f;}
#define key_down ((keyport&0x00ff)!=0x00f0)
const uint cmp[]=
{
0x77,0xb7,0xd7,0xe7,
0x7B,0xbB,0xdB,0xeB,
0x7D,0xbD,0xdD,0xeD,
0x7E,0xbE,0xdE,0xeE
};
uint key;
void kb_delay(uint i)
{
while(--i)*P_Watchdog_Clear=0x0001;
}
uint Keydown(void);
uint kbscan(void)
{
uint c1,c2,n;
uint keyvalue;
uint keycode;
keyvalue=0xff;
while(!Keydown()); //去抖动
do
{ //等待键盘放开
*P_Watchdog_Clear=0x0001;
kb_delay(1000); //去抖动
}while(!Keydown());
keyport_f0();
kb_delay(50);
c1=keyport&0xf0;
keyport_0f();
kb_delay(50);
c2=keyport&0x0f;
keycode=c1+c2;
for(n=0;n<16;n++)
{
if(keycode==cmp[n]) keyvalue=n;
}
keyport_f0();
kb_delay(50);
while(Keydown());
do
{ //等待键盘放开
*P_Watchdog_Clear=0x0001;
kb_delay(20000); //去抖动
}while(Keydown());
return(keyvalue);
}
uint Keydown(void)
{
keyport_f0();
kb_delay(50);
if(key_down)return 1;
else return 0;
}
*/
#include <SPCE061A.h>
#include <MyBit.h>
#define uint unsigned int
/*#define keyport *P_IOA_Data
#define keyport_f0() {keyport=(keyport|0x00f0)&0xfff0;}
#define keyport_0f() {keyport=(keyport|0x000f)&0xff0f;}
#define key_down ((keyport&0x00ff)!=0x00f0)*/
#define keyport AL
#define keyport_f0() {AL=0xf0;}
#define keyport_0f() {AL=0x0f;}
#define key_down (AL!=0xf0)
const uint cmp[]=
{
0x77,0xb7,0xd7,0xe7, /*01110111,10110111,11010111,11100111*/
0x7B,0xbB,0xdB,0xeB, /*01111011,10111011,11011011,11101011*/
0x7D,0xbD,0xdD,0xeD, /*01111101,10111101,11011101,11101101*/
0x7E,0xbE,0xdE,0xeE /*11101110,11011110,10111110,01111110*/
};
uint key;
void kb_delay(uint i)
{
while(--i)*P_Watchdog_Clear=0x0001;
}
uint Keydown(void);
uint kbscan(void)
{
uint c1,c2,n;
uint keyvalue;
uint keycode;
keyvalue=0xff;
while(!Keydown()); //去抖动
do
{ //等待键盘放开
*P_Watchdog_Clear=0x0001;
kb_delay(1000); //去抖动
}while(!Keydown());
keyport_f0();
kb_delay(50);
c1=keyport&0xf0;
keyport_0f();
kb_delay(50);
c2=keyport&0x0f;
keycode=c1+c2;
for(n=0;n<16;n++)
{
if(keycode==cmp[n]) keyvalue=n;
}
keyport_f0();
kb_delay(50);
while(Keydown());
do
{ //等待键盘放开
*P_Watchdog_Clear=0x0001;
kb_delay(20000); //去抖动
}while(Keydown());
return(keyvalue);
}
uint Keydown(void)
{
keyport_f0();
kb_delay(50);
if(key_down)return 1;
else return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -