📄 key16.c
字号:
#include<reg51.h>
#include<stdio.h>
Uart_Init();
sbit P10=0x90; //此方法用位+位替代比直用P1口少占40个字节空间
sbit P11=0x91;
sbit P12=0x92;
sbit P13=0x93;
sbit P14=0x94;
sbit P15=0x95;
sbit P16=0x96;
sbit P17=0x97;
int nKeyNumber;
void GetKeyNumber();
main()
{ Uart_Init();
while(1)
{ nKeyNumber=0xFF;
GetKeyNumber();
switch(nKeyNumber)
{ case(0xFF):printf("No key pressed\n"); break;
case(0x00):printf("key NO. 0 down\n"); break;
case(0x01):printf("key NO. 1 down\n"); break;
case(0x02):printf("key NO. 2 down\n"); break;
case(0x03):printf("key NO. 3 down\n"); break;
case(0x04):printf("key NO. 4 down\n"); break;
case(0x05):printf("key NO. 5 down\n"); break;
case(0x06):printf("key NO. 6 down\n"); break;
case(0x07):printf("key NO. 7 down\n"); break;
case(0x08):printf("key NO. 8 down\n"); break;
case(0x09):printf("key NO. 9 down\n"); break;
case(0x0A):printf("key NO. A down\n"); break;
case(0x0B):printf("key NO. B down\n"); break;
case(0x0C):printf("key NO. C down\n"); break;
case(0x0D):printf("key NO. D down\n"); break;
case(0x0E):printf("key NO. E down\n"); break;
case(0x0F):printf("key NO. F down\n"); break;
}
}
}
Uart_Init()
{ SCON=0X51; //设置串行口控制寄存器SCON
TMOD=0X20; //12M时钟波特率为2400
TCON=0X69;
TH1=0XF3;
}
void GetKeyNumber()
{ P14=0;
{ if(P13==0) nKeyNumber=0x00;
if(P12==0) nKeyNumber=0x01;
if(P11==0) nKeyNumber=0x02;
if(P10==0) nKeyNumber=0x03;
if(nKeyNumber!=0xff) return;
}
P14=1;
P15=0;
{ if(P13==0) nKeyNumber=0x04;
if(P12==0) nKeyNumber=0x05;
if(P11==0) nKeyNumber=0x06;
if(P10==0) nKeyNumber=0x07;
if(nKeyNumber!=0xff) return;
}
P15=1;
P16=0;
{ if(P13==0) nKeyNumber=0x08;
if(P12==0) nKeyNumber=0x09;
if(P11==0) nKeyNumber=0x0A;
if(P10==0) nKeyNumber=0x0B;
if(nKeyNumber!=0xff) return;
}
P16=1;
P17=0;
{ if(P13==0) nKeyNumber=0x0C;
if(P12==0) nKeyNumber=0x0D;
if(P11==0) nKeyNumber=0x0E;
if(P10==0) nKeyNumber=0x0F;
if(nKeyNumber!=0xff) return;
}
P17=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -