金牌会员
 
- 积分
- 1680
- 金钱
- 1680
- 注册时间
- 2012-4-10
- 在线时间
- 105 小时
|
还在用传统的按键扫描吗,你就OUT啦
#include<reg52.h>
sbit KEY=P2^0;
sbit LED1=P1^2;
sbit LED2=P1^3;
#define KEY 0X01
unsigned char TRG=0; /////触发
unsigned char cont=0;/////连续按下
void KEYREAD()
{
unsigned char readdata=P2^0XFF; //按下为0X01, 不放为0X01,放了为0X00
TRG=readdata&(readdata^cont); // 按下为0X01, 不放为0X00,放了为0X00
cont=readdata; //按下为0X01, 不放为0X01,放了为0X00
}
void main()
{
P1=0X00;
P2=0XFF;
while(1)
{
KEYREAD();///////按键扫描
if(TRG&KEY) //////触发
{
LED1=1;
}
if(cont&KEY) ///////长按
{
LED2=1;
}
}
}
|
|