标题:
单片机独立按键松手检测程序问题
[打印本页]
作者:
0孙悟空0
时间:
2019-6-3 11:39
标题:
单片机独立按键松手检测程序问题
为什么不能取反,怎么改
unsigned char can(void)
{
if(key_s2 == 0) //判断是否按下S2
{
delay(5); //软件消抖
if(key_s2 == 0)//再次判断是否按下S2
{
return 1;//如果在这里用P1=~P1;就可以实现取反
}
while(!key_s2);//松手检测
}
return 0;
}
void main()
{
while(1)
{
switch(can())
{
case 1:P1=~P1;break;//不能实现取反操作
default:break;
}
}
}
作者:
tan61398
时间:
2019-6-3 13:53
unsigned char can(void)不是没带返回值的函数吗
作者:
QEQWE123
时间:
2019-6-3 14:11
while里面改成 KEY==0 试试
作者:
陈润源home
时间:
2019-6-3 17:53
来,试试这个
#include<reg51.h>
#define uchar unsigned char
uchar m;
void key()
{
if(k1==0)
{
delayms(10):
if(k1==0)
{
m++;
}
while(!k1);
}
}
void main()
{
while(1)
{
key();
switch(m)
{
case 1:P1=~P1;break;
default:break;
}
}
}
作者:
许你一世柔情
时间:
2019-6-3 18:36
switch(can()) can()是没有值的 也就是说直接default:break;执行这一行
作者:
尹子归来
时间:
2019-6-3 19:16
按键弹起之后一定会返回0的值,应该把return 0;删了就可以了
作者:
liu_qingwei
时间:
2019-6-4 00:57
返回太快了,手还没离开按键,已经返回许多许多次了,这里的松手检测代码几乎运行不到。
case 1: P1 = !P1; while(1); break;//停在这儿看下结果
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1