单片机按键检测程序
发布网友
发布时间:2022-05-12 06:57
我来回答
共1个回答
热心网友
时间:2024-02-19 04:38
P3=0xfe; //P3=0b1111 1110,令P3.0=0,同时令高四位为高电平,作好读端口准备(51IO特点)
temp=P3; //读回P3口的状态
temp=temp&0xf0; //temp&1111 0000,0与任何数结果为0,把temp变量的低四位屏蔽了,高四位因为任何数与1等于它本身,所以把高四位对应的端口状态读进来。
while(temp!=0xf0) //上步处理后,高四为不全为1,说明有按键按下(结合矩阵键盘的电路结构才能理解,这里不方便上图)
{
delay(5);
temp=P3;
temp=temp&0xf0;//这三句跟上面重复,功能是软件消抖
while(temp!=0xf0) //延时一段时间后判断还有按键按下,说明是真有按键按下,进入按键扫描与键值的判断,否则可能是意外抖动引起的,就不进行按键扫描。
{
temp=P3;
switch(temp).....
我想注释完应该能读懂,关键是要理解矩阵键盘的扫描原理。追问矩阵键盘的扫描原理我当然懂
我是问 按键检测扫描的时候 在松手检测那里有个while(按键按下);
不松手cpu就会死等在哪里 不能做其他事情了 影响效率