按键检测程序

[复制链接]
1055|2
手机看帖
扫描二维码
随时随地手机跟帖
cooran|  楼主 | 2015-10-28 16:59 | 显示全部楼层 |阅读模式
//功能:当按下S8键时,L1灯发光,松手后,L1灯熄灭。相应程序如例1.
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char

sbit D1=P1^0;
sbit S1=P3^4;

void main()
{
       P3=0xff;
       while(1)
       {
              if(S1==0)
delay(20);//消除按下时的抖动
if(S1==0)
{
                     D1=0;        
while(!S1);//松手检测
              delay(20);//消除松手时的抖动
}
              else
                     D1=1;           
       }
}


例2 按键检测程序
//功能:当每按下S8键时,数码管自动加1,当加到F时又从零开始。
#include<reg52.h>

#define uint unsigned int
#define uchar unsigned char

sbit duan=P2^6;
sbit wei=P2^7;
sbit S1=P3^4;
uchar temp;
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

void delay(uint z )
{
       uint x ,y;
       for(x=z;x>0;x--)
              for(y=110;y>0;y--);
}
void main()
{
       P3=0xff;
       wei=1;
       P0=0xfe;
       wei=0;
       temp=0;
       while(1)
       {
              if(S1==0)
              {
                     delay(20);//消除按下时的抖动
                     if(S1==0)//
                     {
                            temp++;
                            if(temp==16)temp=0;
                     }
                     while(!S1);//松手检测,防止temp一次多加
                     delay(20);//消除松手时的抖动
                     while(!S1);
              }   
           duan=1;
              P0=table[temp];
              duan=0;
       }
}

相关帖子

NE5532| | 2015-10-28 20:47 | 显示全部楼层
没有电路的程序咋看咩?

使用特权

评论回复
dirtwillfly| | 2015-10-29 07:58 | 显示全部楼层
感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:||当你停止尝试时,就是失败的时候.

36

主题

1135

帖子

29

粉丝