找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

独立按键程序请教

[复制链接]
admin 发表于 2012-9-2 10:34:58 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
[color=100%]
写了一个独立按键程序,但是用delay函数去抖的时候发现一个很奇怪的现象。程序如下。
#include<reg52.h>

sbit key1=P3^1; 定义三个按键
sbit key2=P3^2;
sbit key3=P3^3;


sbit a=P1^0; a,b,c分别按发光二极管
sbit b=P1^1;
sbit c=P1^2;


void delay1() delay1用于去抖时延时。
{
unsigned char k;
for(k=100;k>0;k--);
}


void delay2( ) delay2用于去抖时延时。
{
unsigned char k;
for(k=0;k<100;k++);

}


void main()
{


if(key1==0)
{
while(!key1); 检手检测 这一个按键没有去抖,有时会出问题。但释放后灯同样会亮。
a=0;
}


if(key2==0) 这一个按键一切正常。释放后灯亮。
{
delay1(); 延时去抖
if(key2==0)
{
while(!key2);
b=0;
}
}


if(key3==0) 这一个按键释放以后,灯只亮一下很快就灭了,并且把P1口都至为1;
{
delay2();
与上一个按键所不同的只是这个延时函数,请问是哪里出了问题呢??
if(key3==0)
{
while(!key3);
c=0;
}
}
}









*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 17:45 , Processed in 0.053460 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表