独立按键模块学习:
1.分析独立按键原理图:共阴极
2.赋值 P3=0x0f 或者 P3_1=1, P3_0=1; P3_2=1; P3_3=1
(因为P3寄存器是可位寻址,所以两者方法都可以)
检测原理:赋 IO 口初值高电平,然后再检测该IO口电压是否被拉低,若为拉低则是按下按键,检测时再加个10~20ms的延时防抖。
#include<regx52.h>
#define uint unsigned char
void Delay(unsigned char xms);
void main()
{
unsigned char k;
while(1)
{
P3_1=1;
P3_0=1;
P2=0xff;
if(P3_0==0)
{ Delay(10);
if(P3_0==0)
{ P2=0xaa;
Delay(500);
if(P3_0==1)
{ Delay(10);
P2=0x00;
Delay(500);
}
}
}
if(P3_1==0)
{Delay(10);
if(P3_1==0)
{ P2=0xfe;
Delay(500);
if(P3_1==1)
{ Delay(10);
P2=0xfc;
Delay(500);
}
}
}
}
}
void Delay(unsigned char xms)
{
unsigned char i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
/*
总结,使用独立按键步骤:
1.赋要控制的那个独立按键初值高电位1
2.if(P3_ ==0) ,判断电位是否被拉低,若被拉低则为按下
3.延时10毫秒消抖,再次判断是否为低电位,若为低电位则执行if语句,在判断按键是否被按下都需要消抖
4.在if(P3_ ==0)语句里嵌套一个if(P3_ ==1),判断按键电位是否升高,若为高电位,则证明按键在按下之后松开
*/
}
小白学习笔记!!!