标题: 一键多功能按键识别技术 [打印本页]
作者: 小玲子zhl 时间: 2014-8-5 21:39
标题: 一键多功能按键识别技术
有那位大神能帮我解释一下,一键多功能按键识别技术的程序代码吗?程序是我在论坛上下的,程序很简单,但是我感觉我把自己看的闹晕了
#include<AT89X51.H>
unsigned char ID;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void delay02s(void)
{
unsigned char i;
for(i=20;i>0;i--)
{delay10ms();
}
}
void main(void)
{ while(1)
{ if(P3_7==0)
{delay10ms();
if(P3_7==0)
{
ID++;
if(ID==4)
{
ID=0;
}
while(P3_7==0);
}
}
switch(ID)
{ case 0:
P1_0=~P1_0; //p1_0作为输出口,一开始case 为0时,p1_0状态为什么是“1”,当再一次case为“0”时,p1_0状态为什么还是“1” ??????
delay02s();
break;
case 1:
P1_1=~P1_1;
delay02s();
break;
case 2:
P1_2=~P1_2;
delay02s();
break;
case 3:
P1_3=~P1_3;
delay02s();
break;
}
}
}
作者: 周安松 时间: 2014-9-13 08:03
谢谢楼主分享
作者: T29 时间: 2014-9-14 02:10
很好 学习 谢谢
作者: xing3198 时间: 2014-9-18 21:43
很好 学习 谢谢
作者: 陈英杰 时间: 2014-11-20 23:18
你厉害,订
作者: lijinglei234420 时间: 2014-11-23 21:12
给力啊楼主楼主加油
作者: goty2000 时间: 2017-3-29 19:15
楼主说的P1.0 取反以后就是反的啊,按照你的电路,开关灯对应的是高电平还是低电平,是不是你自己想错了
作者: cjc342019965 时间: 2017-3-29 19:57
楼主说的P1.0 取反以后就是反的啊,按照你的电路,开关灯对应的是高电平还是低电平,是不是你自己想错了


作者: cjc342019965 时间: 2017-3-29 20:00
P1_0=~P1_0第一次输出,第二次自动取反输出
作者: 5551 时间: 2017-6-14 20:41
楼主 你的按键可以循环不 从第一状态到最后一个 再到第一个
作者: 348652560 时间: 2017-6-14 22:49
谢谢分享,太好了正好需要
作者: mcuhei 时间: 2017-6-15 07:48
多谢,
作者: xiuyueyuan2013 时间: 2017-6-15 19:21
是不是延时时间太短,端口状态发生多次翻转
作者: duranhuang 时间: 2017-6-15 21:22
每按一次ID自加,case执行的从P10到P13依次翻转,并没有把之前那一位翻转。
作者: xiuyueyuan2013 时间: 2017-6-16 21:53
可能是ID值在执行端口翻转之后没有清零,每一次switch语句都执行一次翻转,实际上端口是在不停的翻转,只是速度太快看起来是一直亮着
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |