📄 int0.c
字号:
#include <reg51.h>
#include <intrins.h>
#include <SerialPort.h>
#include <ps2.h>
#define uchar unsigned char
#define uint unsigned int
void keycase(void);
uchar codeunshifted[][2] =
{
0x1C, 'a',
0x32, 'b',
0x21, 'c',
0x23, 'd',
0x24, 'e',
0x2B, 'f',
0x34, 'g',
0x33, 'h',
0x43, 'i',
0x3B, 'j',
0x42, 'k',
0x4B, 'l',
0x3A, 'm',
0x31, 'n',
0x44, 'o',
0x4D, 'p',
0x15, 'q',
0x2D, 'r',
0x1B, 's',
0x2C, 't',
0x3C, 'u',
0x2A, 'v',
0x1D, 'w',
0x22, 'x',
0x35, 'y',
0x1A, 'z',
0x45, '0',
0x16, '1',
0x1E, '2',
0x26, '3',
0x25, '4',
0x2E, '5',
0x36, '6',
0x3D, '7',
0x3E, '8',
0x46, '9'
};
uchar BF1=0,key_ASCII;
void main(void) //入口函数
{
uchar i;
EA=1; //首先开启总中断
EX0=1; //开启外部中断 0
IT0=1; // 设置成 下降沿触发方式
seriaportset();
do{ //循环
if(BF)
{
keycase();
if(BF1)
{
P2=~keyram[0];
for(i=0;i<=35;i++)
{
if(keyram[0]==codeunshifted[i][0])
{key_ASCII=codeunshifted[i][1];
send(key_ASCII);
}
}
BF1=0;
}
BF=0;
EA=1;
}
else
EA=1;
}
while(1);
}
void keycase(void)
{
switch (dnum)
{ case 0:
dnum++;
break;
case 1:
if(keyv==0xf0)
dnum=2;
else dnum=0;
break;
case 2:
if (keyram[0]==keyram[2])
{ BF1=1;
dnum=0; }
else dnum=0;
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -