📄 osc.c
字号:
#include "osh.h"
#define DEBUG 0
#define MULTISAMPLE 0
extern int Printf(const char *fmt, ...);
idata OSH OS;
const unsigned char code KeyTable[13]={0,0x24,0x44,0x84,\
0x22,0x42,0x82,\
0x21,0x41,0x81,\
0x28,0x48,0x88};
void GetKey(void)
{
OS.hz[1]=OS.KeyCode1;//只要按键没松开,就一直有键值。
OS.hz[0]=OS.KeyCode0;//每300MS采样一次。
OS.KeyCode0=0;
}
void KeyScan(void)
{
SetKeyOut();
if(KeyInput()){
switch(OS.Flag.KeyState){
case 0:
OS.Flag.KeyState++;
break;
case 1:
OS.Flag.KeyState++;
OS.KeyCode=KeyScan0();
OS.Flag.KeyFlag=1;
break;
case 2:
#if MULTISAMPLE==1
OS.KeyCode=KeyScan0();
if(OS.KeyTime++>12){
OS.Flag.KeyFlag=1;
OS.KeyTime=0;
}
#endif
break;
}
}else{
OS.KeyTime=0;
OS.Flag.KeyState=0;
OS.KeyCode1=0;
OS.KeyCode0=0;
}
}
void OSHandle(void)
{
U8 uc0;
if(OS.Flag.Timer32ms){
OS.Flag.Timer32ms=0;
KeyScan();
}
if(OS.KeyCode){
#if DEBUG==1
Printf("OS.KeyCode=%x1, ",OS.KeyCode);
#endif
for(uc0=0;uc0<13;uc0++){
if(OS.KeyCode==KeyTable[uc0]) break;
}
if(uc0==0||uc0>12) OS.KeyCode1=0;
else OS.KeyCode1=0x30+uc0;
if(OS.Flag.KeyFlag){
OS.KeyCode0=OS.KeyCode1;
OS.Flag.KeyFlag=0;
}else OS.KeyCode0=0;
OS.KeyCode=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -