📄 按键.c
字号:
void Init_Port(void)
{
//将P6端口所有的管脚在初始化的时候设置为输入方式
P6DIR=0;
//将P6端口所有的管脚设置为一般I/O端口
P6SEL=0;
//将P6.3 P6.4设置为输出方向
P6DIR|=BIT3;
P6DIR|=BIT4;
//先输出低电平
P6OUT=0x00;
return;
}
int KeyScan(void)
{
int np65,np66,np67;
int keyvalue=0;
for(;;)
{
//读取各个管脚的状态
np65=P6IN&BIT5;
np66=(P6IN&BIT6)>>1;
np67=(P6IN&BIT7)>>2;
//是否有键按下
if(np65==0||np66==0||np67==0)
{
//有键按下
break;
}
}
delay(); //延迟
//读取各个管脚的状态
np65=P6IN&BIT5;
np66=(P6IN&BIT6)>>1;
np67=(P6IN&BIT7)>>2;
//是否有键按下
if(np65==0||np66==0||np67==0)
{
//有键按下
keyvalue=keyprocess();
}
else return -1;
return keyvalue;
}
///延时程序
void delay(void)
{
int i;
for(i=100;i--;i>0);
}
//按键分析程序
int keyprocess(void)
{
int np65,np66,np67;
int keyvalue=0;
//P6.3输出低电平
P6OUT&=~(BIT3);
np65=P6IN&BIT5;
if(np65==0) keyvalue=1;
np66=(P6IN&BIT6)>>1;
if(np66==0) keyvalue=3;
np67=(P6IN&BIT7)>>2;
if(np67==0) keyvalue=5;
//P6.4输出低电平
P6OUT&=~(BIT4);
np65=P6IN&BIT5;
if(np65==0) keyvalue=2;
np66=(P6IN&BIT6)>>1;
if(np66==0) keyvalue=4;
np67=(P6IN&BIT7)>>2;
if(np67==0) keyvalue=6;
P6OUT=0x00;
//读取各个管脚的状态
np65=P6IN&BIT5;
np66=(P6IN&BIT6)>>1;
np67=(P6IN&BIT7)>>2;
for(;;)
{
if(np65==1&&np66==1&&np67==1)
{
//等待松开按键
break;
}
}
return keyvalue;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -