📄 keyboard.c
字号:
#include <reg51.h>
#include <8255A.h>
#include <keyboard.h>
void delay10ms(void)
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=4;j>0;j--)
for(k=248;k>0;k--);
}
void delay500ms(void)
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}
void setcol(Uchar col)
{
// SelectForm0(0,0,0,1);//PortA output ,PortB input
delay8255();
if (col==1) PortA=0xff-0x10;
if (col==2) PortA=0xff-0x20;
if (col==3) PortA=0xff-0x40;
if (col==4) PortA=0xff-0x80;
}
Uchar getrow()
{
Uchar temprow=0,port=0;
port=PortB&0x0f;
switch(port)
{
case 14:temprow=1;break;
case 13:temprow=2;break;
case 11:temprow=3;break;
case 7:temprow=4;break;
default:temprow=0;
}
return (temprow);
}
void delay8255(void)
{
Uchar i;
for(i=0;i<100;i++);
}
unsigned char WaitKey()
{
char col,row,temprow,tempcol;
int flag=0;
temprow=0;
while(temprow==0)
{
for(tempcol=1;tempcol<=4;tempcol++)
{
setcol(tempcol);
// delay10ms();
temprow=getrow();
if(temprow!=0)
{
// delay10ms();
// if(temprow==getrow())
{
col=tempcol;
row=temprow;
break;
}
}
}
}
return(10*col+row);
}
unsigned char GetKey()
{
int tmp,ret;
Uchar i=0;
SelectForm0(0,0,0,1);
delay8255();
tmp = WaitKey();
switch(tmp)
{
case 11: ret=NUM0;break;
case 21: ret=NUM8;break;
case 31: ret=NUM5;break;
case 41: ret=NUM2;break;
case 12: ret=CANCEL;break;
case 22: ret=NUM9;break;
case 32: ret=NUM6;break;
case 42: ret=NUM3;break;
case 13: ret=DOWN;break;
case 23: ret=RIGHT;break;
case 33: ret=LEFT;break;
case 43: ret=UP;break;
case 14: ret=CONFIRM;break;
case 24: ret=NUM7;break;
case 34: ret=NUM4;break;
case 44: ret=NUM1;break;
default: ret=0xff;
}
return ret;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -