蓝桥杯单片机CT107D 按键检测
定义key.h,
#ifndef _key_h
#define _key_h
#include "common.h" //包含通用的头文件
uint8 key(uint8 flag);
#endif
定义相应的.c文件
#include "key.h"
//定义矩阵键盘的行 ;这里只写了独立按键的检测 所以没有定义列
***it r1=P3^0;
***it r2=P3^1;
***it r3=P3^2;
***it r4=P3^3;
uint8 key(uint8 flag) //参数flag为1时,按键被按下时立即返回值,为0时,等待松开按键时返回键值
{
r1=1,r2=1,r3=1,r4=1;
if(r1==0) //检测s7
{
delay_ms(1);
if(r1==0)
{
if(flag)return 7;
while(!r1);
return 7;
}
}
if(r2==0) //检测s6
{
delay_ms(1);
if(r2==0)
{
if(flag)return 6;
while(!r2);
return 6;
}
}
if(r3==0) //检测s5
{
delay_ms(1);
if(r3==0)
{
if(flag)return 5;
while(!r3);
return 5;
}
}
if(r4==0) //检测s4
{
delay_ms(1);
if(r4==0)
{
if(flag)return 4;
while(!r4);
return 4;
}
}
return 0;
}
蓝桥杯单片机CT107D 按键检测
定义key.h,
#ifndef _key_h
#define _key_h
#include "common.h" //包含通用的头文件
uint8 key(uint8 flag);
#endif
定义相应的.c文件
#include "key.h"
//定义矩阵键盘的行 ;这里只写了独立按键的检测 所以没有定义列
***it r1=P3^0;
***it r2=P3^1;
***it r3=P3^2;
***it r4=P3^3;
uint8 key(uint8 flag) //参数flag为1时,按键被按下时立即返回值,为0时,等待松开按键时返回键值
{
r1=1,r2=1,r3=1,r4=1;
if(r1==0) //检测s7
{
delay_ms(1);
if(r1==0)
{
if(flag)return 7;
while(!r1);
return 7;
}
}
if(r2==0) //检测s6
{
delay_ms(1);
if(r2==0)
{
if(flag)return 6;
while(!r2);
return 6;
}
}
if(r3==0) //检测s5
{
delay_ms(1);
if(r3==0)
{
if(flag)return 5;
while(!r3);
return 5;
}
}
if(r4==0) //检测s4
{
delay_ms(1);
if(r4==0)
{
if(flag)return 4;
while(!r4);
return 4;
}
}
return 0;
}
举报